]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmiEntry.asm
Move SmmDebug feature from ASM to C.
[mirror_edk2.git] / UefiCpuPkg / PiSmmCpuDxeSmm / Ia32 / SmiEntry.asm
index b628fe8bd88c233873815f9a68bd55baba085bd9..8a12927300ca21e57cff0b08bca114b96c429fa5 100644 (file)
@@ -34,14 +34,15 @@ PROTECT_MODE_CS EQU   08h
 PROTECT_MODE_DS EQU   20h\r
 TSS_SEGMENT     EQU   40h\r
 \r
-SmiRendezvous   PROTO   C\r
+SmiRendezvous      PROTO   C\r
+CpuSmmDebugEntry   PROTO   C\r
+CpuSmmDebugExit    PROTO   C\r
 \r
 EXTERNDEF   gcSmiHandlerTemplate:BYTE\r
 EXTERNDEF   gcSmiHandlerSize:WORD\r
 EXTERNDEF   gSmiCr3:DWORD\r
 EXTERNDEF   gSmiStack:DWORD\r
 EXTERNDEF   gSmbase:DWORD\r
-EXTERNDEF   FeaturePcdGet (PcdCpuSmmDebug):BYTE\r
 EXTERNDEF   FeaturePcdGet (PcdCpuSmmStackGuard):BYTE\r
 EXTERNDEF   gSmiHandlerIdtr:FWORD\r
 \r
@@ -151,40 +152,23 @@ gSmiCr3     DD      ?
 ;   jmp     _SmiHandler                 ; instruction is not needed\r
 \r
 _SmiHandler PROC\r
-    cmp     FeaturePcdGet (PcdCpuSmmDebug), 0\r
-    jz      @3\r
-    call    @1\r
-@1:\r
-    pop     ebp\r
-    mov     eax, 80000001h\r
-    cpuid\r
-    bt      edx, 29                     ; check cpuid to identify X64 or IA32\r
-    lea     edi, [ebp - (@1 - _SmiEntryPoint) + 7fc8h]\r
-    lea     esi, [edi + 4]\r
-    jnc     @2\r
-    add     esi, 4\r
-@2:\r
-    mov     ecx, [esi]\r
-    mov     edx, [edi]\r
-@5:\r
-    mov     dr6, ecx\r
-    mov     dr7, edx                    ; restore DR6 & DR7 before running C code\r
-@3:\r
-    mov     ecx, [esp]                  ; CPU Index\r
-\r
-    push    ecx\r
-    mov     eax, SmiRendezvous\r
+    mov     ebx, [esp]                  ; CPU Index\r
+\r
+    push    ebx\r
+    mov     eax, CpuSmmDebugEntry\r
     call    eax\r
     pop     ecx\r
 \r
-    cmp     FeaturePcdGet (PcdCpuSmmDebug), 0\r
-    jz      @4\r
+    push    ebx\r
+    mov     eax, SmiRendezvous\r
+    call    eax\r
+    pop     ecx\r
+    \r
+    push    ebx\r
+    mov     eax, CpuSmmDebugExit\r
+    call    eax\r
+    pop     ecx\r
 \r
-    mov     ecx, dr6\r
-    mov     edx, dr7\r
-    mov     [esi], ecx\r
-    mov     [edi], edx\r
-@4:\r
     rsm\r
 _SmiHandler ENDP\r
 \r