OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / sample / arm / ez_arm7 / gcc / crt0.S
1 /* ------------------------------------------------------------------------ */
2 /*  Hyper Operating System V4 Advance                                       */
3 /*    Sample program for ADuC7000 series                                    */
4 /*                                                                          */
5 /*                                  Copyright (C) 1998-2007 by Project HOS  */
6 /*                                  http://sourceforge.jp/projects/hos/     */
7 /* ------------------------------------------------------------------------ */
8
9
10                                 .extern         __kernel_int_isp
11                                 .extern         ___data
12                                 .extern         ___data_end
13                                 .extern         ___bss
14                                 .extern         ___bss_end
15                                 .extern         main
16
17                                 .global         _reset_handler
18                                 .global         __main
19
20
21                                 .text
22
23 #define Mode_USR                0x10
24 #define Mode_IRQ                0x12
25 #define Mode_FIQ                0x11
26 #define Mode_SVC                0x13
27 #define Mode_UND                0x1b
28 #define Mode_SYS                0x1f
29 #define I_Bit                   0x80
30 #define F_Bit                   0x40
31 #define T_Bit                   0x20
32
33
34 /************************************************
35   リセットハンドラ
36 ************************************************/
37                                 .align          4
38 _reset_handler: 
39                                 /* モード設定 */
40                                 msr             cpsr_c, #(Mode_SYS | F_Bit | I_Bit)
41                                 
42                                 /* スタック仮設定 */
43                                 ldr             r0, =_kernel_int_isp
44                                 ldr     sp, [r0]
45                                 
46                                 
47                                 /* DATA領域のコピー */
48                                 ldr             r0, =___data_rom
49                                 ldr             r1, =___data
50                                 ldr             r2, =___data_end
51 data_loop:              
52                                 cmp             r1, r2
53                                 ldrcc   r3, [r0], #4
54                                 strcc   r3, [r1], #4
55                                 bcc             data_loop
56                                 
57                                 
58                                 /* BSS領域の初期化 */
59                                 ldr             r0, =___bss
60                                 ldr             r1, =___bss_end
61                                 mov             r2, #0
62 bss_loop:               
63                                 cmp             r0, r1
64                                 strcc   r2, [r0], #4
65                                 bcc             bss_loop
66                                 
67                                 
68                                 /* main関数の呼び出し */
69                                 bl              main
70 end_loop:
71                                 b               end_loop
72
73
74 __main:
75                                 bx              lr
76
77
78
79                                 .end
80
81
82 /* end of file */