Subversion Repositories HelenOS-historic

Rev

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

Rev 1004 Rev 1215
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/mm/page.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
-
 
35
.global exc_system_reset
-
 
36
exc_system_reset:
-
 
37
	b exc_system_reset
-
 
38
 
-
 
39
.org 0x200
-
 
40
.global exc_machine_check
-
 
41
exc_machine_check:
-
 
42
	b exc_machine_check
-
 
43
 
-
 
44
.org 0x300
-
 
45
.global exc_data_storage
-
 
46
exc_data_storage:
-
 
47
	b exc_data_storage
-
 
48
 
-
 
49
.org 0x380
-
 
50
.global exc_data_segment
-
 
51
exc_data_segment:
-
 
52
	b exc_data_segment
-
 
53
 
-
 
54
.org 0x400
-
 
55
.global exc_instruction_storage
-
 
56
exc_instruction_storage:
-
 
57
	b exc_instruction_storage
-
 
58
 
-
 
59
.org 0x480
-
 
60
.global exc_instruction_segment
-
 
61
exc_instruction_segment:
-
 
62
	b exc_instruction_segment
-
 
63
 
-
 
64
.org 0x500
-
 
65
.global exc_external
-
 
66
exc_external:
-
 
67
	b exc_external
-
 
68
 
-
 
69
.org 0x600
-
 
70
.global exc_alignment
34
.macro CONTEXT_STORE
71
exc_alignment:
-
 
72
	b exc_alignment
-
 
73
 
-
 
74
.org 0x700
-
 
75
.global exc_program
-
 
76
exc_program:
-
 
77
	b exc_program
-
 
78
 
-
 
79
.org 0x800
-
 
80
.global exc_fp_unavailable
-
 
81
exc_fp_unavailable:
-
 
82
	b exc_fp_unavailable
-
 
83
 
-
 
84
.org 0x900
-
 
85
.global exc_decrementer
-
 
86
exc_decrementer:
-
 
87
	mtspr sprg1, sp
35
	mtspr sprg1, sp
88
	
36
	
89
	subis sp, sp, 0x8000
37
	subis sp, sp, 0x8000
90
	
38
	
91
	subi sp, sp, 144
39
	subi sp, sp, 144
92
	stw r0, 0(sp)
40
	stw r0, 0(sp)
93
	stw r2, 4(sp)
41
	stw r2, 4(sp)
94
	stw r3, 8(sp)
42
	stw r3, 8(sp)
95
	stw r4, 12(sp)
43
	stw r4, 12(sp)
96
	stw r5, 16(sp)
44
	stw r5, 16(sp)
97
	stw r6, 20(sp)
45
	stw r6, 20(sp)
98
	stw r7, 24(sp)
46
	stw r7, 24(sp)
99
	stw r8, 28(sp)
47
	stw r8, 28(sp)
100
	stw r9, 32(sp)
48
	stw r9, 32(sp)
101
	stw r10, 36(sp)
49
	stw r10, 36(sp)
102
	stw r11, 40(sp)
50
	stw r11, 40(sp)
103
	stw r12, 44(sp)
51
	stw r12, 44(sp)
104
	stw r13, 48(sp)
52
	stw r13, 48(sp)
105
	stw r14, 52(sp)
53
	stw r14, 52(sp)
106
	stw r15, 56(sp)
54
	stw r15, 56(sp)
107
	stw r16, 60(sp)
55
	stw r16, 60(sp)
108
	stw r17, 64(sp)
56
	stw r17, 64(sp)
109
	stw r18, 68(sp)
57
	stw r18, 68(sp)
110
	stw r19, 72(sp)
58
	stw r19, 72(sp)
111
	stw r20, 76(sp)
59
	stw r20, 76(sp)
112
	stw r21, 80(sp)
60
	stw r21, 80(sp)
113
	stw r22, 84(sp)
61
	stw r22, 84(sp)
114
	stw r23, 88(sp)
62
	stw r23, 88(sp)
115
	stw r24, 92(sp)
63
	stw r24, 92(sp)
116
	stw r25, 96(sp)
64
	stw r25, 96(sp)
117
	stw r26, 100(sp)
65
	stw r26, 100(sp)
118
	stw r27, 104(sp)
66
	stw r27, 104(sp)
119
	stw r28, 108(sp)
67
	stw r28, 108(sp)
120
	stw r29, 112(sp)
68
	stw r29, 112(sp)
121
	stw r30, 116(sp)
69
	stw r30, 116(sp)
122
	stw r31, 120(sp)
70
	stw r31, 120(sp)
123
	
71
	
124
	mfspr r3, srr0
72
	mfspr r3, srr0
125
	stw r3, 124(sp)
73
	stw r3, 124(sp)
126
	
74
	
127
	mfspr r3, srr1
75
	mfspr r3, srr1
128
	stw r3, 128(sp)
76
	stw r3, 128(sp)
