; Low level interrupt/thread handling code for GeekOS.
; Copyright (c) 2001,2003,2004 David H. Hovemeyer <daveho@cs.umd.edu>
; Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu>
-; $Revision: 1.2 $
+; $Revision: 1.5 $
; This is free software. You are permitted to use,
; redistribute, and modify it as specified in the file "COPYING".
EXPORT Set_MSR
EXPORT Get_MSR
+
EXPORT Get_CR2
+EXPORT Get_CR3
EXPORT Proc_test
push ebp
mov ebp, esp
push edx
+ push ecx
+ push ebx
+
mov eax, [ebp + 8]
cpuid
mov eax, edx
+
+ pop ebx
+ pop ecx
pop edx
pop ebp
ret
cpuid_ecx:
push ebp
mov ebp, esp
+ push edx
push ecx
+ push ebx
+
mov eax, [ebp + 8]
cpuid
mov eax, ecx
+
+ pop ebx
pop ecx
+ pop edx
pop ebp
ret
;
align 8
cpuid_eax:
+ push ebp
+ mov ebp, esp
+ push edx
+ push ecx
+ push ebx
+
mov eax, [esp+4]
cpuid
+
+ pop ebx
+ pop ecx
+ pop edx
+ pop ebp
ret
;
+
align 8
Get_CR2:
mov eax, cr2
align 8
+Get_CR3:
+ mov eax, cr3
+ ret
+
+align 8
Proc_test:
push ebp
mov ebp, esp