]>
Commit | Line | Data |
---|---|---|
385c9217 | 1 | /* Startup code for M68HC11. |
748086b7 | 2 | Copyright (C) 1999, 2000, 2002, 2008, 2009 Free Software Foundation, Inc. |
385c9217 SC |
3 | |
4 | This file is free software; you can redistribute it and/or modify it | |
5 | under the terms of the GNU General Public License as published by the | |
748086b7 | 6 | Free Software Foundation; either version 3, or (at your option) any |
385c9217 SC |
7 | later version. |
8 | ||
385c9217 SC |
9 | This file is distributed in the hope that it will be useful, but |
10 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | General Public License for more details. | |
13 | ||
748086b7 JJ |
14 | Under Section 7 of GPL version 3, you are granted additional |
15 | permissions described in the GCC Runtime Library Exception, version | |
16 | 3.1, as published by the Free Software Foundation. | |
385c9217 | 17 | |
748086b7 JJ |
18 | You should have received a copy of the GNU General Public License and |
19 | a copy of the GCC Runtime Library Exception along with this program; | |
20 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
21 | <http://www.gnu.org/licenses/>. */ | |
385c9217 SC |
22 | |
23 | ;----------------------------------------- | |
24 | ; startup code | |
25 | ;----------------------------------------- | |
385c9217 | 26 | |
084de18d SC |
27 | #ifdef __HAVE_SHORT_INT__ |
28 | .mode mshort | |
29 | #else | |
30 | .mode mlong | |
31 | #endif | |
32 | ||
33 | #if defined(__USE_RTC__) && defined(mc68hc12) | |
34 | .macro jsr name | |
35 | call \name | |
36 | .endm | |
37 | #endif | |
385c9217 SC |
38 | ;; |
39 | ;; | |
40 | ;; The linker concatenate the .install* sections in the following order: | |
41 | ;; | |
42 | ;; .install0 Setup the stack pointer | |
43 | ;; .install1 Place holder for applications | |
44 | ;; .install2 Optional installation of data section in memory | |
45 | ;; .install3 Place holder for applications | |
46 | ;; .install4 Invokes the main | |
47 | ;; | |
48 | .sect .install0,"ax",@progbits | |
49 | .globl _start | |
50 | ||
51 | _start: | |
52 | ;; | |
53 | ;; At this step, the stack is not initialized and interrupts are masked. | |
54 | ;; Applications only have 64 cycles to initialize some registers. | |
55 | ;; | |
56 | ;; To have a generic/configurable startup, initialize the stack to | |
57 | ;; the end of some memory region. The _stack symbol is defined by | |
58 | ;; the linker. | |
59 | ;; | |
60 | lds #_stack | |
61 | ||
62 | .sect .install2,"ax",@progbits | |
63 | ;; | |
64 | ;; Call a specific initialization operation. The default is empty. | |
5bdc5878 | 65 | ;; It can be overridden by applications. It is intended to initialize |
385c9217 SC |
66 | ;; the 68hc11 registers. Function prototype is: |
67 | ;; | |
68 | ;; int __premain(void); | |
69 | ;; | |
70 | jsr __premain | |
71 | ||
72 | ;; | |
73 | ;; | |
74 | ;; | |
75 | .sect .install4,"ax",@progbits | |
76 | jsr main | |
77 | fatal: | |
78 | jsr exit | |
79 | bra fatal | |
80 | ||
81 | ;----------------------------------------- | |
82 | ; end startup code | |
83 | ;----------------------------------------- | |
84 | ;; Force loading of data section mapping and bss clear | |
85 | .2byte __map_data_section | |
86 | .2byte __init_bss_section |