129
	
77
	
130
	mflr r3
78
	mflr r3
131
	stw r3, 132(sp)
79
	stw r3, 132(sp)
132
	
80
	
133
	mfcr r3
81
	mfcr r3
134
	stw r3, 136(sp)
82
	stw r3, 136(sp)
135
	
83
	
136
	mfctr r3
84
	mfctr r3
137
	stw r3, 140(sp)
85
	stw r3, 140(sp)
138
	
86
	
139
	mfxer r3
87
	mfxer r3
140
	stw r3, 144(sp)
88
	stw r3, 144(sp)
-
 
89
.endm
-
 
90
 
-
 
91
.org 0x100
-
 
92
.global exc_system_reset
-
 
93
exc_system_reset:
-
 
94
	b exc_system_reset
-
 
95
 
-
 
96
.org 0x200
-
 
97
.global exc_machine_check
-
 
98
exc_machine_check:
-
 
99
	b exc_machine_check
-
 
100
 
-
 
101
.org 0x300
-
 
102
.global exc_data_storage
-
 
103
exc_data_storage:
-
 
104
	CONTEXT_STORE
-
 
105
 
-
 
106
	lis r3, pht_refill@ha
-
 
107
	addi r3, r3, pht_refill@l
-
 
108
	mtspr srr0, r3
-
 
109
	
-
 
110
	mfmsr r3
-
 
111
	ori r3, r3, (msr_ir | msr_dr)@l
-
 
112
	mtspr srr1, r3
-
 
113
	
-
 
114
	lis r3, iret@ha
-
 
115
	addi r3, r3, iret@l
-
 
116
	mtlr r3
-
 
117
	
-
 
118
	addis sp, sp, 0x8000
-
 
119
	rfi
-
 
120
 
-
 
121
.org 0x400
-
 
122
.global exc_instruction_storage
-
 
123
exc_instruction_storage:
-
 
124
	b exc_instruction_storage
-
 
125
 
-
 
126
.org 0x480
-
 
127
.global exc_instruction_segment
-
 
128
exc_instruction_segment:
-
 
129
	b exc_instruction_segment
-
 
130
 
-
 
131
.org 0x500
-
 
132
.global exc_external
-
 
133
exc_external:
-
 
134
	b exc_external
-
 
135
 
-
 
136
.org 0x600
-
 
137
.global exc_alignment
-
 
138
exc_alignment:
-
 
139
	b exc_alignment
-
 
140
 
-
 
141
.org 0x700
-
 
142
.global exc_program
-
 
143
exc_program:
-
 
144
	b exc_program
-
 
145
 
-
 
146
.org 0x800
-
 
147
.global exc_fp_unavailable
-
 
148
exc_fp_unavailable:
-
 
149
	b exc_fp_unavailable
-
 
150
 
-
 
151
.org 0x900
-
 
152
.global exc_decrementer
-
 
153
exc_decrementer:
-
 
154
	CONTEXT_STORE	
141
 
155
 
142
	lis r3, exc_dispatch@ha
156
	lis r3, exc_dispatch@ha
143
	addi r3, r3, exc_dispatch@l
157
	addi r3, r3, exc_dispatch@l
144
	mtspr srr0, r3
158
	mtspr srr0, r3
145
	
159
	
146
	mfmsr r3
160
	mfmsr r3
147
	ori r3, r3, (msr_ir | msr_dr)@l
161
	ori r3, r3, (msr_ir | msr_dr)@l
148
	mtspr srr1, r3
162
	mtspr srr1, r3
149
	
163
	
150
	lis r3, iret@ha
164
	lis r3, iret@ha
151
	addi r3, r3, iret@l
165
	addi r3, r3, iret@l
152
	mtlr r3
166
	mtlr r3
153
	
167
	
154
	addis sp, sp, 0x8000
168
	addis sp, sp, 0x8000
155
	li r3, 10
169
	li r3, 10
156
	rfi
170
	rfi
157
 
171
 
158
.org 0xa00
172
.org 0xa00
159
.global exc_reserved0
173
.global exc_reserved0
160
exc_reserved0:
174
exc_reserved0:
161
	b exc_reserved0
175
	b exc_reserved0
162
 
176
 
163
.org 0xb00
177
.org 0xb00
164
.global exc_reserved1
178
.global exc_reserved1
165
exc_reserved1:
179
exc_reserved1:
166
	b exc_reserved1
180
	b exc_reserved1
167
 
181
 
168
.org 0xc00
182
.org 0xc00
169
.global exc_syscall
183
.global exc_syscall
170
exc_syscall:
184
exc_syscall:
171
	b exc_syscall
185
	b exc_syscall
172
 
186
 
173
.org 0xd00
187
.org 0xd00
174
.global exc_trace
188
.global exc_trace
175
exc_trace:
189
exc_trace:
176
	b exc_trace
190
	b exc_trace
177
 
191