.586p\r
.model flat,C\r
.code\r
- \r
+\r
;------------------------------------------------------------------------------\r
; VOID\r
; EFIAPI\r
; UINT32 TemporaryMemoryBase,\r
; UINT32 PermenentMemoryBase\r
; );\r
-;------------------------------------------------------------------------------ \r
+;------------------------------------------------------------------------------\r
SecSwitchStack PROC\r
;\r
; Save three register: eax, ebx, ecx\r
push ebx\r
push ecx\r
push edx\r
- \r
+\r
;\r
; !!CAUTION!! this function address's is pushed into stack after\r
; migration of whole temporary memory, so need save it to permenent\r
; memory at first!\r
;\r
- \r
+\r
mov ebx, [esp + 20] ; Save the first parameter\r
mov ecx, [esp + 24] ; Save the second parameter\r
- \r
+\r
;\r
; Save this function's return address into permenent memory at first.\r
; Then, Fixup the esp point to permenent memory\r
sub eax, ebx\r
add eax, ecx\r
mov edx, dword ptr [esp] ; copy pushed register's value to permenent memory\r
- mov dword ptr [eax], edx \r
+ mov dword ptr [eax], edx\r
mov edx, dword ptr [esp + 4]\r
- mov dword ptr [eax + 4], edx \r
+ mov dword ptr [eax + 4], edx\r
mov edx, dword ptr [esp + 8]\r
- mov dword ptr [eax + 8], edx \r
+ mov dword ptr [eax + 8], edx\r
mov edx, dword ptr [esp + 12]\r
- mov dword ptr [eax + 12], edx \r
+ mov dword ptr [eax + 12], edx\r
mov edx, dword ptr [esp + 16] ; Update this function's return address into permenent memory\r
- mov dword ptr [eax + 16], edx \r
+ mov dword ptr [eax + 16], edx\r
mov esp, eax ; From now, esp is pointed to permenent memory\r
- \r
+\r
;\r
; Fixup the ebp point to permenent memory\r
;\r
sub eax, ebx\r
add eax, ecx\r
mov ebp, eax ; From now, ebp is pointed to permenent memory\r
- \r
+\r
;\r
; Fixup callee's ebp point for PeiDispatch\r
;\r
sub eax, ebx\r
add eax, ecx\r
mov dword ptr [ebp], eax ; From now, Temporary's PPI caller's stack is in permenent memory\r
- \r
+\r
pop edx\r
pop ecx\r
pop ebx\r