summaryrefslogtreecommitdiff
path: root/firmware/crt0.S
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/crt0.S')
-rw-r--r--firmware/crt0.S123
1 files changed, 0 insertions, 123 deletions
diff --git a/firmware/crt0.S b/firmware/crt0.S
deleted file mode 100644
index 61a2d63f1e..0000000000
--- a/firmware/crt0.S
+++ /dev/null
@@ -1,123 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20/* Most of the code from this file has now been moved into the target trees */
21
22#include "config.h"
23#include "cpu.h"
24
25 .section .init.text,"ax",@progbits
26
27 .global start
28start:
29
30#if CONFIG_CPU == TCC730
31 /* Platform: Gmini 120/SP */
32 ;; disable all interrupts
33 clrsr fe
34 clrsr ie
35 clrsr te
36 ld a14, #0x3F0000
37
38 ld r5, 0xA5
39 ldb @[a14 + 6], r5 ; disable watchdog
40
41 ld a11, #(_datacopy) ; where the data section is in the flash
42 ld a8, #(_datastart) ; destination
43
44 ;; copy data section from flash to ram.
45 ld a9, #_datasize
46 ld r6, e9
47 cmp eq, r6, #0
48 brf .data_copy_loop
49 cmp eq, r9, #0
50 brt .data_copy_end
51.data_copy_loop:
52 ldc r2, @a11
53 ldw @[a8 + 0], r2
54 add a11, #0x2
55 add a8, #0x2
56 sub r9, #0x2
57 sbc r6, #0
58 cmp ugt, r6, #0
59 brt .data_copy_loop
60 cmp ugt, r9, #0
61 brt .data_copy_loop
62.data_copy_end:
63
64 ;; zero out bss
65 ld r2, #0
66 ld a8, #(_bssstart) ; destination
67 ld a9, #_bsssize
68 ld r6, e9
69
70 cmp eq, r6, #0
71 brf .bss_init_loop
72 cmp eq, r9, #0
73 brt .bss_init_end
74.bss_init_loop:
75 ldw @[a8 + 0], r2
76 add a8, #0x2
77 sub r9, #0x2
78 sbc r6, #0
79 cmp ugt, r6, #0
80 brt .bss_init_loop
81 cmp ugt, r9, #0
82 brt .bss_init_loop
83.bss_init_end:
84
85 ;; set stack pointer
86 ld a15, _stackend
87
88 ;; go!
89 jsr _main
90
91 ;; soft reset
92 ld a10, #0
93 ldc r10, @a10
94 jmp a10
95
96
97 .section .vectors, "ax"
98irq_handler:
99
100 push r0, r1
101 push r2, r3
102 push r4, r5
103 push r6, r7
104 push a8, a9
105 push a10, a11
106 push a12, a13
107 push a14
108 ld a13, #0x3f0000
109 ldb r0, @[a13 + 0x26]
110 add r0, r0
111 ld a10, #_interrupt_vector
112 ldw a13, @[a10 + r0]
113 jsr a13
114 pop a14
115 pop a13, a12
116 pop a11, a10
117 pop a9, a8
118 pop r7, r6
119 pop r5, r4
120 pop r3, r2
121 pop r1, r0
122 ret_irq
123#endif