OSDN Git Service

add Simple Microblaze Microcontroler sample
[hos/hos-v4a.git] / sample / mb / smm / gcc / crt0.S
1 /* ------------------------------------------------------------------------ */
2 /*  Hyper Operating System V4 Advance                                       */
3 /*    Sample program for MicroBlaze                                         */
4 /*                                                                          */
5 /*                                  Copyright (C) 1998-2011 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
19                                 .text
20
21
22
23 /************************************************
24   リセットハンドラ
25 ************************************************/
26                                 .align          2
27 _reset_handler: 
28                                 /* スタック設定 */
29                                 lwi             r1, r0, _kernel_int_isp
30                                 
31                                 addik   r3, r0, ___data
32                                 addik   r4, r0, ___data_end
33                                 addik   r5, r0, ___data_ro
34                                 
35                                 /* DATA領域のコピー */
36                                 cmpu    r18, r4, r3
37                                 bgei    r18, data_loop_end
38 data_loop:              
39                                 lwi             r6, r5, 0
40                                 swi             r6, r3, 0
41                                 addik   r3, r3, 4
42                                 cmpu    r18, r4, r3
43                                 bltid   r18, data_loop
44                                 addik   r5, r5, 4
45 data_loop_end:
46
47                                 /* BSS領域の初期化 */
48                                 addik   r3, r0, ___bss
49                                 addik   r4, r0, ___bss_end
50                                 cmpu    r18,r4, r3
51                                 bgei    r18, bss_loop_end
52 bss_loop:
53                                 swi             r0, r3, 0
54                                 addik   r3, r3, 4
55                                 cmpu    r18, r4, r3
56                                 blti    r18, bss_loop
57 bss_loop_end:
58                                 
59                                 
60                                 /* main関数の呼び出し */
61                                 brlid   r15, main
62                                 nop
63                                 
64 exit_loop:
65                                 bri             exit_loop
66
67
68
69 /* end of file */