HOS-V4 Advance の開発リポジトリ
Revision | 148c081b57716cc4ce564bf1d169224a380e0b6c (tree) |
---|---|
Zeit | 2011-04-05 21:51:43 |
Autor | ryuz <ryuz@user...> |
Commiter | ryuz |
add MicroBlaze
@@ -61,8 +61,8 @@ SRC_DIRS += $(SRC_PROC_DIR) $(SRC_PROC_DIR) $(SRC_PROC_CC_DIR) $(SRC_IRC_DIR) $( | ||
61 | 61 | |
62 | 62 | |
63 | 63 | # %jp{オプションフラグ}%en{option flags} |
64 | -AFLAGS = -mcpu=v8.00.a | |
65 | -CFLAGS = -mcpu=v8.00.a | |
64 | +AFLAGS = -mcpu=v8.00.a -mlittle-endian | |
65 | +CFLAGS = -mcpu=v8.00.a -mlittle-endian | |
66 | 66 | ARFLAGS = |
67 | 67 | |
68 | 68 |
@@ -17,8 +17,11 @@ | ||
17 | 17 | .align 2 |
18 | 18 | .global _kernel_dis_int |
19 | 19 | _kernel_dis_int: |
20 | + mfs r3, rmsr | |
21 | + andi r3, r3, -3 | |
22 | + mts rmsr, r3 | |
20 | 23 | rtsd r15, 8 |
21 | - msrclr r3, 0x2000 | |
24 | + nop | |
22 | 25 | |
23 | 26 | |
24 | 27 |
@@ -17,8 +17,11 @@ | ||
17 | 17 | .align 2 |
18 | 18 | .global _kernel_ena_int |
19 | 19 | _kernel_ena_int: |
20 | + mfs r3, rmsr | |
21 | + ori r3, r3, 2 | |
22 | + mts rmsr, r3 | |
20 | 23 | rtsd r15, 8 |
21 | - msrset r3, 0x2000 | |
24 | + nop | |
22 | 25 | |
23 | 26 | |
24 | 27 | /* end of file */ |
@@ -46,7 +46,7 @@ include $(KERNEL_MAKINC_DIR)/common.inc | ||
46 | 46 | |
47 | 47 | |
48 | 48 | # %jp{リンカスクリプト}%en{linker script} |
49 | -LINK_SCRIPT = rom.lds | |
49 | +LINK_SCRIPT = link.lds | |
50 | 50 | |
51 | 51 | |
52 | 52 | # %jp{内蔵RAM}%en{internal RAM} |
@@ -62,10 +62,9 @@ SRC_DIRS += . .. | ||
62 | 62 | |
63 | 63 | |
64 | 64 | # %jp{オプションフラグ}%en{option flags} |
65 | -AFLAGS = -mcpu=v8.00.a | |
66 | -CFLAGS = -mcpu=v8.00.a | |
67 | -LNFLAGS = -mcpu=v8.00.a | |
68 | -# -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT) | |
65 | +AFLAGS = -mcpu=v8.00.a -mlittle-endian | |
66 | +CFLAGS = -mcpu=v8.00.a -mlittle-endian | |
67 | +LNFLAGS = -mcpu=v8.00.a -mlittle-endian -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT) | |
69 | 68 | |
70 | 69 | |
71 | 70 | # %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions} |
@@ -88,7 +87,7 @@ TARGET_BIN = $(TARGET).$(EXT_BIN) | ||
88 | 87 | # -------------------------------------- |
89 | 88 | |
90 | 89 | # %jp{アセンブラファイルの追加}%en{assembry sources} |
91 | -#ASRCS += ./crt0.S | |
90 | +ASRCS += ./crt0.S | |
92 | 91 | |
93 | 92 | |
94 | 93 | # %jp{C言語ファイルの追加}%en{C sources} |
@@ -0,0 +1,69 @@ | ||
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 | + | |
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 | + lwi r3, r0, ___bss | |
49 | + lwi 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 */ |
@@ -0,0 +1,53 @@ | ||
1 | +ENTRY(_reset_handler) | |
2 | + | |
3 | +MEMORY | |
4 | +{ | |
5 | + vector : o = 0x00000000, l = 0x00000050 | |
6 | + ro : o = 0x00000100, l = 0x00007f00 | |
7 | + rw : o = 0x00008000, l = 0x00008000 | |
8 | +} | |
9 | + | |
10 | +SECTIONS | |
11 | +{ | |
12 | + .vector : | |
13 | + { | |
14 | + ___vector = . ; | |
15 | + */vectors.o(.text) | |
16 | + FILL(0xff) | |
17 | + ___vector_end = . ; | |
18 | + } > vector | |
19 | + .text : | |
20 | + { | |
21 | + ___text = . ; | |
22 | + *(.text) | |
23 | + *(.strings) | |
24 | + *(.rodata*) | |
25 | + *(.glue*) | |
26 | + ___text_end = . ; | |
27 | + } > ro | |
28 | + .tors : | |
29 | + { | |
30 | + . = ALIGN(4); | |
31 | + ___ctors = . ; | |
32 | + *(.ctors) | |
33 | + ___ctors_end = . ; | |
34 | + ___dtors = . ; | |
35 | + *(.dtors) | |
36 | + ___dtors_end = . ; | |
37 | + } > ro | |
38 | + data : AT (ADDR(.tors) + SIZEOF(.tors)) | |
39 | + { | |
40 | + ___data_ro = ADDR(.tors) + SIZEOF(.tors); | |
41 | + ___data = . ; | |
42 | + *(.data) | |
43 | + ___data_end = . ; | |
44 | + } > rw | |
45 | + .bss : | |
46 | + { | |
47 | + ___bss = . ; | |
48 | + *(.bss) | |
49 | + *(COMMON) | |
50 | + ___bss_end = . ; | |
51 | + } >rw | |
52 | +} | |
53 | + |