Subversion Repositories HelenOS-historic

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1160 decky 1
#
2
# Copyright (C) 2006 Martin Decky
3
# All rights reserved.
4
#
5
# Redistribution and use in source and binary forms, with or without
6
# modification, are permitted provided that the following conditions
7
# are met:
8
#
9
# - Redistributions of source code must retain the above copyright
10
#   notice, this list of conditions and the following disclaimer.
11
# - Redistributions in binary form must reproduce the above copyright
12
#   notice, this list of conditions and the following disclaimer in the
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
15
#   derived from this software without specific prior written permission.
16
#
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
19
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
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
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
26
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
#
28
 
29
#include <arch/asm/regname.h>
30
#include <arch/mm/page.h>
31
 
32
.section K_UNMAPPED_TEXT_START, "ax"
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
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
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
156
	rfid
157
 
158
.org 0xa00
159
.global exc_reserved0
160
exc_reserved0:
161
	b exc_reserved0
162
 
163
.org 0xb00
164
.global exc_reserved1
165
exc_reserved1:
166
	b exc_reserved1
167
 
168
.org 0xc00
169
.global exc_syscall
170
exc_syscall:
171
	b exc_syscall
172
 
173
.org 0xd00
174
.global exc_trace
175
exc_trace:
176
	b exc_trace