diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2010-10-14 15:57:59 -0400 |
---|---|---|
committer | Chris Metcalf <cmetcalf@tilera.com> | 2010-10-15 15:35:25 -0400 |
commit | 4fe938c5134fce1f25e1261eef6252fb47634962 (patch) | |
tree | 12cb1362006cefc53ca77832e4c365eccdd9d97e /arch/tile | |
parent | dabe98c972091818762e02841ab1f982e573e7d0 (diff) |
arch/tile: Bomb C99 comments to C89 comments in tile's <arch/sim_def.h>
Also, sync the file up the upstream version (an additional #define).
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/include/arch/sim_def.h | 548 |
1 files changed, 269 insertions, 279 deletions
diff --git a/arch/tile/include/arch/sim_def.h b/arch/tile/include/arch/sim_def.h index 6418fbde063e..7a17082c3773 100644 --- a/arch/tile/include/arch/sim_def.h +++ b/arch/tile/include/arch/sim_def.h | |||
@@ -1,477 +1,461 @@ | |||
1 | // Copyright 2010 Tilera Corporation. All Rights Reserved. | 1 | /* |
2 | // | 2 | * Copyright 2010 Tilera Corporation. All Rights Reserved. |
3 | // This program is free software; you can redistribute it and/or | 3 | * |
4 | // modify it under the terms of the GNU General Public License | 4 | * This program is free software; you can redistribute it and/or |
5 | // as published by the Free Software Foundation, version 2. | 5 | * modify it under the terms of the GNU General Public License |
6 | // | 6 | * as published by the Free Software Foundation, version 2. |
7 | // This program is distributed in the hope that it will be useful, but | 7 | * |
8 | // WITHOUT ANY WARRANTY; without even the implied warranty of | 8 | * This program is distributed in the hope that it will be useful, but |
9 | // MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | 9 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | // NON INFRINGEMENT. See the GNU General Public License for | 10 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or |
11 | // more details. | 11 | * NON INFRINGEMENT. See the GNU General Public License for |
12 | 12 | * more details. | |
13 | //! @file | 13 | */ |
14 | //! | 14 | |
15 | //! Some low-level simulator definitions. | 15 | /** |
16 | //! | 16 | * @file |
17 | * | ||
18 | * Some low-level simulator definitions. | ||
19 | */ | ||
17 | 20 | ||
18 | #ifndef __ARCH_SIM_DEF_H__ | 21 | #ifndef __ARCH_SIM_DEF_H__ |
19 | #define __ARCH_SIM_DEF_H__ | 22 | #define __ARCH_SIM_DEF_H__ |
20 | 23 | ||
21 | 24 | ||
22 | //! Internal: the low bits of the SIM_CONTROL_* SPR values specify | 25 | /** |
23 | //! the operation to perform, and the remaining bits are | 26 | * Internal: the low bits of the SIM_CONTROL_* SPR values specify |
24 | //! an operation-specific parameter (often unused). | 27 | * the operation to perform, and the remaining bits are |
25 | //! | 28 | * an operation-specific parameter (often unused). |
29 | */ | ||
26 | #define _SIM_CONTROL_OPERATOR_BITS 8 | 30 | #define _SIM_CONTROL_OPERATOR_BITS 8 |
27 | 31 | ||
28 | 32 | ||
29 | //== Values which can be written to SPR_SIM_CONTROL. | 33 | /* |
34 | * Values which can be written to SPR_SIM_CONTROL. | ||
35 | */ | ||
30 | 36 | ||
31 | //! If written to SPR_SIM_CONTROL, stops profiling. | 37 | /** If written to SPR_SIM_CONTROL, stops profiling. */ |
32 | //! | ||
33 | #define SIM_CONTROL_PROFILER_DISABLE 0 | 38 | #define SIM_CONTROL_PROFILER_DISABLE 0 |
34 | 39 | ||
35 | //! If written to SPR_SIM_CONTROL, starts profiling. | 40 | /** If written to SPR_SIM_CONTROL, starts profiling. */ |
36 | //! | ||
37 | #define SIM_CONTROL_PROFILER_ENABLE 1 | 41 | #define SIM_CONTROL_PROFILER_ENABLE 1 |
38 | 42 | ||
39 | //! If written to SPR_SIM_CONTROL, clears profiling counters. | 43 | /** If written to SPR_SIM_CONTROL, clears profiling counters. */ |
40 | //! | ||
41 | #define SIM_CONTROL_PROFILER_CLEAR 2 | 44 | #define SIM_CONTROL_PROFILER_CLEAR 2 |
42 | 45 | ||
43 | //! If written to SPR_SIM_CONTROL, checkpoints the simulator. | 46 | /** If written to SPR_SIM_CONTROL, checkpoints the simulator. */ |
44 | //! | ||
45 | #define SIM_CONTROL_CHECKPOINT 3 | 47 | #define SIM_CONTROL_CHECKPOINT 3 |
46 | 48 | ||
47 | //! If written to SPR_SIM_CONTROL, combined with a mask (shifted by 8), | 49 | /** |
48 | //! sets the tracing mask to the given mask. See "sim_set_tracing()". | 50 | * If written to SPR_SIM_CONTROL, combined with a mask (shifted by 8), |
49 | //! | 51 | * sets the tracing mask to the given mask. See "sim_set_tracing()". |
52 | */ | ||
50 | #define SIM_CONTROL_SET_TRACING 4 | 53 | #define SIM_CONTROL_SET_TRACING 4 |
51 | 54 | ||
52 | //! If written to SPR_SIM_CONTROL, combined with a mask (shifted by 8), | 55 | /** |
53 | //! dumps the requested items of machine state to the log. | 56 | * If written to SPR_SIM_CONTROL, combined with a mask (shifted by 8), |
54 | //! | 57 | * dumps the requested items of machine state to the log. |
58 | */ | ||
55 | #define SIM_CONTROL_DUMP 5 | 59 | #define SIM_CONTROL_DUMP 5 |
56 | 60 | ||
57 | //! If written to SPR_SIM_CONTROL, clears chip-level profiling counters. | 61 | /** If written to SPR_SIM_CONTROL, clears chip-level profiling counters. */ |
58 | //! | ||
59 | #define SIM_CONTROL_PROFILER_CHIP_CLEAR 6 | 62 | #define SIM_CONTROL_PROFILER_CHIP_CLEAR 6 |
60 | 63 | ||
61 | //! If written to SPR_SIM_CONTROL, disables chip-level profiling. | 64 | /** If written to SPR_SIM_CONTROL, disables chip-level profiling. */ |
62 | //! | ||
63 | #define SIM_CONTROL_PROFILER_CHIP_DISABLE 7 | 65 | #define SIM_CONTROL_PROFILER_CHIP_DISABLE 7 |
64 | 66 | ||
65 | //! If written to SPR_SIM_CONTROL, enables chip-level profiling. | 67 | /** If written to SPR_SIM_CONTROL, enables chip-level profiling. */ |
66 | //! | ||
67 | #define SIM_CONTROL_PROFILER_CHIP_ENABLE 8 | 68 | #define SIM_CONTROL_PROFILER_CHIP_ENABLE 8 |
68 | 69 | ||
69 | //! If written to SPR_SIM_CONTROL, enables chip-level functional mode | 70 | /** If written to SPR_SIM_CONTROL, enables chip-level functional mode */ |
70 | //! | ||
71 | #define SIM_CONTROL_ENABLE_FUNCTIONAL 9 | 71 | #define SIM_CONTROL_ENABLE_FUNCTIONAL 9 |
72 | 72 | ||
73 | //! If written to SPR_SIM_CONTROL, disables chip-level functional mode. | 73 | /** If written to SPR_SIM_CONTROL, disables chip-level functional mode. */ |
74 | //! | ||
75 | #define SIM_CONTROL_DISABLE_FUNCTIONAL 10 | 74 | #define SIM_CONTROL_DISABLE_FUNCTIONAL 10 |
76 | 75 | ||
77 | //! If written to SPR_SIM_CONTROL, enables chip-level functional mode. | 76 | /** |
78 | //! All tiles must perform this write for functional mode to be enabled. | 77 | * If written to SPR_SIM_CONTROL, enables chip-level functional mode. |
79 | //! Ignored in naked boot mode unless --functional is specified. | 78 | * All tiles must perform this write for functional mode to be enabled. |
80 | //! WARNING: Only the hypervisor startup code should use this! | 79 | * Ignored in naked boot mode unless --functional is specified. |
81 | //! | 80 | * WARNING: Only the hypervisor startup code should use this! |
81 | */ | ||
82 | #define SIM_CONTROL_ENABLE_FUNCTIONAL_BARRIER 11 | 82 | #define SIM_CONTROL_ENABLE_FUNCTIONAL_BARRIER 11 |
83 | 83 | ||
84 | //! If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), | 84 | /** |
85 | //! writes a string directly to the simulator output. Written to once for | 85 | * If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), |
86 | //! each character in the string, plus a final NUL. Instead of NUL, | 86 | * writes a string directly to the simulator output. Written to once for |
87 | //! you can also use "SIM_PUTC_FLUSH_STRING" or "SIM_PUTC_FLUSH_BINARY". | 87 | * each character in the string, plus a final NUL. Instead of NUL, |
88 | //! | 88 | * you can also use "SIM_PUTC_FLUSH_STRING" or "SIM_PUTC_FLUSH_BINARY". |
89 | // ISSUE: Document the meaning of "newline", and the handling of NUL. | 89 | */ |
90 | // | 90 | /* ISSUE: Document the meaning of "newline", and the handling of NUL. */ |
91 | #define SIM_CONTROL_PUTC 12 | 91 | #define SIM_CONTROL_PUTC 12 |
92 | 92 | ||
93 | //! If written to SPR_SIM_CONTROL, clears the --grind-coherence state for | 93 | /** |
94 | //! this core. This is intended to be used before a loop that will | 94 | * If written to SPR_SIM_CONTROL, clears the --grind-coherence state for |
95 | //! invalidate the cache by loading new data and evicting all current data. | 95 | * this core. This is intended to be used before a loop that will |
96 | //! Generally speaking, this API should only be used by system code. | 96 | * invalidate the cache by loading new data and evicting all current data. |
97 | //! | 97 | * Generally speaking, this API should only be used by system code. |
98 | */ | ||
98 | #define SIM_CONTROL_GRINDER_CLEAR 13 | 99 | #define SIM_CONTROL_GRINDER_CLEAR 13 |
99 | 100 | ||
100 | //! If written to SPR_SIM_CONTROL, shuts down the simulator. | 101 | /** If written to SPR_SIM_CONTROL, shuts down the simulator. */ |
101 | //! | ||
102 | #define SIM_CONTROL_SHUTDOWN 14 | 102 | #define SIM_CONTROL_SHUTDOWN 14 |
103 | 103 | ||
104 | //! If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), | 104 | /** |
105 | //! indicates that a fork syscall just created the given process. | 105 | * If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), |
106 | //! | 106 | * indicates that a fork syscall just created the given process. |
107 | */ | ||
107 | #define SIM_CONTROL_OS_FORK 15 | 108 | #define SIM_CONTROL_OS_FORK 15 |
108 | 109 | ||
109 | //! If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), | 110 | /** |
110 | //! indicates that an exit syscall was just executed by the given process. | 111 | * If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), |
111 | //! | 112 | * indicates that an exit syscall was just executed by the given process. |
113 | */ | ||
112 | #define SIM_CONTROL_OS_EXIT 16 | 114 | #define SIM_CONTROL_OS_EXIT 16 |
113 | 115 | ||
114 | //! If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), | 116 | /** |
115 | //! indicates that the OS just switched to the given process. | 117 | * If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), |
116 | //! | 118 | * indicates that the OS just switched to the given process. |
119 | */ | ||
117 | #define SIM_CONTROL_OS_SWITCH 17 | 120 | #define SIM_CONTROL_OS_SWITCH 17 |
118 | 121 | ||
119 | //! If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), | 122 | /** |
120 | //! indicates that an exec syscall was just executed. Written to once for | 123 | * If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), |
121 | //! each character in the executable name, plus a final NUL. | 124 | * indicates that an exec syscall was just executed. Written to once for |
122 | //! | 125 | * each character in the executable name, plus a final NUL. |
126 | */ | ||
123 | #define SIM_CONTROL_OS_EXEC 18 | 127 | #define SIM_CONTROL_OS_EXEC 18 |
124 | 128 | ||
125 | //! If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), | 129 | /** |
126 | //! indicates that an interpreter (PT_INTERP) was loaded. Written to once | 130 | * If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), |
127 | //! for each character in "ADDR:PATH", plus a final NUL, where "ADDR" is a | 131 | * indicates that an interpreter (PT_INTERP) was loaded. Written to once |
128 | //! hex load address starting with "0x", and "PATH" is the executable name. | 132 | * for each character in "ADDR:PATH", plus a final NUL, where "ADDR" is a |
129 | //! | 133 | * hex load address starting with "0x", and "PATH" is the executable name. |
134 | */ | ||
130 | #define SIM_CONTROL_OS_INTERP 19 | 135 | #define SIM_CONTROL_OS_INTERP 19 |
131 | 136 | ||
132 | //! If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), | 137 | /** |
133 | //! indicates that a dll was loaded. Written to once for each character | 138 | * If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), |
134 | //! in "ADDR:PATH", plus a final NUL, where "ADDR" is a hexadecimal load | 139 | * indicates that a dll was loaded. Written to once for each character |
135 | //! address starting with "0x", and "PATH" is the executable name. | 140 | * in "ADDR:PATH", plus a final NUL, where "ADDR" is a hexadecimal load |
136 | //! | 141 | * address starting with "0x", and "PATH" is the executable name. |
142 | */ | ||
137 | #define SIM_CONTROL_DLOPEN 20 | 143 | #define SIM_CONTROL_DLOPEN 20 |
138 | 144 | ||
139 | //! If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), | 145 | /** |
140 | //! indicates that a dll was unloaded. Written to once for each character | 146 | * If written to SPR_SIM_CONTROL, combined with a character (shifted by 8), |
141 | //! in "ADDR", plus a final NUL, where "ADDR" is a hexadecimal load | 147 | * indicates that a dll was unloaded. Written to once for each character |
142 | //! address starting with "0x". | 148 | * in "ADDR", plus a final NUL, where "ADDR" is a hexadecimal load |
143 | //! | 149 | * address starting with "0x". |
150 | */ | ||
144 | #define SIM_CONTROL_DLCLOSE 21 | 151 | #define SIM_CONTROL_DLCLOSE 21 |
145 | 152 | ||
146 | //! If written to SPR_SIM_CONTROL, combined with a flag (shifted by 8), | 153 | /** |
147 | //! indicates whether to allow data reads to remotely-cached | 154 | * If written to SPR_SIM_CONTROL, combined with a flag (shifted by 8), |
148 | //! dirty cache lines to be cached locally without grinder warnings or | 155 | * indicates whether to allow data reads to remotely-cached |
149 | //! assertions (used by Linux kernel fast memcpy). | 156 | * dirty cache lines to be cached locally without grinder warnings or |
150 | //! | 157 | * assertions (used by Linux kernel fast memcpy). |
158 | */ | ||
151 | #define SIM_CONTROL_ALLOW_MULTIPLE_CACHING 22 | 159 | #define SIM_CONTROL_ALLOW_MULTIPLE_CACHING 22 |
152 | 160 | ||
153 | //! If written to SPR_SIM_CONTROL, enables memory tracing. | 161 | /** If written to SPR_SIM_CONTROL, enables memory tracing. */ |
154 | //! | ||
155 | #define SIM_CONTROL_ENABLE_MEM_LOGGING 23 | 162 | #define SIM_CONTROL_ENABLE_MEM_LOGGING 23 |
156 | 163 | ||
157 | //! If written to SPR_SIM_CONTROL, disables memory tracing. | 164 | /** If written to SPR_SIM_CONTROL, disables memory tracing. */ |
158 | //! | ||
159 | #define SIM_CONTROL_DISABLE_MEM_LOGGING 24 | 165 | #define SIM_CONTROL_DISABLE_MEM_LOGGING 24 |
160 | 166 | ||
161 | //! If written to SPR_SIM_CONTROL, changes the shaping parameters of one of | 167 | /** |
162 | //! the gbe or xgbe shims. Must specify the shim id, the type, the units, and | 168 | * If written to SPR_SIM_CONTROL, changes the shaping parameters of one of |
163 | //! the rate, as defined in SIM_SHAPING_SPR_ARG. | 169 | * the gbe or xgbe shims. Must specify the shim id, the type, the units, and |
164 | //! | 170 | * the rate, as defined in SIM_SHAPING_SPR_ARG. |
171 | */ | ||
165 | #define SIM_CONTROL_SHAPING 25 | 172 | #define SIM_CONTROL_SHAPING 25 |
166 | 173 | ||
167 | //! If written to SPR_SIM_CONTROL, combined with character (shifted by 8), | 174 | /** |
168 | //! requests that a simulator command be executed. Written to once for each | 175 | * If written to SPR_SIM_CONTROL, combined with character (shifted by 8), |
169 | //! character in the command, plus a final NUL. | 176 | * requests that a simulator command be executed. Written to once for each |
170 | //! | 177 | * character in the command, plus a final NUL. |
178 | */ | ||
171 | #define SIM_CONTROL_COMMAND 26 | 179 | #define SIM_CONTROL_COMMAND 26 |
172 | 180 | ||
173 | //! If written to SPR_SIM_CONTROL, indicates that the simulated system | 181 | /** |
174 | //! is panicking, to allow debugging via --debug-on-panic. | 182 | * If written to SPR_SIM_CONTROL, indicates that the simulated system |
175 | //! | 183 | * is panicking, to allow debugging via --debug-on-panic. |
184 | */ | ||
176 | #define SIM_CONTROL_PANIC 27 | 185 | #define SIM_CONTROL_PANIC 27 |
177 | 186 | ||
178 | //! If written to SPR_SIM_CONTROL, triggers a simulator syscall. | 187 | /** |
179 | //! See "sim_syscall()" for more info. | 188 | * If written to SPR_SIM_CONTROL, triggers a simulator syscall. |
180 | //! | 189 | * See "sim_syscall()" for more info. |
190 | */ | ||
181 | #define SIM_CONTROL_SYSCALL 32 | 191 | #define SIM_CONTROL_SYSCALL 32 |
182 | 192 | ||
183 | //! If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), | 193 | /** |
184 | //! provides the pid that subsequent SIM_CONTROL_OS_FORK writes should | 194 | * If written to SPR_SIM_CONTROL, combined with a pid (shifted by 8), |
185 | //! use as the pid, rather than the default previous SIM_CONTROL_OS_SWITCH. | 195 | * provides the pid that subsequent SIM_CONTROL_OS_FORK writes should |
186 | //! | 196 | * use as the pid, rather than the default previous SIM_CONTROL_OS_SWITCH. |
197 | */ | ||
187 | #define SIM_CONTROL_OS_FORK_PARENT 33 | 198 | #define SIM_CONTROL_OS_FORK_PARENT 33 |
188 | 199 | ||
189 | //! If written to SPR_SIM_CONTROL, combined with a mPIPE shim number | 200 | /** |
190 | //! (shifted by 8), clears the pending magic data section. The cleared | 201 | * If written to SPR_SIM_CONTROL, combined with a mPIPE shim number |
191 | //! pending magic data section and any subsequently appended magic bytes | 202 | * (shifted by 8), clears the pending magic data section. The cleared |
192 | //! will only take effect when the classifier blast programmer is run. | 203 | * pending magic data section and any subsequently appended magic bytes |
204 | * will only take effect when the classifier blast programmer is run. | ||
205 | */ | ||
193 | #define SIM_CONTROL_CLEAR_MPIPE_MAGIC_BYTES 34 | 206 | #define SIM_CONTROL_CLEAR_MPIPE_MAGIC_BYTES 34 |
194 | 207 | ||
195 | //! If written to SPR_SIM_CONTROL, combined with a mPIPE shim number | 208 | /** |
196 | //! (shifted by 8) and a byte of data (shifted by 16), appends that byte | 209 | * If written to SPR_SIM_CONTROL, combined with a mPIPE shim number |
197 | //! to the shim's pending magic data section. The pending magic data | 210 | * (shifted by 8) and a byte of data (shifted by 16), appends that byte |
198 | //! section takes effect when the classifier blast programmer is run. | 211 | * to the shim's pending magic data section. The pending magic data |
212 | * section takes effect when the classifier blast programmer is run. | ||
213 | */ | ||
199 | #define SIM_CONTROL_APPEND_MPIPE_MAGIC_BYTE 35 | 214 | #define SIM_CONTROL_APPEND_MPIPE_MAGIC_BYTE 35 |
200 | 215 | ||
201 | //! If written to SPR_SIM_CONTROL, combined with a mPIPE shim number | 216 | /** |
202 | //! (shifted by 8), an enable=1/disable=0 bit (shifted by 16), and a | 217 | * If written to SPR_SIM_CONTROL, combined with a mPIPE shim number |
203 | //! mask of links (shifted by 32), enable or disable the corresponding | 218 | * (shifted by 8), an enable=1/disable=0 bit (shifted by 16), and a |
204 | //! mPIPE links. | 219 | * mask of links (shifted by 32), enable or disable the corresponding |
220 | * mPIPE links. | ||
221 | */ | ||
205 | #define SIM_CONTROL_ENABLE_MPIPE_LINK_MAGIC_BYTE 36 | 222 | #define SIM_CONTROL_ENABLE_MPIPE_LINK_MAGIC_BYTE 36 |
206 | 223 | ||
207 | //== Syscall numbers for use with "sim_syscall()". | ||
208 | 224 | ||
209 | //! Syscall number for sim_add_watchpoint(). | 225 | /* |
210 | //! | 226 | * Syscall numbers for use with "sim_syscall()". |
227 | */ | ||
228 | |||
229 | /** Syscall number for sim_add_watchpoint(). */ | ||
211 | #define SIM_SYSCALL_ADD_WATCHPOINT 2 | 230 | #define SIM_SYSCALL_ADD_WATCHPOINT 2 |
212 | 231 | ||
213 | //! Syscall number for sim_remove_watchpoint(). | 232 | /** Syscall number for sim_remove_watchpoint(). */ |
214 | //! | ||
215 | #define SIM_SYSCALL_REMOVE_WATCHPOINT 3 | 233 | #define SIM_SYSCALL_REMOVE_WATCHPOINT 3 |
216 | 234 | ||
217 | //! Syscall number for sim_query_watchpoint(). | 235 | /** Syscall number for sim_query_watchpoint(). */ |
218 | //! | ||
219 | #define SIM_SYSCALL_QUERY_WATCHPOINT 4 | 236 | #define SIM_SYSCALL_QUERY_WATCHPOINT 4 |
220 | 237 | ||
221 | //! Syscall number that asserts that the cache lines whose 64-bit PA | 238 | /** |
222 | //! is passed as the second argument to sim_syscall(), and over a | 239 | * Syscall number that asserts that the cache lines whose 64-bit PA |
223 | //! range passed as the third argument, are no longer in cache. | 240 | * is passed as the second argument to sim_syscall(), and over a |
224 | //! The simulator raises an error if this is not the case. | 241 | * range passed as the third argument, are no longer in cache. |
225 | //! | 242 | * The simulator raises an error if this is not the case. |
243 | */ | ||
226 | #define SIM_SYSCALL_VALIDATE_LINES_EVICTED 5 | 244 | #define SIM_SYSCALL_VALIDATE_LINES_EVICTED 5 |
227 | 245 | ||
228 | 246 | ||
229 | //== Bit masks which can be shifted by 8, combined with | 247 | /* |
230 | //== SIM_CONTROL_SET_TRACING, and written to SPR_SIM_CONTROL. | 248 | * Bit masks which can be shifted by 8, combined with |
249 | * SIM_CONTROL_SET_TRACING, and written to SPR_SIM_CONTROL. | ||
250 | */ | ||
231 | 251 | ||
232 | //! @addtogroup arch_sim | 252 | /** |
233 | //! @{ | 253 | * @addtogroup arch_sim |
254 | * @{ | ||
255 | */ | ||
234 | 256 | ||
235 | //! Enable --trace-cycle when passed to simulator_set_tracing(). | 257 | /** Enable --trace-cycle when passed to simulator_set_tracing(). */ |
236 | //! | ||
237 | #define SIM_TRACE_CYCLES 0x01 | 258 | #define SIM_TRACE_CYCLES 0x01 |
238 | 259 | ||
239 | //! Enable --trace-router when passed to simulator_set_tracing(). | 260 | /** Enable --trace-router when passed to simulator_set_tracing(). */ |
240 | //! | ||
241 | #define SIM_TRACE_ROUTER 0x02 | 261 | #define SIM_TRACE_ROUTER 0x02 |
242 | 262 | ||
243 | //! Enable --trace-register-writes when passed to simulator_set_tracing(). | 263 | /** Enable --trace-register-writes when passed to simulator_set_tracing(). */ |
244 | //! | ||
245 | #define SIM_TRACE_REGISTER_WRITES 0x04 | 264 | #define SIM_TRACE_REGISTER_WRITES 0x04 |
246 | 265 | ||
247 | //! Enable --trace-disasm when passed to simulator_set_tracing(). | 266 | /** Enable --trace-disasm when passed to simulator_set_tracing(). */ |
248 | //! | ||
249 | #define SIM_TRACE_DISASM 0x08 | 267 | #define SIM_TRACE_DISASM 0x08 |
250 | 268 | ||
251 | //! Enable --trace-stall-info when passed to simulator_set_tracing(). | 269 | /** Enable --trace-stall-info when passed to simulator_set_tracing(). */ |
252 | //! | ||
253 | #define SIM_TRACE_STALL_INFO 0x10 | 270 | #define SIM_TRACE_STALL_INFO 0x10 |
254 | 271 | ||
255 | //! Enable --trace-memory-controller when passed to simulator_set_tracing(). | 272 | /** Enable --trace-memory-controller when passed to simulator_set_tracing(). */ |
256 | //! | ||
257 | #define SIM_TRACE_MEMORY_CONTROLLER 0x20 | 273 | #define SIM_TRACE_MEMORY_CONTROLLER 0x20 |
258 | 274 | ||
259 | //! Enable --trace-l2 when passed to simulator_set_tracing(). | 275 | /** Enable --trace-l2 when passed to simulator_set_tracing(). */ |
260 | //! | ||
261 | #define SIM_TRACE_L2_CACHE 0x40 | 276 | #define SIM_TRACE_L2_CACHE 0x40 |
262 | 277 | ||
263 | //! Enable --trace-lines when passed to simulator_set_tracing(). | 278 | /** Enable --trace-lines when passed to simulator_set_tracing(). */ |
264 | //! | ||
265 | #define SIM_TRACE_LINES 0x80 | 279 | #define SIM_TRACE_LINES 0x80 |
266 | 280 | ||
267 | //! Turn off all tracing when passed to simulator_set_tracing(). | 281 | /** Turn off all tracing when passed to simulator_set_tracing(). */ |
268 | //! | ||
269 | #define SIM_TRACE_NONE 0 | 282 | #define SIM_TRACE_NONE 0 |
270 | 283 | ||
271 | //! Turn on all tracing when passed to simulator_set_tracing(). | 284 | /** Turn on all tracing when passed to simulator_set_tracing(). */ |
272 | //! | ||
273 | #define SIM_TRACE_ALL (-1) | 285 | #define SIM_TRACE_ALL (-1) |
274 | 286 | ||
275 | //! @} | 287 | /** @} */ |
276 | 288 | ||
277 | //! Computes the value to write to SPR_SIM_CONTROL to set tracing flags. | 289 | /** Computes the value to write to SPR_SIM_CONTROL to set tracing flags. */ |
278 | //! | ||
279 | #define SIM_TRACE_SPR_ARG(mask) \ | 290 | #define SIM_TRACE_SPR_ARG(mask) \ |
280 | (SIM_CONTROL_SET_TRACING | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) | 291 | (SIM_CONTROL_SET_TRACING | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) |
281 | 292 | ||
282 | 293 | ||
283 | //== Bit masks which can be shifted by 8, combined with | 294 | /* |
284 | //== SIM_CONTROL_DUMP, and written to SPR_SIM_CONTROL. | 295 | * Bit masks which can be shifted by 8, combined with |
296 | * SIM_CONTROL_DUMP, and written to SPR_SIM_CONTROL. | ||
297 | */ | ||
285 | 298 | ||
286 | //! @addtogroup arch_sim | 299 | /** |
287 | //! @{ | 300 | * @addtogroup arch_sim |
301 | * @{ | ||
302 | */ | ||
288 | 303 | ||
289 | //! Dump the general-purpose registers. | 304 | /** Dump the general-purpose registers. */ |
290 | //! | ||
291 | #define SIM_DUMP_REGS 0x001 | 305 | #define SIM_DUMP_REGS 0x001 |
292 | 306 | ||
293 | //! Dump the SPRs. | 307 | /** Dump the SPRs. */ |
294 | //! | ||
295 | #define SIM_DUMP_SPRS 0x002 | 308 | #define SIM_DUMP_SPRS 0x002 |
296 | 309 | ||
297 | //! Dump the ITLB. | 310 | /** Dump the ITLB. */ |
298 | //! | ||
299 | #define SIM_DUMP_ITLB 0x004 | 311 | #define SIM_DUMP_ITLB 0x004 |
300 | 312 | ||
301 | //! Dump the DTLB. | 313 | /** Dump the DTLB. */ |
302 | //! | ||
303 | #define SIM_DUMP_DTLB 0x008 | 314 | #define SIM_DUMP_DTLB 0x008 |
304 | 315 | ||
305 | //! Dump the L1 I-cache. | 316 | /** Dump the L1 I-cache. */ |
306 | //! | ||
307 | #define SIM_DUMP_L1I 0x010 | 317 | #define SIM_DUMP_L1I 0x010 |
308 | 318 | ||
309 | //! Dump the L1 D-cache. | 319 | /** Dump the L1 D-cache. */ |
310 | //! | ||
311 | #define SIM_DUMP_L1D 0x020 | 320 | #define SIM_DUMP_L1D 0x020 |
312 | 321 | ||
313 | //! Dump the L2 cache. | 322 | /** Dump the L2 cache. */ |
314 | //! | ||
315 | #define SIM_DUMP_L2 0x040 | 323 | #define SIM_DUMP_L2 0x040 |
316 | 324 | ||
317 | //! Dump the switch registers. | 325 | /** Dump the switch registers. */ |
318 | //! | ||
319 | #define SIM_DUMP_SNREGS 0x080 | 326 | #define SIM_DUMP_SNREGS 0x080 |
320 | 327 | ||
321 | //! Dump the switch ITLB. | 328 | /** Dump the switch ITLB. */ |
322 | //! | ||
323 | #define SIM_DUMP_SNITLB 0x100 | 329 | #define SIM_DUMP_SNITLB 0x100 |
324 | 330 | ||
325 | //! Dump the switch L1 I-cache. | 331 | /** Dump the switch L1 I-cache. */ |
326 | //! | ||
327 | #define SIM_DUMP_SNL1I 0x200 | 332 | #define SIM_DUMP_SNL1I 0x200 |
328 | 333 | ||
329 | //! Dump the current backtrace. | 334 | /** Dump the current backtrace. */ |
330 | //! | ||
331 | #define SIM_DUMP_BACKTRACE 0x400 | 335 | #define SIM_DUMP_BACKTRACE 0x400 |
332 | 336 | ||
333 | //! Only dump valid lines in caches. | 337 | /** Only dump valid lines in caches. */ |
334 | //! | ||
335 | #define SIM_DUMP_VALID_LINES 0x800 | 338 | #define SIM_DUMP_VALID_LINES 0x800 |
336 | 339 | ||
337 | //! Dump everything that is dumpable. | 340 | /** Dump everything that is dumpable. */ |
338 | //! | ||
339 | #define SIM_DUMP_ALL (-1 & ~SIM_DUMP_VALID_LINES) | 341 | #define SIM_DUMP_ALL (-1 & ~SIM_DUMP_VALID_LINES) |
340 | 342 | ||
341 | // @} | 343 | /** @} */ |
342 | 344 | ||
343 | //! Computes the value to write to SPR_SIM_CONTROL to dump machine state. | 345 | /** Computes the value to write to SPR_SIM_CONTROL to dump machine state. */ |
344 | //! | ||
345 | #define SIM_DUMP_SPR_ARG(mask) \ | 346 | #define SIM_DUMP_SPR_ARG(mask) \ |
346 | (SIM_CONTROL_DUMP | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) | 347 | (SIM_CONTROL_DUMP | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) |
347 | 348 | ||
348 | 349 | ||
349 | //== Bit masks which can be shifted by 8, combined with | 350 | /* |
350 | //== SIM_CONTROL_PROFILER_CHIP_xxx, and written to SPR_SIM_CONTROL. | 351 | * Bit masks which can be shifted by 8, combined with |
352 | * SIM_CONTROL_PROFILER_CHIP_xxx, and written to SPR_SIM_CONTROL. | ||
353 | */ | ||
351 | 354 | ||
352 | //! @addtogroup arch_sim | 355 | /** |
353 | //! @{ | 356 | * @addtogroup arch_sim |
357 | * @{ | ||
358 | */ | ||
354 | 359 | ||
355 | //! Use with with SIM_PROFILER_CHIP_xxx to control the memory controllers. | 360 | /** Use with with SIM_PROFILER_CHIP_xxx to control the memory controllers. */ |
356 | //! | ||
357 | #define SIM_CHIP_MEMCTL 0x001 | 361 | #define SIM_CHIP_MEMCTL 0x001 |
358 | 362 | ||
359 | //! Use with with SIM_PROFILER_CHIP_xxx to control the XAUI interface. | 363 | /** Use with with SIM_PROFILER_CHIP_xxx to control the XAUI interface. */ |
360 | //! | ||
361 | #define SIM_CHIP_XAUI 0x002 | 364 | #define SIM_CHIP_XAUI 0x002 |
362 | 365 | ||
363 | //! Use with with SIM_PROFILER_CHIP_xxx to control the PCIe interface. | 366 | /** Use with with SIM_PROFILER_CHIP_xxx to control the PCIe interface. */ |
364 | //! | ||
365 | #define SIM_CHIP_PCIE 0x004 | 367 | #define SIM_CHIP_PCIE 0x004 |
366 | 368 | ||
367 | //! Use with with SIM_PROFILER_CHIP_xxx to control the MPIPE interface. | 369 | /** Use with with SIM_PROFILER_CHIP_xxx to control the MPIPE interface. */ |
368 | //! | ||
369 | #define SIM_CHIP_MPIPE 0x008 | 370 | #define SIM_CHIP_MPIPE 0x008 |
370 | 371 | ||
371 | //! Reference all chip devices. | 372 | /** Use with with SIM_PROFILER_CHIP_xxx to control the TRIO interface. */ |
372 | //! | 373 | #define SIM_CHIP_TRIO 0x010 |
374 | |||
375 | /** Reference all chip devices. */ | ||
373 | #define SIM_CHIP_ALL (-1) | 376 | #define SIM_CHIP_ALL (-1) |
374 | 377 | ||
375 | //! @} | 378 | /** @} */ |
376 | 379 | ||
377 | //! Computes the value to write to SPR_SIM_CONTROL to clear chip statistics. | 380 | /** Computes the value to write to SPR_SIM_CONTROL to clear chip statistics. */ |
378 | //! | ||
379 | #define SIM_PROFILER_CHIP_CLEAR_SPR_ARG(mask) \ | 381 | #define SIM_PROFILER_CHIP_CLEAR_SPR_ARG(mask) \ |
380 | (SIM_CONTROL_PROFILER_CHIP_CLEAR | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) | 382 | (SIM_CONTROL_PROFILER_CHIP_CLEAR | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) |
381 | 383 | ||
382 | //! Computes the value to write to SPR_SIM_CONTROL to disable chip statistics. | 384 | /** Computes the value to write to SPR_SIM_CONTROL to disable chip statistics.*/ |
383 | //! | ||
384 | #define SIM_PROFILER_CHIP_DISABLE_SPR_ARG(mask) \ | 385 | #define SIM_PROFILER_CHIP_DISABLE_SPR_ARG(mask) \ |
385 | (SIM_CONTROL_PROFILER_CHIP_DISABLE | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) | 386 | (SIM_CONTROL_PROFILER_CHIP_DISABLE | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) |
386 | 387 | ||
387 | //! Computes the value to write to SPR_SIM_CONTROL to enable chip statistics. | 388 | /** Computes the value to write to SPR_SIM_CONTROL to enable chip statistics. */ |
388 | //! | ||
389 | #define SIM_PROFILER_CHIP_ENABLE_SPR_ARG(mask) \ | 389 | #define SIM_PROFILER_CHIP_ENABLE_SPR_ARG(mask) \ |
390 | (SIM_CONTROL_PROFILER_CHIP_ENABLE | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) | 390 | (SIM_CONTROL_PROFILER_CHIP_ENABLE | ((mask) << _SIM_CONTROL_OPERATOR_BITS)) |
391 | 391 | ||
392 | 392 | ||
393 | 393 | ||
394 | // Shim bitrate controls. | 394 | /* Shim bitrate controls. */ |
395 | 395 | ||
396 | //! The number of bits used to store the shim id. | 396 | /** The number of bits used to store the shim id. */ |
397 | //! | ||
398 | #define SIM_CONTROL_SHAPING_SHIM_ID_BITS 3 | 397 | #define SIM_CONTROL_SHAPING_SHIM_ID_BITS 3 |
399 | 398 | ||
400 | //! @addtogroup arch_sim | 399 | /** |
401 | //! @{ | 400 | * @addtogroup arch_sim |
401 | * @{ | ||
402 | */ | ||
402 | 403 | ||
403 | //! Change the gbe 0 bitrate. | 404 | /** Change the gbe 0 bitrate. */ |
404 | //! | ||
405 | #define SIM_CONTROL_SHAPING_GBE_0 0x0 | 405 | #define SIM_CONTROL_SHAPING_GBE_0 0x0 |
406 | 406 | ||
407 | //! Change the gbe 1 bitrate. | 407 | /** Change the gbe 1 bitrate. */ |
408 | //! | ||
409 | #define SIM_CONTROL_SHAPING_GBE_1 0x1 | 408 | #define SIM_CONTROL_SHAPING_GBE_1 0x1 |
410 | 409 | ||
411 | //! Change the gbe 2 bitrate. | 410 | /** Change the gbe 2 bitrate. */ |
412 | //! | ||
413 | #define SIM_CONTROL_SHAPING_GBE_2 0x2 | 411 | #define SIM_CONTROL_SHAPING_GBE_2 0x2 |
414 | 412 | ||
415 | //! Change the gbe 3 bitrate. | 413 | /** Change the gbe 3 bitrate. */ |
416 | //! | ||
417 | #define SIM_CONTROL_SHAPING_GBE_3 0x3 | 414 | #define SIM_CONTROL_SHAPING_GBE_3 0x3 |
418 | 415 | ||
419 | //! Change the xgbe 0 bitrate. | 416 | /** Change the xgbe 0 bitrate. */ |
420 | //! | ||
421 | #define SIM_CONTROL_SHAPING_XGBE_0 0x4 | 417 | #define SIM_CONTROL_SHAPING_XGBE_0 0x4 |
422 | 418 | ||
423 | //! Change the xgbe 1 bitrate. | 419 | /** Change the xgbe 1 bitrate. */ |
424 | //! | ||
425 | #define SIM_CONTROL_SHAPING_XGBE_1 0x5 | 420 | #define SIM_CONTROL_SHAPING_XGBE_1 0x5 |
426 | 421 | ||
427 | //! The type of shaping to do. | 422 | /** The type of shaping to do. */ |
428 | //! | ||
429 | #define SIM_CONTROL_SHAPING_TYPE_BITS 2 | 423 | #define SIM_CONTROL_SHAPING_TYPE_BITS 2 |
430 | 424 | ||
431 | //! Control the multiplier. | 425 | /** Control the multiplier. */ |
432 | //! | ||
433 | #define SIM_CONTROL_SHAPING_MULTIPLIER 0 | 426 | #define SIM_CONTROL_SHAPING_MULTIPLIER 0 |
434 | 427 | ||
435 | //! Control the PPS. | 428 | /** Control the PPS. */ |
436 | //! | ||
437 | #define SIM_CONTROL_SHAPING_PPS 1 | 429 | #define SIM_CONTROL_SHAPING_PPS 1 |
438 | 430 | ||
439 | //! Control the BPS. | 431 | /** Control the BPS. */ |
440 | //! | ||
441 | #define SIM_CONTROL_SHAPING_BPS 2 | 432 | #define SIM_CONTROL_SHAPING_BPS 2 |
442 | 433 | ||
443 | //! The number of bits for the units for the shaping parameter. | 434 | /** The number of bits for the units for the shaping parameter. */ |
444 | //! | ||
445 | #define SIM_CONTROL_SHAPING_UNITS_BITS 2 | 435 | #define SIM_CONTROL_SHAPING_UNITS_BITS 2 |
446 | 436 | ||
447 | //! Provide a number in single units. | 437 | /** Provide a number in single units. */ |
448 | //! | ||
449 | #define SIM_CONTROL_SHAPING_UNITS_SINGLE 0 | 438 | #define SIM_CONTROL_SHAPING_UNITS_SINGLE 0 |
450 | 439 | ||
451 | //! Provide a number in kilo units. | 440 | /** Provide a number in kilo units. */ |
452 | //! | ||
453 | #define SIM_CONTROL_SHAPING_UNITS_KILO 1 | 441 | #define SIM_CONTROL_SHAPING_UNITS_KILO 1 |
454 | 442 | ||
455 | //! Provide a number in mega units. | 443 | /** Provide a number in mega units. */ |
456 | //! | ||
457 | #define SIM_CONTROL_SHAPING_UNITS_MEGA 2 | 444 | #define SIM_CONTROL_SHAPING_UNITS_MEGA 2 |
458 | 445 | ||
459 | //! Provide a number in giga units. | 446 | /** Provide a number in giga units. */ |
460 | //! | ||
461 | #define SIM_CONTROL_SHAPING_UNITS_GIGA 3 | 447 | #define SIM_CONTROL_SHAPING_UNITS_GIGA 3 |
462 | 448 | ||
463 | // @} | 449 | /** @} */ |
464 | 450 | ||
465 | //! How many bits are available for the rate. | 451 | /** How many bits are available for the rate. */ |
466 | //! | ||
467 | #define SIM_CONTROL_SHAPING_RATE_BITS \ | 452 | #define SIM_CONTROL_SHAPING_RATE_BITS \ |
468 | (32 - (_SIM_CONTROL_OPERATOR_BITS + \ | 453 | (32 - (_SIM_CONTROL_OPERATOR_BITS + \ |
469 | SIM_CONTROL_SHAPING_SHIM_ID_BITS + \ | 454 | SIM_CONTROL_SHAPING_SHIM_ID_BITS + \ |
470 | SIM_CONTROL_SHAPING_TYPE_BITS + \ | 455 | SIM_CONTROL_SHAPING_TYPE_BITS + \ |
471 | SIM_CONTROL_SHAPING_UNITS_BITS)) | 456 | SIM_CONTROL_SHAPING_UNITS_BITS)) |
472 | 457 | ||
473 | //! Computes the value to write to SPR_SIM_CONTROL to change a bitrate. | 458 | /** Computes the value to write to SPR_SIM_CONTROL to change a bitrate. */ |
474 | //! | ||
475 | #define SIM_SHAPING_SPR_ARG(shim, type, units, rate) \ | 459 | #define SIM_SHAPING_SPR_ARG(shim, type, units, rate) \ |
476 | (SIM_CONTROL_SHAPING | \ | 460 | (SIM_CONTROL_SHAPING | \ |
477 | ((shim) | \ | 461 | ((shim) | \ |
@@ -483,30 +467,36 @@ | |||
483 | SIM_CONTROL_SHAPING_UNITS_BITS))) << _SIM_CONTROL_OPERATOR_BITS) | 467 | SIM_CONTROL_SHAPING_UNITS_BITS))) << _SIM_CONTROL_OPERATOR_BITS) |
484 | 468 | ||
485 | 469 | ||
486 | //== Values returned when reading SPR_SIM_CONTROL. | 470 | /* |
487 | // ISSUE: These names should share a longer common prefix. | 471 | * Values returned when reading SPR_SIM_CONTROL. |
472 | * ISSUE: These names should share a longer common prefix. | ||
473 | */ | ||
488 | 474 | ||
489 | //! When reading SPR_SIM_CONTROL, the mask of simulator tracing bits | 475 | /** |
490 | //! (SIM_TRACE_xxx values). | 476 | * When reading SPR_SIM_CONTROL, the mask of simulator tracing bits |
491 | //! | 477 | * (SIM_TRACE_xxx values). |
478 | */ | ||
492 | #define SIM_TRACE_FLAG_MASK 0xFFFF | 479 | #define SIM_TRACE_FLAG_MASK 0xFFFF |
493 | 480 | ||
494 | //! When reading SPR_SIM_CONTROL, the mask for whether profiling is enabled. | 481 | /** When reading SPR_SIM_CONTROL, the mask for whether profiling is enabled. */ |
495 | //! | ||
496 | #define SIM_PROFILER_ENABLED_MASK 0x10000 | 482 | #define SIM_PROFILER_ENABLED_MASK 0x10000 |
497 | 483 | ||
498 | 484 | ||
499 | //== Special arguments for "SIM_CONTROL_PUTC". | 485 | /* |
486 | * Special arguments for "SIM_CONTROL_PUTC". | ||
487 | */ | ||
500 | 488 | ||
501 | //! Flag value for forcing a PUTC string-flush, including | 489 | /** |
502 | //! coordinate/cycle prefix and newline. | 490 | * Flag value for forcing a PUTC string-flush, including |
503 | //! | 491 | * coordinate/cycle prefix and newline. |
492 | */ | ||
504 | #define SIM_PUTC_FLUSH_STRING 0x100 | 493 | #define SIM_PUTC_FLUSH_STRING 0x100 |
505 | 494 | ||
506 | //! Flag value for forcing a PUTC binary-data-flush, which skips the | 495 | /** |
507 | //! prefix and does not append a newline. | 496 | * Flag value for forcing a PUTC binary-data-flush, which skips the |
508 | //! | 497 | * prefix and does not append a newline. |
498 | */ | ||
509 | #define SIM_PUTC_FLUSH_BINARY 0x101 | 499 | #define SIM_PUTC_FLUSH_BINARY 0x101 |
510 | 500 | ||
511 | 501 | ||
512 | #endif //__ARCH_SIM_DEF_H__ | 502 | #endif /* __ARCH_SIM_DEF_H__ */ |