annotate src/cs/system/main/gcc/exceptions.S @ 134:7d50d8d13711

FFS code sync with Magnetite + gcc version fix This change brings the new flash autodetection for FC and Pirelli targets from Magnetite, and should also fix the gcc version for C1xx and gtamodem targets, which were previously broken because they used TI's original flash autodetect code (which operates at address 0) while the boot ROM is mapped there.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 11 Dec 2018 08:43:25 +0000
parents 92fde62400ef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
78
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This module contains ARM exception handlers which used to be
83
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
3 * in chipsetsw/system/Main/int.s in TI's original version.
78
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 .text
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 .code 32
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 @ layout of xdump buffer:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 @ struct xdump_s {
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 @ long registers[16] // svc mode registers
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 @ long cpsr // svc mode CPSR
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 @ long exception // magic word + index of vector taken
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 @ long stack[20] // bottom 20 words of usr mode stack
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 @ }
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 .globl _arm_undefined
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 _arm_undefined:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 @ store r12 for Xdump_buffer pointer, r11 for index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 stmfd r13!,{r11,r12}
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 mov r11,#1
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 b save_regs
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 .globl _arm_swi
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 _arm_swi:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 @ store r12 for Xdump_buffer pointer, r11 for index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 stmfd r13!,{r11,r12}
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 mov r11,#2
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 b save_regs
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 .globl _arm_abort_prefetch
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 _arm_abort_prefetch:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 @ store r12 for Xdump_buffer pointer, r11 for index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 stmfd r13!,{r11,r12}
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 mov r11,#3
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 b save_regs
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 .globl _arm_abort_data
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 _arm_abort_data:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 @ store r12 for Xdump_buffer pointer, r11 for index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 stmfd r13!,{r11,r12}
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 mov r11,#4
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 b save_regs
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 .globl _arm_reserved
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 _arm_reserved:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 ldr r13,=_Except_Stack_SP @ mode unknown
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 @ store r12 for Xdump_buffer pointer, r11 for index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 stmfd r13!,{r11,r12}
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 mov r11,#5
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 b save_regs
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 save_regs:
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 ldr r12,=xdump_buffer
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 str r14,[r12,#4*15] @ save r14_abt (original PC) into r15 slot
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 stmia r12,{r0-r10} @ save unbanked registers (except r11 and r12)
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 ldmfd r13!,{r0,r1} @ get original r11 and r12
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 str r0,[r12,#4*11] @ save original r11
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 str r1,[r12,#4*12] @ save original r12
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 mrs r0,spsr @ get original psr
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 str r0,[r12,#4*16] @ save original cpsr
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 mrs r1,cpsr @ save mode psr
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 bic r2,r1,#0x1f @ psr with mode bits cleared
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 and r0,r0,#0x1f @ get original mode bits
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 add r0,r0,r2
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 msr cpsr,r0 @ move to pre-exception mode
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 str r13,[r12,#4*13] @ save original SP
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 str r14,[r12,#4*14] @ save original LR
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 msr cpsr,r1 @ restore mode psr
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 @ r11 has original index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 orr r10,r11,#0xDE<<24 @ r10 = 0xDEAD0000 + index of vector taken
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 orr r10,r10,#0xAD<<16
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 str r10,[r12,#4*17] @ save magic + index
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 mov r0,r11 @ put index into 1st argument
95ef11e76c5b src/cs/system/main/gcc: asm code pieced from Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 b dar_exception
83
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
81
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
82 @ the second part
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
83
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
84 /*
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
85 * For the SP-in-RAM validity check, we use the following simplification:
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
86 * it doesn't really matter what the actual IRAM and XRAM sizes are on
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
87 * any given target, as the address decoder hooked up to the ARM7TDMI core
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
88 * always decodes the full 8 MiB address range for each, causing the
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
89 * actual memories to be aliased multiple times in those two ranges.
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
90 * Furthermore, the XRAM address range falls right after the IRAM one,
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
91 * thus we can get away with only a single range check.
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
92 */
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
93
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
94 #define RAM_LOW 0x00800000
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
95 #define RAM_HIGH 0x01800000
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
96
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
97 #define XDUMP_STACK_SIZE 20
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
98
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
99 .globl exception
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
100 exception:
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
101 ldr r12,=xdump_buffer
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
102 ldr r11,[r12,#4*13] @ get svc mode r13
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
103 add r12,r12,#4*18 @ base of stack buffer
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
104
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
105 @ check if svc r13(sp) is within internal/external RAM.
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
106 @ It *could* be invalid.
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
107 cmp r11,#RAM_LOW
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
108 blt nostack
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
109 mov r0,#RAM_HIGH
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
110 sub r0,r0,#XDUMP_STACK_SIZE
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
111 cmp r11,r0
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
112 bge nostack
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
113
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
114 stack_range:
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
115 ldmfd r11!,{r0-r9} @ copy ten stack words..
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
116 stmia r12!,{r0-r9}
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
117 ldmfd r11!,{r0-r9} @ copy ten stack words..
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
118 stmia r12!,{r0-r9}
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
119
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
120 nostack:
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
121 @ we're finished saving all state.
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
122 @ Now execute C code for more flexibility.
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
123 @ set up a stack for this C call
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
124 ldr sp,=_Stack_segment_end
92fde62400ef .../gcc/exceptions.S: added 2nd part that was missing in Citrine
Mychaela Falconia <falcon@freecalypso.org>
parents: 78
diff changeset
125 b dar_reset