X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_lowlevel.asm;h=9e60835586764703b5bde464896f160386925b35;hb=299678c78c20fdd711785ee89f125a3819580117;hp=4731571ce85ec3e94b941ca2f6e6d20049880365;hpb=a109eb919a162bd7de58d62020801bc2e633be50;p=palacios.git diff --git a/palacios/src/palacios/svm_lowlevel.asm b/palacios/src/palacios/svm_lowlevel.asm index 4731571..9e60835 100644 --- a/palacios/src/palacios/svm_lowlevel.asm +++ b/palacios/src/palacios/svm_lowlevel.asm @@ -11,10 +11,8 @@ SVM_ERROR equ 0xFFFFFFFF SVM_SUCCESS equ 0x00000000 EXPORT DisableInts +EXPORT EnableInts -EXPORT GetGDTR -EXPORT GetIDTR -EXPORT GetTR EXPORT exit_test @@ -23,6 +21,8 @@ EXTERN handle_svm_exit EXPORT launch_svm EXPORT safe_svm_launch +EXPORT STGI +EXPORT CLGI @@ -81,6 +81,14 @@ SVM_HANDLER_HALT equ 0x2 db 00fh, 001h, 0dah %endmacro +%macro stgi 0 + db 00fh, 001h, 0dch +%endmacro + +%macro clgi 0 + db 00fh, 001h, 0ddh +%endmacro + ;VMRUN equ db 0Fh, 01h, D8h ;VMLOAD equ db 0x0F,0x01,0xDA ;VMSAVE equ db 0x0F,0x01,0xDB @@ -93,45 +101,20 @@ DisableInts: cli ret - align 8 -GetGDTR: - push ebp - mov ebp, esp - pusha - mov ebx, [ebp + 8] - sgdt [ebx] - - popa - pop ebp +EnableInts: + sti ret align 8 -GetIDTR: - push ebp - mov ebp, esp - pusha - - mov ebx, [ebp + 8] - sidt [ebx] - - popa - pop ebp +CLGI: + clgi ret - - align 8 -GetTR: - push ebp - mov ebp, esp - pusha - mov ebx, [ebp + 8] - str [ebx] - - popa - pop ebp +STGI: + stgi ret @@ -165,6 +148,8 @@ safe_svm_launch: push ebp mov ebp, esp pushf + push fs + push gs pusha ;; Save Host state @@ -188,6 +173,8 @@ safe_svm_launch: add esp, 4 ;; skip past the gpr ptr popa ;; Restore Host state + pop gs + pop fs popf pop ebp ret