\r
\r
\r
-.global _ARShiftU64\r
-_ARShiftU64: \r
+.global _InternalMathARShiftU64\r
+_InternalMathARShiftU64: \r
movb 12(%esp),%cl\r
movl 8(%esp),%eax\r
cltd\r
testb $32,%cl\r
-# MISMATCH: " cmovz edx, eax"\r
cmovz %eax, %edx\r
-# MISMATCH: " cmovz eax, [esp + 4]"\r
cmovz 4(%esp), %eax\r
shrdl %cl,%edx,%eax\r
sar %cl,%edx\r
#\r
# Abstract:\r
#\r
-# AsmDisablePaging32 function\r
+# InternalX86DisablePaging32 function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmDisablePaging32 (\r
+# InternalX86DisablePaging32 (\r
# IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
# IN VOID *Context1, OPTIONAL\r
# IN VOID *Context2, OPTIONAL\r
# IN VOID *NewStack\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmDisablePaging32\r
-_AsmDisablePaging32: \r
+.global _InternalX86DisablePaging32\r
+_InternalX86DisablePaging32: \r
movl 4(%esp),%ebx\r
movl 8(%esp),%ecx\r
movl 12(%esp),%edx\r
jmp _InternalMathDivRemU64x32\r
\r
\r
-.global DivRemU64x64\r
-DivRemU64x64:\r
-# MISMATCH: "DivRemU64x64: USES ebx esi edi"\r
+.global _DivRemU64x64\r
+_DivRemU64x64:\r
push %ebx \r
push %esi \r
push %edi \r
#\r
# Abstract:\r
#\r
-# AsmEnablePaging32 function\r
+# InternalX86EnablePaging32 function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmEnablePaging32 (\r
+# InternalX86EnablePaging32 (\r
# IN SWITCH_STACK_ENTRY_POINT EntryPoint,\r
# IN VOID *Context1, OPTIONAL\r
# IN VOID *Context2, OPTIONAL\r
# IN VOID *NewStack\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmEnablePaging32\r
-_AsmEnablePaging32: \r
+.global _InternalX86EnablePaging32\r
+_InternalX86EnablePaging32: \r
movl 4(%esp),%ebx\r
movl 8(%esp),%ecx\r
movl 12(%esp),%edx\r
#\r
# Abstract:\r
#\r
-# AsmEnablePaging64 function\r
+# InternalX86EnablePaging64 function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmEnablePaging64 (\r
+# InternalX86EnablePaging64 (\r
# IN UINT16 CodeSelector,\r
# IN UINT64 EntryPoint,\r
# IN UINT64 Context1, OPTIONAL\r
# IN UINT64 NewStack\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmEnablePaging64\r
-_AsmEnablePaging64:\r
+.global _InternalX86EnablePaging64\r
+_InternalX86EnablePaging64:\r
cli\r
- movl $$LongStart, (%esp)\r
+ movl $LongStart, (%esp)\r
movl %cr4, %eax\r
orb $0x20, %al\r
movl %eax, %cr4 # enable PAE\r
#\r
# Abstract:\r
#\r
-# AsmFxRestore function\r
+# InternalX86FxRestore function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmFxRestore (\r
+# InternalX86FxRestore (\r
# IN CONST IA32_FX_BUFFER *Buffer\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmFxRestore\r
-_AsmFxRestore: \r
+.global _InternalX86FxRestore\r
+_InternalX86FxRestore: \r
movl 4(%esp),%eax\r
fxrstor (%eax)\r
ret\r
#\r
# Abstract:\r
#\r
-# AsmFxSave function\r
+# InternalX86FxSave function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmFxSave (\r
+# InternalX86FxSave (\r
# OUT IA32_FX_BUFFER *Buffer\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmFxSave\r
-_AsmFxSave: \r
+.global _InternalX86FxSave\r
+_InternalX86FxSave: \r
movl 4(%esp),%eax\r
fxsave (%eax)\r
ret\r
#\r
# Abstract:\r
#\r
-# InterlockedCompareExchange32 function\r
+# InternalSyncCompareExchange32 function\r
#\r
# Notes:\r
#\r
\r
\r
\r
-#------------------------------------------------------------------------------\r
-# VOID *\r
-# EFIAPI\r
-# InterlockedCompareExchangePointer (\r
-# IN VOID **Value,\r
-# IN VOID *CompareValue,\r
-# IN VOID *ExchangeValue\r
-# );\r
-#------------------------------------------------------------------------------\r
-.global _InterlockedCompareExchangePointer\r
-_InterlockedCompareExchangePointer: \r
- #\r
- # InterlockedCompareExchangePointer() shares the same code as\r
- # InterlockedCompareExchange32() on IA32 and thus no code inside this\r
- # function\r
- #\r
-\r
-\r
#------------------------------------------------------------------------------\r
# UINT32\r
# EFIAPI\r
-# InterlockedCompareExchange32 (\r
+# InternalSyncCompareExchange32 (\r
# IN UINT32 *Value,\r
# IN UINT32 CompareValue,\r
# IN UINT32 ExchangeValue\r
# );\r
#------------------------------------------------------------------------------\r
-.global _InterlockedCompareExchange32\r
-_InterlockedCompareExchange32: \r
+.global _InternalSyncCompareExchange32\r
+_InternalSyncCompareExchange32: \r
movl 4(%esp),%ecx\r
movl 8(%esp),%eax\r
movl 12(%esp),%edx\r
#\r
# Abstract:\r
#\r
-# InterlockedCompareExchange64 function\r
+# InternalSyncCompareExchange64 function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# UINT64\r
# EFIAPI\r
-# InterlockedCompareExchange64 (\r
+# InternalSyncCompareExchange64 (\r
# IN UINT64 *Value,\r
# IN UINT64 CompareValue,\r
# IN UINT64 ExchangeValue\r
# );\r
#------------------------------------------------------------------------------\r
-.global _InterlockedCompareExchange64\r
+.global _InternalSyncCompareExchange64\r
+_InternalSyncCompareExchange64:\r
push %esi\r
push %ebx\r
movl 12(%esp),%esi\r
#\r
# Abstract:\r
#\r
-# InterlockedDecrement function\r
+# InternalSyncDecrement function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# UINT32\r
# EFIAPI\r
-# InterlockedDecrement (\r
+# InternalSyncDecrement (\r
# IN UINT32 *Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global _InterlockedDecrement\r
-_InterlockedDecrement: \r
+.global _InternalSyncDecrement\r
+_InternalSyncDecrement: \r
movl 4(%esp),%eax\r
lock \r
decl (%eax)\r
#\r
# Abstract:\r
#\r
-# InterlockedIncrement function\r
+# InternalSyncIncrement function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# UINT32\r
# EFIAPI\r
-# InterlockedIncrement (\r
+# InternalSyncIncrement (\r
# IN UINT32 *Value\r
# );\r
#------------------------------------------------------------------------------\r
-.global _InterlockedIncrement\r
-_InterlockedIncrement: \r
+.global _InternalSyncIncrement\r
+_InternalSyncIncrement: \r
movl 4(%esp),%eax\r
lock \r
incl (%eax)\r
\r
\r
\r
-.global _LRotU64\r
+.global _InternalMathLRotU64\r
+_InternalMathLRotU64:\r
push %ebx\r
movb 16(%esp),%cl\r
movl 12(%esp),%edx\r
\r
\r
\r
-.global _MultS64x64\r
-_MultS64x64: \r
- #\r
- # MultS64x32 shares the same implementation with _MultU64x32, and thus no\r
- # code inside this function.\r
- #\r
-\r
-\r
-.global _MultU64x64\r
+.global _InternalMathMultU64x64\r
+_InternalMathMultU64x64: \r
push %ebx\r
movl 8(%esp),%ebx\r
movl 16(%esp),%edx\r
\r
\r
\r
-.global _RRotU64\r
+.global _InternalMathRRotU64\r
+_InternalMathRRotU64:\r
push %ebx\r
movb 16(%esp),%cl\r
movl 8(%esp),%eax\r
#\r
# Abstract:\r
#\r
-# AsmReadGdtr function\r
+# InternalX86ReadGdtr function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmReadGdtr (\r
+# InternalX86ReadGdtr (\r
# OUT IA32_DESCRIPTOR *Gdtr\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmReadGdtr\r
-_AsmReadGdtr: \r
+.global _InternalX86ReadGdtr\r
+_InternalX86ReadGdtr: \r
movl 4(%esp),%eax\r
sgdt (%eax)\r
ret\r
#\r
# Abstract:\r
#\r
-# AsmReadIdtr function\r
+# InternalX86ReadIdtr function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmReadIdtr (\r
+# InternalX86ReadIdtr (\r
# OUT IA32_DESCRIPTOR *Idtr\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmReadIdtr\r
-_AsmReadIdtr: \r
+.global _InternalX86ReadIdtr\r
+_InternalX86ReadIdtr: \r
movl 4(%esp),%eax\r
sidt (%eax)\r
ret\r
#\r
#------------------------------------------------------------------------------\r
\r
+.global _m16Start, _m16Size, _mThunk16Attr, _m16GdtBase, _m16Gdt, _m16GdtrBase, _mTransition\r
+ ##########\r
+ # FIXME! #\r
+ ##########\r
+# The following data are INVALID!!\r
+# They just follow GAS syntax.\r
+_m16Start: .byte 0x00\r
+_m16Size: .word 0x00\r
+_mThunk16Attr: .word 0x00\r
+_m16Gdt: .word 0x00\r
+_m16GdtrBase: .word 0x00\r
+_mTransition: .word 0x00\r
\r
-\r
+.global _InternalAsmThunk16\r
+_InternalAsmThunk16:\r
\r
##########\r
# FIXME! #\r
##########\r
+ # This function won't work for now.\r
+ # it will directly enter dead loop.\r
+ jmp .\r
+
\ No newline at end of file
#\r
# Abstract:\r
#\r
-# AsmWriteGdtr function\r
+# InternalX86WriteGdtr function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmWriteGdtr (\r
+# InternalX86WriteGdtr (\r
# OUT IA32_DESCRIPTOR *Gdtr\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmWriteGdtr\r
-_AsmWriteGdtr: \r
+.global _InternalX86WriteGdtr\r
+_InternalX86WriteGdtr: \r
movl 4(%esp),%eax\r
lgdt (%eax)\r
ret\r
#\r
# Abstract:\r
#\r
-# AsmWriteIdtr function\r
+# InternalX86WriteIdtr function\r
#\r
# Notes:\r
#\r
#------------------------------------------------------------------------------\r
# VOID\r
# EFIAPI\r
-# AsmWriteIdtr (\r
+# InternalX86WriteIdtr (\r
# OUT IA32_DESCRIPTOR *Idtr\r
# );\r
#------------------------------------------------------------------------------\r
-.global _AsmWriteIdtr\r
-_AsmWriteIdtr: \r
+.global _InternalX86WriteIdtr\r
+_InternalX86WriteIdtr: \r
movl 4(%esp),%eax\r
lidt (%eax)\r
ret\r
mfence
@SetDwords:
testb $1, %dl
- jz @F
+ jz L1
movd %mm0, (%edi)
L1:
pop %edi