/** * \file * * * \version $Id$ * \author Bernie Innocenti * * \brief i386 context switch */ /* I know it's ugly... */ /* .intel_syntax */ /* void AsmSwitchContext(void **new_sp, void **save_sp) */ /* %rdi %rsi */ .globl asm_switch_context asm_switch_context: pushq %rax pushq %rbx pushq %rcx pushq %rdx pushq %rsi pushq %rdi pushq %rbp movq %rsp,(%rsi) /* *save_sp = rsp */ movq (%rdi),%rsp /* rsp = *new_sp */ popq %rbp popq %rdi popq %rsi popq %rdx popq %rcx popq %rbx popq %rax ret /* int asm_switch_version(void) */ .globl asm_switch_version asm_switch_version: mov $1,%rax ret