OSDN Git Service

Add new tests for xstormy16
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / xstormy16 / below100.S
1 /******************************************************************\r
2 ***                                                             ***\r
3 ***     crt0 for __BELOW100__ attribute test with SID           ***\r
4 ***                                                             ***\r
5 ******************************************************************/\r
6 \r
7                                 /*************************************/\r
8                                 /** Interrupt vectors at 0x8000     **/\r
9                                 /*************************************/\r
10         .section .int_vec,"ax"\r
11         .global _start\r
12         .align 1\r
13 _start:\r
14         jmpf _int_reset\r
15         //jmpf _int_basetimer\r
16         //jmpf _int_timer0\r
17         //jmpf _int_timer1\r
18         //jmpf _int_irq_4\r
19         //jmpf _int_irq_5\r
20         //jmpf _int_port0\r
21         //jmpf _int_port1\r
22         //jmpf _int_irq_8\r
23         //jmpf _int_irq_9\r
24         //jmpf _int_irq_a\r
25         //jmpf _int_irq_b\r
26         //jmpf _int_irq_c\r
27         //jmpf _int_irq_d\r
28         //jmpf _int_irq_e\r
29         //jmpf _int_irq_f\r
30                                 /*************************************/\r
31                                 /** reset code                      **/\r
32                                 /*************************************/\r
33         .text\r
34 _int_reset:\r
35                                 /*************************************/\r
36                                 /** setup stack pointer             **/\r
37                                 /*************************************/\r
38         mov sp,#__stack\r
39                                 /*************************************/\r
40                                 /** zero .bss section               **/\r
41                                 /*************************************/\r
42         mov r0,#__bss_start\r
43         mov r1,#__bss_end\r
44         mov r2,#0\r
45 1:      mov.w (r0++),r2\r
46         blt r0,r1,1b\r
47                                 /*************************************/\r
48                                 /** copy inital value for .data     **/\r
49                                 /*************************************/\r
50         mov r1,#__data_start\r
51         mov r3,#__data_end\r
52         mov r0,#@lo(__rdata)\r
53         mov r8,#@hi(__rdata)\r
54 2:      movf.w r2,(r0++)\r
55         bnz r0,#0,3f\r
56         add r8,#1\r
57 3:      mov.w (r1++),r2\r
58         blt r1,r3,2b\r
59                                 /*************************************/\r
60                                 /** call hardware init routine      **/\r
61                                 /*************************************/\r
62         callf _hwinit\r
63                                 /*************************************/\r
64                                 /** call initializaton routines     **/\r
65                                 /*************************************/\r
66         callf _init\r
67                                 /*************************************/\r
68                                 /** setup fini routines to be       **/\r
69                                 /**  called from exit               **/\r
70                                 /*************************************/\r
71         mov r2,#@fptr(_fini)\r
72         callf atexit\r
73                                 /*************************************/\r
74                                 /** call main() with empty          **/\r
75                                 /**  argc/argv/envp                 **/\r
76                                 /*************************************/\r
77         mov r2,#0\r
78         mov r3,#0\r
79         mov r4,#0\r
80         callf main\r
81                                 /*************************************/\r
82                                 /** return from main()              **/\r
83                                 /*************************************/\r
84         callf exit\r
85                                 /*************************************/\r
86                                 /** should never reach this code    **/\r
87                                 /*************************************/\r
88         jmpf _start\r
89                                 /*************************************/\r
90                                 /** default h/w initialize routine  **/\r
91                                 /** and default _init/_finit for    **/\r
92                                 /**  -nostartfiles option           **/\r
93                                 /*************************************/\r
94         .globl _hwinit\r
95         .weak _hwinit\r
96 _hwinit:\r
97         .globl _init\r
98         .weak _init\r
99 _init:\r
100         .globl _fini\r
101         .weak _fini\r
102 _fini:\r
103         ret\r
104 \r
105 /******************************************************************\r
106 *******************************************************************\r
107 ***                                                             ***\r
108 ***       Chip information data for LC59_32K                    ***\r
109 ***                 Written by T.Matsukawa                      ***\r
110 ***                                                             ***\r
111 *******************************************************************\r
112 ******************************************************************/\r
113 \r
114                                 /*************************************/\r
115                                 /** Define convenient macros        **/\r
116                                 /*************************************/\r
117 #define BCD(x)  (((x)/10)%10)*0x10+((x)%10)\r
118 #define BCD4(x) BCD((x)/100),BCD(x)\r
119 #define BCD6(x) BCD((x)/10000),BCD((x)/100),BCD(x)\r
120                                 /*************************************/\r
121                                 /** Define memory sizes             **/\r
122                                 /*************************************/\r
123 #define RAM_SIZE 0x7E00\r
124 #define ROM_SIZE 0x78000\r
125 #define VRAM_SIZE 0x0000\r
126 #define VRAM_ROW 0\r
127 #define VRAM_COLUMN 0\r
128 #define CGROM_SIZE 0x0000\r
129 #define PROTECT_SIZE 0x0000\r
130 \r
131                                 /*************************************/\r
132                                 /** section ".chip_info"            **/\r
133                                 /*************************************/\r
134         .section .chip_info,"a"\r
135         .space  0xb8,0x00\r
136                                 /*************************************/\r
137                                 /** B8-BB : User option address     **/\r
138                                 /*************************************/\r
139         .word   0x00000\r
140         .global __reset_vector\r
141 #if 0x00000==0\r
142         .equ    __reset_vector,0x08000\r
143 #else\r
144         .equ    __reset_vector,0x00000\r
145 #endif\r
146                                 /*************************************/\r
147                                 /** BC-BF : Flash Protect address   **/\r
148                                 /*************************************/\r
149 #if PROTECT_SIZE==0\r
150         .word   0x00000000\r
151 #else\r
152         .word   0x08000+ROM_SIZE-PROTECT_SIZE\r
153 #endif\r
154                                 /*************************************/\r
155                                 /** C0-CF : Fixed string            **/\r
156                                 /*************************************/\r
157         .ascii  "CHIPINFORMATION"\r
158 1:      .space  (0xd0-1b),0x00\r
159                                 /*************************************/\r
160                                 /** D0-DF : Chipname                **/\r
161                                 /*************************************/\r
162         .ascii  "LC59_32K"\r
163 2:      .space  (0xe0-2b),0x00\r
164                                 /*************************************/\r
165                                 /** E0-E1 : Format version(BCD4)    **/\r
166                                 /*************************************/\r
167         .byte   0x10, 0x00\r
168         .space  6, 0x00\r
169                                 /*************************************/\r
170                                 /** E8-F5 : Memory sizes            **/\r
171                                 /*************************************/\r
172         .byte   BCD4(ROM_SIZE/1024)\r
173         .byte   BCD6(RAM_SIZE)\r
174         .byte   BCD6(VRAM_SIZE)\r
175         .byte   BCD4(VRAM_ROW)\r
176         .byte   BCD4(VRAM_COLUMN)\r
177         .byte   BCD4(CGROM_SIZE/1024)\r
178         .space  3, 0x00\r
179                                 /*************************************/\r
180                                 /** F9 : Package type               **/\r
181                                 /*************************************/\r
182         .byte   0xff\r
183         .space  6, 0x00\r
184 \r
185                                 /*************************************/\r
186                                 /** In order to link BIOS in library**/\r
187                                 /*************************************/\r
188         .equ    dummy,__bios_entry\r