source: mainline/kernel/arch/mips32/include/arch/context_offset.h@ 6ecf5b8

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 6ecf5b8 was 6ecf5b8, checked in by Vojtech Horky <vojtechhorky@…>, 13 years ago

Prevent compile-time symlinks in kernel

So far, architecture specific headers for kernel were in
kernel/arch/$ARCH/include directory.
From kernel sources, they were referenced as arch/header.h.

For example, file kernel/arch/$ARCH/include/whatever.h
was included with <arch/whatever.h>.

To allow that, a symbolic link with name `arch' pointing
to the correct `include/' was created during compilation.

This change adds one arch/ directory and instead of
creating a symbolic link for each compilation, -I flag
was added to the compiler (the header mentioned above would
now reside in kernel/arch/$ARCH/include/arch/whatever.h).

The same goes for genarch/ includes.

This change would be followed by similar changes in userspace
and ABI. To overall goal is to simplify job of documenation
generators or IDEs that might have problems with the dynamically
created symbolic links.

  • 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_mips32_CONTEXT_OFFSET_H_
30#define KERN_mips32_CONTEXT_OFFSET_H_
31
32#define OFFSET_SP 0x0
33#define OFFSET_PC 0x4
34#define OFFSET_S0 0x8
35#define OFFSET_S1 0xc
36#define OFFSET_S2 0x10
37#define OFFSET_S3 0x14
38#define OFFSET_S4 0x18
39#define OFFSET_S5 0x1c
40#define OFFSET_S6 0x20
41#define OFFSET_S7 0x24
42#define OFFSET_S8 0x28
43#define OFFSET_GP 0x2c
44
45#ifdef KERNEL
46# define OFFSET_IPL 0x30
47#else
48# define OFFSET_TLS 0x30
49
50# define OFFSET_F20 0x34
51# define OFFSET_F21 0x38
52# define OFFSET_F22 0x3c
53# define OFFSET_F23 0x40
54# define OFFSET_F24 0x44
55# define OFFSET_F25 0x48
56# define OFFSET_F26 0x4c
57# define OFFSET_F27 0x50
58# define OFFSET_F28 0x54
59# define OFFSET_F29 0x58
60# define OFFSET_F30 0x5c
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 sw $s0, OFFSET_S0(\ctx)
78 sw $s1, OFFSET_S1(\ctx)
79 sw $s2, OFFSET_S2(\ctx)
80 sw $s3, OFFSET_S3(\ctx)
81 sw $s4, OFFSET_S4(\ctx)
82 sw $s5, OFFSET_S5(\ctx)
83 sw $s6, OFFSET_S6(\ctx)
84 sw $s7, OFFSET_S7(\ctx)
85 sw $s8, OFFSET_S8(\ctx)
86 sw $gp, OFFSET_GP(\ctx)
87
88#ifndef KERNEL
89 sw $k1, OFFSET_TLS(\ctx)
90
91#ifdef CONFIG_FPU
92 mfc1 $t0, $20
93 sw $t0, OFFSET_F20(\ctx)
94
95 mfc1 $t0, $21
96 sw $t0, OFFSET_F21(\ctx)
97
98 mfc1 $t0, $22
99 sw $t0, OFFSET_F22(\ctx)
100
101 mfc1 $t0, $23
102 sw $t0, OFFSET_F23(\ctx)
103
104 mfc1 $t0, $24
105 sw $t0, OFFSET_F24(\ctx)
106
107 mfc1 $t0, $25
108 sw $t0, OFFSET_F25(\ctx)
109
110 mfc1 $t0, $26
111 sw $t0, OFFSET_F26(\ctx)
112
113 mfc1 $t0, $27
114 sw $t0, OFFSET_F27(\ctx)
115
116 mfc1 $t0, $28
117 sw $t0, OFFSET_F28(\ctx)
118
119 mfc1 $t0, $29
120 sw $t0, OFFSET_F29(\ctx)
121
122 mfc1 $t0, $30
123 sw $t0, OFFSET_F30(\ctx)
124#endif /* CONFIG_FPU */
125#endif /* KERNEL */
126
127 sw $ra, OFFSET_PC(\ctx)
128 sw $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 lw $s0, OFFSET_S0(\ctx)
134 lw $s1, OFFSET_S1(\ctx)
135 lw $s2, OFFSET_S2(\ctx)
136 lw $s3, OFFSET_S3(\ctx)
137 lw $s4, OFFSET_S4(\ctx)
138 lw $s5, OFFSET_S5(\ctx)
139 lw $s6, OFFSET_S6(\ctx)
140 lw $s7, OFFSET_S7(\ctx)
141 lw $s8, OFFSET_S8(\ctx)
142 lw $gp, OFFSET_GP(\ctx)
143#ifndef KERNEL
144 lw $k1, OFFSET_TLS(\ctx)
145
146#ifdef CONFIG_FPU
147 lw $t0, OFFSET_F20(\ctx)
148 mtc1 $t0, $20
149
150 lw $t0, OFFSET_F21(\ctx)
151 mtc1 $t0, $21
152
153 lw $t0, OFFSET_F22(\ctx)
154 mtc1 $t0, $22
155
156 lw $t0, OFFSET_F23(\ctx)
157 mtc1 $t0, $23
158
159 lw $t0, OFFSET_F24(\ctx)
160 mtc1 $t0, $24
161
162 lw $t0, OFFSET_F25(\ctx)
163 mtc1 $t0, $25
164
165 lw $t0, OFFSET_F26(\ctx)
166 mtc1 $t0, $26
167
168 lw $t0, OFFSET_F27(\ctx)
169 mtc1 $t0, $27
170
171 lw $t0, OFFSET_F28(\ctx)
172 mtc1 $t0, $28
173
174 lw $t0, OFFSET_F29(\ctx)
175 mtc1 $t0, $29
176
177 lw $t0, OFFSET_F30(\ctx)
178 mtc1 $t0, $30
179#endif /* CONFIG_FPU */
180#endif /* KERNEL */
181
182 lw $ra, OFFSET_PC(\ctx)
183 lw $sp, OFFSET_SP(\ctx)
184.endm
185
186#endif /* __ASM__ */
187
188#endif
Note: See TracBrowser for help on using the repository browser.