Subversion Repositories HelenOS-historic

Rev

Rev 990 | Rev 1215 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 990 Rev 1004
1
#
1
#
2
# Copyright (C) 2006 Martin Decky
2
# Copyright (C) 2006 Martin Decky
3
# All rights reserved.
3
# All rights reserved.
4
#
4
#
5
# Redistribution and use in source and binary forms, with or without
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions
6
# modification, are permitted provided that the following conditions
7
# are met:
7
# are met:
8
#
8
#
9
# - Redistributions of source code must retain the above copyright
9
# - Redistributions of source code must retain the above copyright
10
#   notice, this list of conditions and the following disclaimer.
10
#   notice, this list of conditions and the following disclaimer.
11
# - Redistributions in binary form must reproduce the above copyright
11
# - Redistributions in binary form must reproduce the above copyright
12
#   notice, this list of conditions and the following disclaimer in the
12
#   notice, this list of conditions and the following disclaimer in the
13
#   documentation and/or other materials provided with the distribution.
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
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.
15
#   derived from this software without specific prior written permission.
16
#
16
#
17
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
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
18
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
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
23
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
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
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
#include <arch/asm/regname.h>
29
#include <arch/asm/regname.h>
30
#include <arch/asm/spr.h>
30
#include <arch/mm/page.h>
31
 
31
 
32
.section K_UNMAPPED_TEXT_START, "ax"
32
.section K_UNMAPPED_TEXT_START, "ax"
33
 
33
 
34
.org 0x100
34
.org 0x100
35
.global exc_system_reset
35
.global exc_system_reset
36
exc_system_reset:
36
exc_system_reset:
37
	b exc_system_reset
37
	b exc_system_reset
38
 
38
 
39
.org 0x200
39
.org 0x200
40
.global exc_machine_check
40
.global exc_machine_check
41
exc_machine_check:
41
exc_machine_check:
42
	b exc_machine_check
42
	b exc_machine_check
43
 
43
 
44
.org 0x300
44
.org 0x300
45
.global exc_data_storage
45
.global exc_data_storage
46
exc_data_storage:
46
exc_data_storage:
47
	b exc_data_storage
47
	b exc_data_storage
48
 
48
 
49
.org 0x380
49
.org 0x380
50
.global exc_data_segment
50
.global exc_data_segment
51
exc_data_segment:
51
exc_data_segment:
52
	b exc_data_segment
52
	b exc_data_segment
53
 
53
 
54
.org 0x400
54
.org 0x400
55
.global exc_instruction_storage
55
.global exc_instruction_storage
56
exc_instruction_storage:
56
exc_instruction_storage:
57
	b exc_instruction_storage
57
	b exc_instruction_storage
58
 
58
 
59
.org 0x480
59
.org 0x480
60
.global exc_instruction_segment
60
.global exc_instruction_segment
61
exc_instruction_segment:
61
exc_instruction_segment:
62
	b exc_instruction_segment
62
	b exc_instruction_segment
63
 
63
 
64
.org 0x500
64
.org 0x500
65
.global exc_external
65
.global exc_external
66
exc_external:
66
exc_external:
67
	b exc_external
67
	b exc_external
68
 
68
 
69
.org 0x600
69
.org 0x600
70
.global exc_alignment
70
.global exc_alignment
71
exc_alignment:
71
exc_alignment:
72
	b exc_alignment
72
	b exc_alignment
73
 
73
 
74
.org 0x700
74
.org 0x700
75
.global exc_program
75
.global exc_program
76
exc_program:
76
exc_program:
77
	b exc_program
77
	b exc_program
78
 
78
 
79
.org 0x800
79
.org 0x800
80
.global exc_fp_unavailable
80
.global exc_fp_unavailable
81
exc_fp_unavailable:
81
exc_fp_unavailable:
82
	b exc_fp_unavailable
82
	b exc_fp_unavailable
83
 
83
 
84
.org 0x900
84
.org 0x900
85
.global exc_decrementer
85
.global exc_decrementer
86
exc_decrementer:
86
exc_decrementer:
-
 
