Previous 199869 Revisions Next

r32572 Tuesday 7th October, 2014 at 03:35:58 UTC by Carl
i386: expand down ring 0 stack (nw)
[src/emu/cpu/i386]i386.c

trunk/src/emu/cpu/i386/i386.c
r32571r32572
901901            newESP = i386_get_stack_ptr(DPL);
902902            if(type & 0x08) // 32-bit gate
903903            {
904               if(newESP < (V8086_MODE?36:20))
904               if(((newESP < (V8086_MODE?36:20)) && !(stack.flags & 0x4)) || ((~stack.limit < (~(newESP - 1) + (V8086_MODE?36:20))) && (stack.flags & 0x4)))
905905               {
906906                  logerror("IRQ: New stack has no space for return addresses.\n");
907907                  FAULT_EXP(FAULT_SS,0)
r32571r32572
910910            else // 16-bit gate
911911            {
912912               newESP &= 0xffff;
913               if(newESP < (V8086_MODE?18:10))
913               if(((newESP < (V8086_MODE?18:10)) && !(stack.flags & 0x4)) || ((~stack.limit < (~(newESP - 1) + (V8086_MODE?18:10))) && (stack.flags & 0x4)))
914914               {
915915                  logerror("IRQ: New stack has no space for return addresses.\n");
916916                  FAULT_EXP(FAULT_SS,0)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team