mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
Give kassert its own vector instead of DBZ
This commit is contained in:
@@ -7,7 +7,7 @@ __kernel_assert(const char *file, unsigned line, const char *message)
|
|||||||
console *cons = console::get();
|
console *cons = console::get();
|
||||||
if (cons) {
|
if (cons) {
|
||||||
cons->set_color(9 , 0);
|
cons->set_color(9 , 0);
|
||||||
cons->puts("\n\n ERROR: ");
|
cons->puts("\n\n ERROR: ");
|
||||||
cons->puts(file);
|
cons->puts(file);
|
||||||
cons->puts(":");
|
cons->puts(":");
|
||||||
cons->put_dec(line);
|
cons->put_dec(line);
|
||||||
@@ -15,15 +15,6 @@ __kernel_assert(const char *file, unsigned line, const char *message)
|
|||||||
cons->puts(message);
|
cons->puts(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
__asm__ __volatile__(
|
__asm__ ( "int $0e7h" );
|
||||||
"movq %0, %%r8;"
|
while (1) __asm__ ("hlt");
|
||||||
"movq %1, %%r9;"
|
|
||||||
"movq %2, %%r10;"
|
|
||||||
"movq $0, %%rdx;"
|
|
||||||
"divq %%rdx;"
|
|
||||||
: // no outputs
|
|
||||||
: "r"((uint64_t)line), "r"(file), "r"(message)
|
|
||||||
: "rax", "rdx", "r8", "r9", "r10");
|
|
||||||
|
|
||||||
while (1);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,8 @@ IRQ (0x7d, 0x5d, irq5D)
|
|||||||
IRQ (0x7e, 0x5e, irq5E)
|
IRQ (0x7e, 0x5e, irq5E)
|
||||||
IRQ (0x7f, 0x5f, irq5F)
|
IRQ (0x7f, 0x5f, irq5F)
|
||||||
|
|
||||||
|
ISR (0xe7, isrAssert)
|
||||||
|
|
||||||
ISR (0xec, isrTimer)
|
ISR (0xec, isrTimer)
|
||||||
ISR (0xed, isrLINT0)
|
ISR (0xed, isrLINT0)
|
||||||
ISR (0xee, isrLINT1)
|
ISR (0xee, isrLINT1)
|
||||||
|
|||||||
@@ -192,7 +192,6 @@ interrupts_init()
|
|||||||
enable_serial_interrupts();
|
enable_serial_interrupts();
|
||||||
|
|
||||||
log::info(logs::boot, "Interrupts enabled.");
|
log::info(logs::boot, "Interrupts enabled.");
|
||||||
gdt_dump(g_gdtr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct registers
|
struct registers
|
||||||
@@ -339,6 +338,28 @@ isr_handler(registers regs)
|
|||||||
while(1) asm("hlt");
|
while(1) asm("hlt");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case isr::isrAssert: {
|
||||||
|
cons->set_color();
|
||||||
|
|
||||||
|
cons->puts("\n");
|
||||||
|
print_reg("rax", regs.rax);
|
||||||
|
print_reg("rbx", regs.rbx);
|
||||||
|
print_reg("rcx", regs.rcx);
|
||||||
|
print_reg("rdx", regs.rdx);
|
||||||
|
print_reg("rdi", regs.rdi);
|
||||||
|
print_reg("rsi", regs.rsi);
|
||||||
|
|
||||||
|
cons->puts("\n");
|
||||||
|
print_reg("rbp", regs.rbp);
|
||||||
|
print_reg("rsp", regs.rsp);
|
||||||
|
|
||||||
|
cons->puts("\n");
|
||||||
|
print_reg("rip", regs.rip);
|
||||||
|
print_stacktrace(2);
|
||||||
|
}
|
||||||
|
while(1) asm("hlt");
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
cons->set_color(9);
|
cons->set_color(9);
|
||||||
cons->puts("\nReceived ISR interrupt:\n");
|
cons->puts("\nReceived ISR interrupt:\n");
|
||||||
|
|||||||
@@ -98,7 +98,8 @@ kernel_main(popcorn_data *header)
|
|||||||
uint8_t buf[512];
|
uint8_t buf[512];
|
||||||
kutil::memset(buf, 0, 512);
|
kutil::memset(buf, 0, 512);
|
||||||
|
|
||||||
disk->read(0x200, sizeof(buf), buf);
|
kassert(disk->read(0x200, sizeof(buf), buf),
|
||||||
|
"Disk read returned 0");
|
||||||
|
|
||||||
console *cons = console::get();
|
console *cons = console::get();
|
||||||
uint8_t *p = &buf[0];
|
uint8_t *p = &buf[0];
|
||||||
|
|||||||
Reference in New Issue
Block a user