source: mainline/kernel/arch/mips64/include/context_offset.h@ c0699467

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since c0699467 was c0699467, checked in by Martin Decky <martin@…>, 14 years ago

do not provide general access to kernel headers from uspace, only allow specific headers to be accessed or shared
externalize headers which serve as kernel/uspace API/ABI into a special tree

  • Property mode set to 100644
File size: 4.3 KB
Line 
1/*
2 * Copyright (c) 2005 Martin Decky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef KERN_mips64_CONTEXT_OFFSET_H_
30#define KERN_mips64_CONTEXT_OFFSET_H_
31
32#define OFFSET_SP 0x00
33#define OFFSET_PC 0x08
34#define OFFSET_S0 0x10
35#define OFFSET_S1 0x18
36#define OFFSET_S2 0x20
37#define OFFSET_S3 0x28
38#define OFFSET_S4 0x30
39#define OFFSET_S5 0x38
40#define OFFSET_S6 0x40
41#define OFFSET_S7 0x48
42#define OFFSET_S8 0x50
43#define OFFSET_GP 0x58
44
45#ifdef KERNEL
46 #define OFFSET_IPL 0x60
47#else
48 #define OFFSET_TLS 0x60
49
50 #define OFFSET_F20 0x68
51 #define OFFSET_F21 0x70
52 #define OFFSET_F22 0x78
53 #define OFFSET_F23 0x80
54 #define OFFSET_F24 0x88
55 #define OFFSET_F25 0x90
56 #define OFFSET_F26 0x98
57 #define OFFSET_F27 0xa0
58 #define OFFSET_F28 0xa8
59 #define OFFSET_F29 0xb0
60 #define OFFSET_F30 0xb8
61#endif /* KERNEL */
62
63#ifdef __ASM__
64
65#ifdef KERNEL
66
67#include <arch/asm/regname.h>
68
69#else /* KERNEL */
70
71#include <libarch/regname.h>
72
73#endif /* KERNEL */
74
75/* ctx: address of the structure with saved context */
76.macro CONTEXT_SAVE_ARCH_CORE ctx:req
77 sd $s0, OFFSET_S0(\ctx)
78 sd $s1, OFFSET_S1(\ctx)
79 sd $s2, OFFSET_S2(\ctx)
80 sd $s3, OFFSET_S3(\ctx)
81 sd $s4, OFFSET_S4(\ctx)
82 sd $s5, OFFSET_S5(\ctx)
83 sd $s6, OFFSET_S6(\ctx)
84 sd $s7, OFFSET_S7(\ctx)
85 sd $s8, OFFSET_S8(\ctx)
86 sd $gp, OFFSET_GP(\ctx)
87
88#ifndef KERNEL
89 sd $k1, OFFSET_TLS(\ctx)
90
91#ifdef CONFIG_FPU
92 dmfc1 $t0, $20
93 sd $t0, OFFSET_F20(\ctx)
94
95 dmfc1 $t0,$21
96 sd $t0, OFFSET_F21(\ctx)
97
98 dmfc1 $t0,$22
99 sd $t0, OFFSET_F22(\ctx)
100
101 dmfc1 $t0,$23
102 sd $t0, OFFSET_F23(\ctx)
103
104 dmfc1 $t0,$24
105 sd $t0, OFFSET_F24(\ctx)
106
107 dmfc1 $t0,$25
108 sd $t0, OFFSET_F25(\ctx)
109
110 dmfc1 $t0,$26
111 sd $t0, OFFSET_F26(\ctx)
112
113 dmfc1 $t0,$27
114 sd $t0, OFFSET_F27(\ctx)
115
116 dmfc1 $t0,$28
117 sd $t0, OFFSET_F28(\ctx)
118
119 dmfc1 $t0,$29
120 sd $t0, OFFSET_F29(\ctx)
121
122 dmfc1 $t0,$30
123 sd $t0, OFFSET_F30(\ctx)
124#endif /* CONFIG_FPU */
125#endif /* KERNEL */
126
127 sd $ra, OFFSET_PC(\ctx)
128 sd $sp, OFFSET_SP(\ctx)
129.endm
130
131/* ctx: address of the structure with saved context */
132.macro CONTEXT_RESTORE_ARCH_CORE ctx:req
133 ld $s0, OFFSET_S0(\ctx)
134 ld $s1, OFFSET_S1(\ctx)
135 ld $s2, OFFSET_S2(\ctx)
136 ld $s3, OFFSET_S3(\ctx)
137 ld $s4, OFFSET_S4(\ctx)
138 ld $s5, OFFSET_S5(\ctx)
139 ld $s6, OFFSET_S6(\ctx)
140 ld $s7, OFFSET_S7(\ctx)
141 ld $s8, OFFSET_S8(\ctx)
142 ld $gp, OFFSET_GP(\ctx)
143
144#ifndef KERNEL
145 ld $k1, OFFSET_TLS(\ctx)
146
147#ifdef CONFIG_FPU
148 ld $t0, OFFSET_F20(\ctx)
149 dmtc1 $t0,$20
150
151 ld $t0, OFFSET_F21(\ctx)
152 dmtc1 $t0,$21
153
154 ld $t0, OFFSET_F22(\ctx)
155 dmtc1 $t0,$22
156
157 ld $t0, OFFSET_F23(\ctx)
158 dmtc1 $t0,$23
159
160 ld $t0, OFFSET_F24(\ctx)
161 dmtc1 $t0,$24
162
163 ld $t0, OFFSET_F25(\ctx)
164 dmtc1 $t0,$25
165
166 ld $t0, OFFSET_F26(\ctx)
167 dmtc1 $t0,$26
168
169 ld $t0, OFFSET_F27(\ctx)
170 dmtc1 $t0,$27
171
172 ld $t0, OFFSET_F28(\ctx)
173 dmtc1 $t0,$28
174
175 ld $t0, OFFSET_F29(\ctx)
176 dmtc1 $t0,$29
177
178 ld $t0, OFFSET_F30(\ctx)
179 dmtc1 $t0,$30
180#endif /* CONFIG_FPU */
181#endif /* KERNEL */
182
183 ld $ra, OFFSET_PC(\ctx)
184 ld $sp, OFFSET_SP(\ctx)
185.endm
186
187#endif /* __ASM__ */
188
189#endif
Note: See TracBrowser for help on using the repository browser.