+++ /dev/null
-
-.globl set_cr0
-
-set_cr0:
- mov 4(%esp), %eax # Load argument
- movl %eax, %cr0 # Set CR0
- pushw %cs # Push 16 bits of %CS
- pushl $set_cr0_cont # Push 32 bits of %EIP
- ljmp *(%esp) # "Far jump" (both %CS and %EIP from stack)
-set_cr0_cont: # Hey, here we are!
- addl $6, %esp # Un-do 48 bits of pushing
- ret
-
-
-.globl ps_switch_stack
-ps_switch_stack:
- mov 4(%esp), %eax
- mov 8(%esp), %esp
- call *%eax
- rsm