source: mainline/arch/ppc64/src/exception.S@ 280a27e

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 280a27e was 602c9101, checked in by Martin Decky <martin@…>, 19 years ago

start ppc64 port
the code is currently a wild mixture of 32/64b code, will be fixed

  • Property mode set to 100644
File size: 3.5 KB
Line 
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
36exc_system_reset:
37 b exc_system_reset
38
39.org 0x200
40.global exc_machine_check
41exc_machine_check:
42 b exc_machine_check
43
44.org 0x300
45.global exc_data_storage
46exc_data_storage:
47 b exc_data_storage
48
49.org 0x380
50.global exc_data_segment
51exc_data_segment:
52 b exc_data_segment
53
54.org 0x400
55.global exc_instruction_storage
56exc_instruction_storage:
57 b exc_instruction_storage
58
59.org 0x480
60.global exc_instruction_segment
61exc_instruction_segment:
62 b exc_instruction_segment
63
64.org 0x500
65.global exc_external
66exc_external:
67 b exc_external
68
69.org 0x600
70.global exc_alignment
71exc_alignment:
72 b exc_alignment
73
74.org 0x700
75.global exc_program
76exc_program:
77 b exc_program
78
79.org 0x800
80.global exc_fp_unavailable
81exc_fp_unavailable:
82 b exc_fp_unavailable
83
84.org 0x900
85.global exc_decrementer
86exc_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
160exc_reserved0:
161 b exc_reserved0
162
163.org 0xb00
164.global exc_reserved1
165exc_reserved1:
166 b exc_reserved1
167
168.org 0xc00
169.global exc_syscall
170exc_syscall:
171 b exc_syscall
172
173.org 0xd00
174.global exc_trace
175exc_trace:
176 b exc_trace
Note: See TracBrowser for help on using the repository browser.