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 | * |