Rev 863 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 863 | Rev 883 | ||
---|---|---|---|
Line 25... | Line 25... | ||
25 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
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. |
26 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | # |
27 | # |
28 | 28 | ||
29 | /** |
29 | /** |
30 | * This file contains two trap tables. |
30 | * This file contains kernel trap table. |
31 | * First, trap_table, is the one wich contains handlers implemented by |
- | |
32 | * kernel. During initialization, these handlers are copied out to |
- | |
33 | * the second trap table, trap_table_save, and the first table is |
- | |
34 | * overwritten with copy of OFW's own trap table. The copy is then patched |
- | |
35 | * from the trap_table_save. |
- | |
36 | * |
- | |
37 | * This arrangement is beneficial because kernel handlers stay on their |
- | |
38 | * link-time addresses which is good for debugging. |
- | |
39 | */ |
31 | */ |
40 | 32 | ||
41 | .register %g2, #scratch |
33 | .register %g2, #scratch |
42 | .register %g3, #scratch |
34 | .register %g3, #scratch |
43 | .register %g6, #scratch |
35 | .register %g6, #scratch |
Line 66... | Line 58... | ||
66 | .org trap_table + TT_INSTRUCTION_ACCESS_EXCEPTION*ENTRY_SIZE |
58 | .org trap_table + TT_INSTRUCTION_ACCESS_EXCEPTION*ENTRY_SIZE |
67 | .global instruction_access_exception |
59 | .global instruction_access_exception |
68 | instruction_access_exception: |
60 | instruction_access_exception: |
69 | SIMPLE_HANDLER do_instruction_access_exc |
61 | SIMPLE_HANDLER do_instruction_access_exc |
70 | 62 | ||
- | 63 | /* TT = 0x10, TL = 0, illegal_instruction */ |
|
- | 64 | .org trap_table + TT_ILLEGAL_INSTRUCTION*ENTRY_SIZE |
|
- | 65 | .global illegal_instruction |
|
- | 66 | illegal_instruction: |
|
- | 67 | SIMPLE_HANDLER do_illegal_instruction |
|
- | 68 | ||
71 | /* TT = 0x24, TL = 0, clean_window handler */ |
69 | /* TT = 0x24, TL = 0, clean_window handler */ |
72 | .org trap_table + TT_CLEAN_WINDOW*ENTRY_SIZE |
70 | .org trap_table + TT_CLEAN_WINDOW*ENTRY_SIZE |
73 | .global clean_window_handler |
71 | .global clean_window_handler |
74 | clean_window_handler: |
72 | clean_window_handler: |
75 | CLEAN_WINDOW_HANDLER |
73 | CLEAN_WINDOW_HANDLER |
Line 214... | Line 212... | ||
214 | .org trap_table + (TT_INSTRUCTION_ACCESS_EXCEPTION+512)*ENTRY_SIZE |
212 | .org trap_table + (TT_INSTRUCTION_ACCESS_EXCEPTION+512)*ENTRY_SIZE |
215 | .global instruction_access_exception_high |
213 | .global instruction_access_exception_high |
216 | instruction_access_exception_high: |
214 | instruction_access_exception_high: |
217 | SIMPLE_HANDLER do_instruction_access_exc |
215 | SIMPLE_HANDLER do_instruction_access_exc |
218 | 216 | ||
- | 217 | /* TT = 0x10, TL > 0, illegal_instruction */ |
|
- | 218 | .org trap_table + (TT_ILLEGAL_INSTRUCTION+512)*ENTRY_SIZE |
|
- | 219 | .global illegal_instruction_high |
|
- | 220 | illegal_instruction_high: |
|
- | 221 | SIMPLE_HANDLER do_illegal_instruction |
|
- | 222 | ||
219 | /* TT = 0x24, TL > 0, clean_window handler */ |
223 | /* TT = 0x24, TL > 0, clean_window handler */ |
220 | .org trap_table + (TT_CLEAN_WINDOW+512)*ENTRY_SIZE |
224 | .org trap_table + (TT_CLEAN_WINDOW+512)*ENTRY_SIZE |
221 | .global clean_window_handler_high |
225 | .global clean_window_handler_high |
222 | clean_window_handler_high: |
226 | clean_window_handler_high: |
223 | CLEAN_WINDOW_HANDLER |
227 | CLEAN_WINDOW_HANDLER |
Line 257... | Line 261... | ||
257 | .global fill_0_normal_high |
261 | .global fill_0_normal_high |
258 | fill_0_normal_high: |
262 | fill_0_normal_high: |
259 | FILL_NORMAL_HANDLER |
263 | FILL_NORMAL_HANDLER |
260 | 264 | ||
261 | 265 | ||
262 | - | ||
263 | /* |
- | |
264 | * Save trap table. |
- | |
265 | */ |
- | |
266 | .align TABLE_SIZE |
- | |
267 | .global trap_table_save |
- | |
268 | trap_table_save: |
- | |
269 | .space TABLE_SIZE, 0 |
- | |
270 | - | ||
271 | - | ||
272 | /* Preemptible trap handler. |
266 | /* Preemptible trap handler. |
273 | * |
267 | * |
274 | * This trap handler makes arrangements to |
268 | * This trap handler makes arrangements to |
275 | * make calling scheduler() possible. |
269 | * make calling scheduler() possible. |
276 | * |
270 | * |