Hello, On Tue, Jun 8, 2010 at 8:08 AM, Samuel Thibault <samuel.thiba...@gnu.org> wrote: >> (null):~# addr2line -e /boot/gnumach-nodrv 0x13f163 >> /root/gnumach-build1/../gnumach/i386/i386at/interrupt.S:40 >> It's exactly where CPU should jump to. So it seems the stack is correct. > > Ok. So probably the protection is not for some reason. Could you try to > put a nop right after sti, to check whether it's when reading the stack > or when reading the instruction? After I insert nop right behind sti, the CPU stops at
Kernel General protection trap, eip 0x1076e5 kernel: General protection (13), code=25a Stopped at 0x1076e5: movl %edx,%eax See spl(). spl: movl EXT(pic_mask)(,%edx,4),%eax /* get PIC mask */ cli /* disable interrupts */ xchgl EXT(curr_ipl),%edx /* set ipl */ SETMASK() /* program PICs with new mask */ sti /* enable interrupts */ nop movl %edx,%eax /* return previous ipl */ ret So which instruction triggers the trap? nop or movl? Zheng Da