summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseLib/X64/DisablePaging64.S
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/BaseLib/X64/DisablePaging64.S')
-rw-r--r--MdePkg/Library/BaseLib/X64/DisablePaging64.S34
1 files changed, 17 insertions, 17 deletions
diff --git a/MdePkg/Library/BaseLib/X64/DisablePaging64.S b/MdePkg/Library/BaseLib/X64/DisablePaging64.S
index 7a543febab..e4f77970ed 100644
--- a/MdePkg/Library/BaseLib/X64/DisablePaging64.S
+++ b/MdePkg/Library/BaseLib/X64/DisablePaging64.S
@@ -27,39 +27,39 @@
# VOID
# EFIAPI
# InternalX86DisablePaging64 (
-# IN UINT16 Cs, %rdi
-# IN UINT64 EntryPoint, %rsi
-# IN UINT64 Context1, OPTIONAL %rdx
-# IN UINT32 Context2, OPTIONAL %rcx
-# IN UINT64 NewStack %r8
+# IN UINT16 Cs,
+# IN UINT64 EntryPoint,
+# IN UINT64 Context1, OPTIONAL
+# IN UINT32 Context2, OPTIONAL
+# IN UINT64 NewStack
# );
#------------------------------------------------------------------------------
.global ASM_PFX(InternalX86DisablePaging64)
ASM_PFX(InternalX86DisablePaging64):
cli
- shl $0x20,%rcx
+ shl $0x20,%rcx # rcx[32..47] <- Cs
lea L1, %eax
mov %r8d, %esi
- or %rax, %rcx
+ or %rax, %rcx # rcx[0..47] <- Cs:@F
mov %r9d, %edi
- mov 0x28(%rsp), %eax
+ mov 0x28(%rsp), %eax # eax <- New Stack
push %rcx
- ret
+ ret # switch to compatibility mode
L1:
- mov %eax,%esp
+ mov %eax,%esp # set up new stack
mov %cr0,%rax
btr $0x1f,%eax
- mov %rax,%cr0
+ mov %rax,%cr0 # disable paging
mov $0xc0000080,%ecx
rdmsr
- and $0xfe,%ah
+ and $0xfe,%ah # clear LME
wrmsr
mov %cr4,%rax
- and $0xdf,%al
+ and $0xdf,%al # clear PAE
mov %rax,%cr4
- push %rdi
- push %rsi
- callq *%rdx
- jmp .
+ push %rdi # push Context2
+ push %rsi # push Context1
+ callq *%rdx # transfer control to EntryPoint
+ jmp . # no one should get here