diff --git a/base-okl4/patches/README b/base-okl4/patches/README index 10540b368..a29c77328 100644 --- a/base-okl4/patches/README +++ b/base-okl4/patches/README @@ -55,6 +55,11 @@ This directory contains patches for the OKL4 kernel version 2.1.1-patch.9. GDT and TSS. As a result, VirtualBox stops with a 'GURU_MEDITATION' error. +:'invalid_opcode_exception_ipc.patch': + + When an invalid opcode gets executed, OKL4 switches to the kernel debugger + console instead of sending an exception IPC to the userland. This patch + fixes the problem by removing the code that invokes the debugger console. Applying the patches -------------------- diff --git a/base-okl4/patches/invalid_opcode_exception_ipc.patch b/base-okl4/patches/invalid_opcode_exception_ipc.patch new file mode 100644 index 000000000..433640a94 --- /dev/null +++ b/base-okl4/patches/invalid_opcode_exception_ipc.patch @@ -0,0 +1,23 @@ +- send 'invalid opcode' exception IPC to userland instead of switching to the kernel debugger console + +diff --git a/arch/ia32/pistachio/src/exception.cc b/arch/ia32/pistachio/src/exception.cc +--- a/arch/ia32/pistachio/src/exception.cc ++++ b/arch/ia32/pistachio/src/exception.cc +@@ -177,17 +177,6 @@ + printf ("invalid opcode by %t at IP %p\n", current, addr), + "ia32_ud at %x (current=%x)", (u32_t)addr, (u32_t)current); + +- /* instruction emulation, only in user area! */ +- if (space->is_user_area(addr)) { +- switch(space->get_from_user(addr)) { +- case 0xf0: /* lock prefix */ +- /* fall trough */ +- default: +- printf("invalid opcode at IP %p\n", addr); +- enter_kdebug("invalid opcode"); +- } +- } +- + continuation_t cont = ASM_CONTINUATION; + send_exception_ipc(frame, IA32_EXC_INVALIDOPCODE, cont); + }