mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-07 19:34:56 +00:00
Send 'invalid opcode' exception IPC on OKL4
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. This patch fixes #95.
This commit is contained in:
parent
0cf5df378a
commit
4e43cdd041
@ -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
|
||||
--------------------
|
||||
|
23
base-okl4/patches/invalid_opcode_exception_ipc.patch
Normal file
23
base-okl4/patches/invalid_opcode_exception_ipc.patch
Normal file
@ -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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user