summaryrefslogtreecommitdiff
path: root/kernel/src/lib.rs
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2019-11-09 03:14:44 +0100
committerDennis Kobert <dennis@kobert.dev>2019-11-09 03:14:44 +0100
commit3c2d0f630082c81e7d79e792310ae70629cea052 (patch)
treedc281e21fd6e2a414eaf58423df47ef958491e34 /kernel/src/lib.rs
parent1e0422eb84988464836a8f17fd7420b9f3cf277b (diff)
parentd7ca45f9986f1aef6cee256a581a38f824e21585 (diff)
Merge branch 'exceptions' of https://git.kobert.dev/uff-os into exceptions
Diffstat (limited to 'kernel/src/lib.rs')
-rw-r--r--kernel/src/lib.rs33
1 files changed, 3 insertions, 30 deletions
diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs
index a81520b..59888d1 100644
--- a/kernel/src/lib.rs
+++ b/kernel/src/lib.rs
@@ -25,11 +25,8 @@ pub extern "C" fn _start() -> ! {
test_main();
qemu::exit_qemu(qemu::QemuExitCode::Success);
}
- x86_64::instructions::interrupts::int3();
- let stdout = OStream::new();
- stdout.clear();
- panic!("panic! at the disco");
+ x86_64::instructions::interrupts::int3();
/// TODO: write test
///fn _loop(i: u64) -> u64 {
@@ -50,32 +47,8 @@ pub extern "C" fn _start() -> ! {
#[panic_handler]
#[no_mangle]
pub extern "C" fn panic_handler(info: &core::panic::PanicInfo) -> ! {
- let mut stderr = OStream::new();
- stderr.set_state(vga_text::CharState::from_colors(
- vga_text::Color::LightRed,
- vga_text::Color::Red,
- ));
- stderr.clear();
- stderr.print(b"uff-os");
- stderr.set_row(10);
- stderr.set_state(vga_text::CharState::from_colors(
- vga_text::Color::White,
- vga_text::Color::Red,
- ));
- stderr.print_centered(b"<kernel panic>");
- stderr.set_row(14);
- stderr.set_state(vga_text::CharState::from_colors(
- vga_text::Color::Cyan,
- vga_text::Color::Red,
- ));
- stderr.set_centered(true);
- write!(
- &mut stderr,
- "{:?}",
- info.message()
- .unwrap_or(&format_args!("no panic information obtainable"))
- );
- stderr.set_centered(false);
+ io::panic_screen::show(info.message());
+
if cfg!(test) {
write!(serial::SerialStream::new(), "Testing failed\n").unwrap();
qemu::exit_qemu(qemu::QemuExitCode::Failed);