]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/l4sys/include/ARCH-amd64/__vcpu-arch.h
04c84d9f30b6574376a5593181b937af7b6576c7
[l4.git] / l4 / pkg / l4sys / include / ARCH-amd64 / __vcpu-arch.h
1 /*
2  * (c) 2009 Technische Universität Dresden
3  * This file is part of TUD:OS and distributed under the terms of the
4  * GNU General Public License 2.
5  * Please see the COPYING-GPL-2 file for details.
6  *
7  * As a special exception, you may use this file as part of a free software
8  * library without restriction.  Specifically, if other files instantiate
9  * templates or use macros or inline functions from this file, or you compile
10  * this file and link it with other files to produce an executable, this
11  * file does not by itself cause the resulting executable to be covered by
12  * the GNU General Public License.  This exception does not however
13  * invalidate any other reasons why the executable file might be covered by
14  * the GNU General Public License.
15  */
16 #pragma once
17
18 #include <l4/sys/types.h>
19
20 /**
21  * \brief vCPU registers.
22  * \ingroup l4_vcpu_api
23  */
24 typedef struct l4_vcpu_regs_t
25 {
26 #if 0
27   l4_umword_t es;      /**< gs register */
28   l4_umword_t ds;      /**< fs register */
29   l4_umword_t gs;      /**< gs register */
30   l4_umword_t fs;      /**< fs register */
31 #endif
32   l4_umword_t r15;     /**< edi register */
33   l4_umword_t r14;     /**< esi register */
34   l4_umword_t r13;     /**< ebp register */
35   l4_umword_t r12;     /**< page fault address */
36   l4_umword_t r11;     /**< edi register */
37   l4_umword_t r10;     /**< esi register */
38   l4_umword_t r9;     /**< ebp register */
39   l4_umword_t r8;     /**< page fault address */
40
41   l4_umword_t di;     /**< edi register */
42   l4_umword_t si;     /**< esi register */
43   l4_umword_t bp;     /**< ebp register */
44   l4_umword_t pfa;     /**< page fault address */
45   l4_umword_t bx;     /**< ebx register */
46   l4_umword_t dx;     /**< edx register */
47   l4_umword_t cx;     /**< ecx register */
48   l4_umword_t ax;     /**< eax register */
49
50   l4_umword_t trapno;  /**< trap number */
51   l4_umword_t err;     /**< error code */
52
53   l4_umword_t ip;     /**< instruction pointer */
54   l4_umword_t dummy1;  /**< dummy \internal */
55   l4_umword_t flags;  /**< eflags */
56   l4_umword_t sp;     /**< stack pointer */
57   l4_umword_t ss;
58 } l4_vcpu_regs_t;
59
60 /**
61  * \brief vCPU message registers.
62  * \ingroup l4_vcpu_api
63  */
64 typedef struct l4_vcpu_ipc_regs_t
65 {
66   l4_umword_t _res[10];
67   l4_umword_t label;
68   l4_umword_t _res2[3];
69   l4_msgtag_t tag;
70 } l4_vcpu_ipc_regs_t;