forked from Bananymous/banan-os
				
			Kernel: Print more detailed output on ISR
This commit is contained in:
		
							parent
							
								
									55d30a7cc3
								
							
						
					
					
						commit
						b4e4f7a6cc
					
				|  | @ -148,6 +148,31 @@ namespace IDT | |||
| 		pid_t tid = Kernel::Scheduler::current_tid(); | ||||
| 		pid_t pid = tid ? Kernel::Process::current().pid() : 0; | ||||
| 
 | ||||
| 		if (tid) | ||||
| 		{ | ||||
| 			auto start = Kernel::Thread::current().stack_base(); | ||||
| 			auto end = start + Kernel::Thread::current().stack_size(); | ||||
| 			if (interrupt_stack.rsp < start) | ||||
| 				derrorln("Stack overflow"); | ||||
| 			if (interrupt_stack.rsp >= end) | ||||
| 				derrorln("Stack underflow"); | ||||
| 		} | ||||
| 
 | ||||
| 		if (Kernel::PageTable::current().get_page_flags(interrupt_stack.rip & PAGE_ADDR_MASK) & Kernel::PageTable::Flags::Present) | ||||
| 		{ | ||||
| 			uint8_t* machine_code = (uint8_t*)interrupt_stack.rip; | ||||
| 			dwarnln("While executing: {2H}{2H}{2H}{2H}{2H}{2H}{2H}{2H}", | ||||
| 				machine_code[0], | ||||
| 				machine_code[1], | ||||
| 				machine_code[2], | ||||
| 				machine_code[3], | ||||
| 				machine_code[4], | ||||
| 				machine_code[5], | ||||
| 				machine_code[6], | ||||
| 				machine_code[7] | ||||
| 			); | ||||
| 		} | ||||
| 
 | ||||
| 		dwarnln( | ||||
| 			"{} (error code: 0x{16H}), pid {}, tid {}\r\n" | ||||
| 			"Register dump\r\n" | ||||
|  | @ -161,6 +186,8 @@ namespace IDT | |||
| 			regs->rip, regs->rflags, | ||||
| 			regs->cr0, regs->cr2, regs->cr3, regs->cr4 | ||||
| 		); | ||||
| 		if (isr == ISR::PageFault) | ||||
| 			Kernel::PageTable::current().debug_dump(); | ||||
| 		Debug::dump_stack_trace(); | ||||
| 
 | ||||
| 		if (tid) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue