X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm_lowlevel.asm;h=ac646b2d9b31a1f24eaae2101b680df980daf3f5;hb=d38e1d6edeee83bfb1e3e3c6e2367faa5055bdfe;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..ac646b2 100644 --- a/palacios/src/palacios/svm_lowlevel.asm +++ b/palacios/src/palacios/svm_lowlevel.asm @@ -1,4 +1,23 @@ ; -*- fundamental -*- +;; +;; This file is part of the Palacios Virtual Machine Monitor developed +;; by the V3VEE Project with funding from the United States National +;; Science Foundation and the Department of Energy. +;; +;; The V3VEE Project is a joint project between Northwestern University +;; and the University of New Mexico. You can find out more at +;; http://www.v3vee.org +;; +;; Copyright (c) 2008, Jack Lange +;; Copyright (c) 2008, The V3VEE Project +;; All rights reserved. +;; +;; Author: Jack Lange +;; +;; This is free software. You are permitted to use, +;; redistribute, and modify it as specified in the file "V3VEE_LICENSE". +;; + %ifndef SVM_ASM @@ -10,11 +29,7 @@ SVM_ERROR equ 0xFFFFFFFF SVM_SUCCESS equ 0x00000000 -EXPORT DisableInts -EXPORT GetGDTR -EXPORT GetIDTR -EXPORT GetTR EXPORT exit_test @@ -23,6 +38,8 @@ EXTERN handle_svm_exit EXPORT launch_svm EXPORT safe_svm_launch +EXPORT STGI +EXPORT CLGI @@ -81,6 +98,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 @@ -88,50 +113,15 @@ SVM_HANDLER_HALT equ 0x2 ;CLGI equ db 0x0F,0x01,0xDD -align 8 -DisableInts: - cli - 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 +155,8 @@ safe_svm_launch: push ebp mov ebp, esp pushf + push fs + push gs pusha ;; Save Host state @@ -188,6 +180,8 @@ safe_svm_launch: add esp, 4 ;; skip past the gpr ptr popa ;; Restore Host state + pop gs + pop fs popf pop ebp ret