diff --git a/src/coreclr/vm/i386/gmsx86.cpp b/src/coreclr/vm/i386/gmsx86.cpp index de27dca090e4fd..d1e265f6698351 100644 --- a/src/coreclr/vm/i386/gmsx86.cpp +++ b/src/coreclr/vm/i386/gmsx86.cpp @@ -827,6 +827,8 @@ void LazyMachState::unwindLazyState(LazyMachState* baseState, case 0x89: // MOV r/m, reg if (ip[1] == 0xEC) // MOV ESP, EBP goto mov_esp_ebp; + if (ip[1] == 0xDC) // MOV ESP, EBX + goto mov_esp_ebx; // FALL THROUGH case 0x18: // SBB r/m8, r8 @@ -932,6 +934,13 @@ void LazyMachState::unwindLazyState(LazyMachState* baseState, break; } + if (ip[1] == 0xE3) { // MOV ESP, EBX + mov_esp_ebx: + ESP = PTR_TADDR(lazyState->_ebx); + ip += 2; + break; + } + if ((ip[1] & 0xc7) == 0x4 && ip[2] == 0x24) // move reg, [esp] { if ( ip[1] == 0x1C ) { // MOV EBX, [ESP]