Subversion Repositories HelenOS-historic

Rev

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
 *