#include #include #include #include #include #include #include #include #include lock_t debug_lock; void debug_init() { spin_unlock(&debug_lock); vga_init(); serial_init(PORT_COM1); } uint64_t num2str(uint64_t num, uint32_t base, char *buf) { // Convert a number to string if(num == 0) { buf[0] = '0'; buf[1] = '\0'; return 0; } uint32_t i=0, j=0; char chars[] = "0123456789ABCDEF"; // Build the string starting with the least significant digit while(num > 0) { buf[i++] = chars[num%base]; num /= base; } // Invert the string to get digits in right order i--; j=0; while(jint_no, r->err_code); debug("RAX:%x RBX:%x RCX:%x RDX:%x\n", r->rax, r->rbx, r->rcx, r->rdx); debug("RSI:%x RDI:%x RBP:%x RSP:%x\n", r->rsi, r->rdi, r->rbp, r->rsp); debug("R8:%x R9:%x R10:%x R11:%x\n", r->r8, r->r9, r->r10, r->r11); debug("R12:%x R13:%x R14:%x R15:%x\n", r->r12, r->r13, r->r14, r->r15); debug("RIP:%x RFL:%x\n", r->rip, r->rflags); debug("CS:%x SS:%x\n", r->cs, r->ss); debug("CR0:%x CR2:%x CR3:%x CR4:%x\n", read_cr0(), read_cr2(), read_cr3(), read_cr4()); }