When compiling a Linux 2.6 kernel using gcc 3.3.3, gcc was able to inline the function do_test_wp_bit(). This causes i386 kernels to panic on boot, since the exception handler doesn't work properly. The fix is straightforward - don't ever allow this function to be inlined. Here's a disassembly to confirm the bad inline: c02aecf1 : c02aecf1: 55 push %ebp c02aecf2: 89 e5 mov %esp,%ebp c02aecf4: 83 ec 0c sub $0xc,%esp c02aecf7: c7 04 24 0c a0 25 c0 movl $0xc025a00c,(%esp) c02aecfe: e8 63 73 e6 ff call c0116066 c02aed03: c7 44 24 08 25 00 00 movl $0x25,0x8(%esp) c02aed0a: 00 c02aed0b: c7 44 24 04 00 10 10 movl $0x101000,0x4(%esp) c02aed12: 00 c02aed13: c7 04 24 12 00 00 00 movl $0x12,(%esp) c02aed1a: e8 d5 11 e6 ff call c010fef4 <__set_fixmap> c02aed1f: b8 01 00 00 00 mov $0x1,%eax c02aed24: 8a 15 00 d0 fe ff mov 0xfffed000,%dl c02aed2a: 88 15 00 d0 fe ff mov %dl,0xfffed000 Cheers, Zachary Amsden (zach@vmware.com)