IBNOS
context.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Michael Müller
3  * Copyright (c) 2014, Sebastian Lackner
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright notice, this
10  * list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *
26  */
27 
28 #ifndef _H_CONTEXT_
29 #define _H_CONTEXT_
30 
32 {
33  uint16_t prevTask; /* 0x00 */
34  uint16_t __res1;
35 
36  uint32_t esp0; /* 0x04 */
37  uint16_t ss0; /* 0x08 */
38  uint16_t __res2;
39 
40  uint32_t esp1; /* 0x0C */
41  uint16_t ss1; /* 0x10 */
42  uint16_t __res3;
43 
44  uint32_t esp2; /* 0x14 */
45  uint16_t ss2; /* 0x18 */
46  uint16_t __res4;
47 
48  uint32_t cr3; /* 0x1C */
49  uint32_t eip; /* 0x20 */
50  uint32_t eflags; /* 0x24 */
51 
52  uint32_t eax; /* 0x28 */
53  uint32_t ecx; /* 0x2C */
54  uint32_t edx; /* 0x30 */
55  uint32_t ebx; /* 0x34 */
56  uint32_t esp; /* 0x38 */
57  uint32_t ebp; /* 0x3C */
58  uint32_t esi; /* 0x40 */
59  uint32_t edi; /* 0x44 */
60 
61  uint16_t es; /* 0x48 */
62  uint16_t __res5;
63  uint16_t cs; /* 0x4C */
64  uint16_t __res6;
65  uint16_t ss; /* 0x50 */
66  uint16_t __res7;
67  uint16_t ds; /* 0x54 */
68  uint16_t __res8;
69  uint16_t fs; /* 0x58 */
70  uint16_t __res9;
71  uint16_t gs; /* 0x5C */
72  uint16_t __res10;
73 
74  uint16_t ldt; /* 0x60 */
75  uint16_t __res11;
76  uint16_t __res12; /* 0x64 */
77  uint16_t iomap;
78 } __attribute__((packed));
79 
80 struct fpuContext
81 {
82  uint16_t controlWord;
83  uint16_t __res1;
84  uint16_t statusWord;
85  uint16_t __res2;
86  uint16_t tagWord;
87  uint16_t __res3;
88  uint32_t codePointer;
89  uint16_t codeSegment;
90  uint16_t __res4;
91  uint32_t dataPointer;
92  uint16_t dataSegment;
93  uint16_t __res5;
94  uint8_t registerArea[80];
95 } __attribute__((packed));
96 
97 #endif /* _H_CONTEXT_ */
uint16_t statusWord
Definition: context.h:84
uint16_t __res7
Definition: context.h:66
uint32_t ebx
Definition: context.h:55
uint16_t __res1
Definition: context.h:34
uint16_t __res3
Definition: context.h:42
uint16_t fs
Definition: context.h:69
uint16_t __res11
Definition: context.h:75
uint16_t cs
Definition: context.h:63
uint16_t ss1
Definition: context.h:41
uint32_t eflags
Definition: context.h:50
uint16_t ss2
Definition: context.h:45
uint16_t __res8
Definition: context.h:68
uint16_t __res6
Definition: context.h:64
uint32_t ecx
Definition: context.h:53
uint32_t edx
Definition: context.h:54
uint16_t __res3
Definition: context.h:87
uint16_t iomap
Definition: context.h:77
uint8_t registerArea[80]
Definition: context.h:182
uint16_t __res1
Definition: context.h:83
struct taskContext __attribute__((packed))
uint16_t controlWord
Definition: context.h:82
uint32_t eax
Definition: context.h:52
uint16_t __res5
Definition: context.h:62
uint16_t __res2
Definition: context.h:38
uint16_t __res4
Definition: context.h:46
uint32_t esi
Definition: context.h:58
uint32_t codePointer
Definition: context.h:88
uint16_t __res4
Definition: context.h:90
uint16_t prevTask
Definition: context.h:33
uint16_t __res5
Definition: context.h:93
uint32_t esp2
Definition: context.h:44
uint16_t tagWord
Definition: context.h:86
uint32_t cr3
Definition: context.h:48
uint32_t eip
Definition: context.h:49
uint16_t gs
Definition: context.h:71
uint16_t dataSegment
Definition: context.h:92
uint32_t esp0
Definition: context.h:36
uint16_t ss0
Definition: context.h:37
uint16_t __res2
Definition: context.h:85
uint16_t ldt
Definition: context.h:74
uint16_t __res10
Definition: context.h:72
uint16_t __res12
Definition: context.h:76
uint16_t codeSegment
Definition: context.h:89
uint16_t ds
Definition: context.h:67
uint32_t esp1
Definition: context.h:40
uint32_t dataPointer
Definition: context.h:91
uint16_t es
Definition: context.h:61
uint32_t edi
Definition: context.h:59
uint16_t ss
Definition: context.h:65
uint32_t ebp
Definition: context.h:57
uint16_t __res9
Definition: context.h:70
uint32_t esp
Definition: context.h:56