87
	mtspr sprg1, sp
-
 
88
	
-
 
89
	subis sp, sp, 0x8000
-
 
90
	
-
 
91
	subi sp, sp, 144
-
 
92
	stw r0, 0(sp)
-
 
93
	stw r2, 4(sp)
-
 
94
	stw r3, 8(sp)
-
 
95
	stw r4, 12(sp)
-
 
96
	stw r5, 16(sp)
-
 
97
	stw r6, 20(sp)
-
 
98
	stw r7, 24(sp)
-
 
99
	stw r8, 28(sp)
-
 
100
	stw r9, 32(sp)
-
 
101
	stw r10, 36(sp)
-
 
102
	stw r11, 40(sp)
-
 
103
	stw r12, 44(sp)
-
 
104
	stw r13, 48(sp)
-
 
105
	stw r14, 52(sp)
-
 
106
	stw r15, 56(sp)
-
 
107
	stw r16, 60(sp)
-
 
108
	stw r17, 64(sp)
-
 
109
	stw r18, 68(sp)
-
 
110
	stw r19, 72(sp)
-
 
111
	stw r20, 76(sp)
-
 
112
	stw r21, 80(sp)
-
 
113
	stw r22, 84(sp)
-
 
114
	stw r23, 88(sp)
-
 
115
	stw r24, 92(sp)
-
 
116
	stw r25, 96(sp)
-
 
117
	stw r26, 100(sp)
-
 
118
	stw r27, 104(sp)
-
 
119
	stw r28, 108(sp)
-
 
120
	stw r29, 112(sp)
-
 
121
	stw r30, 116(sp)
-
 
122
	stw r31, 120(sp)
-
 
123
	
-
 
124
	mfspr r3, srr0
-
 
125
	stw r3, 124(sp)
-
 
126
	
-
 
127
	mfspr r3, srr1
-
 
128
	stw r3, 128(sp)
-
 
129
	
-
 
130
	mflr r3
-
 
131
	stw r3, 132(sp)
-
 
132
	
-
 
133
	mfcr r3
-
 
134
	stw r3, 136(sp)
-
 
135
	
-
 
136
	mfctr r3
-
 
137
	stw r3, 140(sp)
-
 
138
	
-
 
139
	mfxer r3
-
 
140
	stw r3, 144(sp)
-
 
141
 
-
 
142
	lis r3, exc_dispatch@ha
-
 
143
	addi r3, r3, exc_dispatch@l
-
 
144
	mtspr srr0, r3
-
 
145
	
-
 
146
	mfmsr r3
-
 
147
	ori r3, r3, (msr_ir | msr_dr)@l
-
 
148
	mtspr srr1, r3
-
 
149
	
-
 
150
	lis r3, iret@ha
-
 
151
	addi r3, r3, iret@l
-
 
152
	mtlr r3
-
 
153
	
-
 
154
	addis sp, sp, 0x8000
-
 
155
	li r3, 10
87
	rfi
156
	rfi
88
	b exc_decrementer
-
 
89
 
157
 
90
.org 0xa00
158
.org 0xa00
91
.global exc_reserved0
159
.global exc_reserved0
92
exc_reserved0:
160
exc_reserved0:
93
	b exc_reserved0
161
	b exc_reserved0
94
 
162
 
95
.org 0xb00
163
.org 0xb00
96
.global exc_reserved1
164
.global exc_reserved1
97
exc_reserved1:
165
exc_reserved1:
98
	b exc_reserved1
166
	b exc_reserved1
99
 
167
 
100
.org 0xc00
168
.org 0xc00
101
.global exc_syscall
169
.global exc_syscall
102
exc_syscall:
170
exc_syscall:
103
	b exc_syscall
171
	b exc_syscall
104
 
172
 
105
.org 0xd00
173
.org 0xd00
106
.global exc_trace
174
.global exc_trace
107
exc_trace:
175
exc_trace:
108
	b exc_trace
176
	b exc_trace
109
 
177