Update for new emulator.
[bertos.git] / kern / switch_x86_64.s
1 /*!
2  * \file
3  * <!--
4  * Copyright 2004 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 1999,2000,2001 Bernardo Innocenti <bernie@develer.com>
6  * This file is part of DevLib - See devlib/README for information.
7  * -->
8  *
9  * \brief i386 context switch
10  *
11  * \version $Id$
12  *
13  * \author Bernardo Innocenti <bernie@develer.com>
14  */
15
16 /*
17  * $Log$
18  * Revision 1.3  2006/02/24 01:35:40  bernie
19  * Update for new emulator.
20  *
21  * Revision 1.2  2006/02/24 01:17:05  bernie
22  * Update for new emulator.
23  *
24  * Revision 1.1  2005/11/27 03:06:15  bernie
25  * Add x86_64 task switching (to be updated to new-style scheduler).
26  *
27  * Revision 1.1  2005/11/14 21:06:38  bernie
28  * Add x86_64 support.
29  *
30  * Revision 1.2  2004/06/06 16:14:12  bernie
31  * Add DevLib license information.
32  *
33  * Revision 1.1  2004/05/23 17:27:00  bernie
34  * Import kern/ subdirectory.
35  *
36  */
37
38 /* I know it's ugly... */
39 #.intel_syntax
40
41 /* void AsmSwitchContext(void **new_sp, void **save_sp) */
42 /*                       %rdi           %rsi            */
43 .globl asm_switch_context
44 asm_switch_context:
45         pushq   %rax
46         pushq   %rbx
47         pushq   %rcx
48         pushq   %rdx
49         pushq   %rsi
50         pushq   %rdi
51         pushq   %rbp
52         movq    %rsp,(%rsi)             /* *save_sp = rsp */
53         movq    (%rdi),%rsp             /* rsp = *new_sp */
54         popq    %rbp
55         popq    %rdi
56         popq    %rsi
57         popq    %rdx
58         popq    %rcx
59         popq    %rbx
60         popq    %rax
61         ret
62
63 /* int asm_switch_version(void) */
64 .globl asm_switch_version
65 asm_switch_version:
66         mov     $1,%rax
67         ret
68