X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_lowlevel.asm;h=77e85978061ebad257b31416225ed1c8db0bd253;hb=b07ca7a7edd31d34a8dc613e3d208bbeedd44661;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..77e8597 100644 --- a/palacios/src/palacios/svm_lowlevel.asm +++ b/palacios/src/palacios/svm_lowlevel.asm @@ -12,9 +12,6 @@ SVM_SUCCESS equ 0x00000000 EXPORT DisableInts -EXPORT GetGDTR -EXPORT GetIDTR -EXPORT GetTR EXPORT exit_test @@ -23,6 +20,8 @@ EXTERN handle_svm_exit EXPORT launch_svm EXPORT safe_svm_launch +EXPORT STGI +EXPORT CLGI @@ -81,6 +80,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 @@ -94,44 +101,15 @@ DisableInts: ret -align 8 -GetGDTR: - push ebp - mov ebp, esp - pusha - mov ebx, [ebp + 8] - sgdt [ebx] - - popa - pop ebp - 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 +143,8 @@ safe_svm_launch: push ebp mov ebp, esp pushf + push fs + push gs pusha ;; Save Host state @@ -188,6 +168,8 @@ safe_svm_launch: add esp, 4 ;; skip past the gpr ptr popa ;; Restore Host state + pop gs + pop fs popf pop ebp ret