# %jp{オプションフラグ}%en{option flags}
-AFLAGS = -mcpu=v8.00.a
-CFLAGS = -mcpu=v8.00.a
+AFLAGS = -mcpu=v8.00.a -mlittle-endian
+CFLAGS = -mcpu=v8.00.a -mlittle-endian
ARFLAGS =
.align 2
.global _kernel_dis_int
_kernel_dis_int:
+ mfs r3, rmsr
+ andi r3, r3, -3
+ mts rmsr, r3
rtsd r15, 8
- msrclr r3, 0x2000
+ nop
.align 2
.global _kernel_ena_int
_kernel_ena_int:
+ mfs r3, rmsr
+ ori r3, r3, 2
+ mts rmsr, r3
rtsd r15, 8
- msrset r3, 0x2000
+ nop
/* end of file */
# %jp{リンカスクリプト}%en{linker script}
-LINK_SCRIPT = rom.lds
+LINK_SCRIPT = link.lds
# %jp{内蔵RAM}%en{internal RAM}
# %jp{オプションフラグ}%en{option flags}
-AFLAGS = -mcpu=v8.00.a
-CFLAGS = -mcpu=v8.00.a
-LNFLAGS = -mcpu=v8.00.a
-# -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
+AFLAGS = -mcpu=v8.00.a -mlittle-endian
+CFLAGS = -mcpu=v8.00.a -mlittle-endian
+LNFLAGS = -mcpu=v8.00.a -mlittle-endian -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
# %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
# --------------------------------------
# %jp{アセンブラファイルの追加}%en{assembry sources}
-#ASRCS += ./crt0.S
+ASRCS += ./crt0.S
# %jp{C言語ファイルの追加}%en{C sources}
--- /dev/null
+/* ------------------------------------------------------------------------ */
+/* Hyper Operating System V4 Advance */
+/* Sample program for ADuC7000 series */
+/* */
+/* Copyright (C) 1998-2007 by Project HOS */
+/* http://sourceforge.jp/projects/hos/ */
+/* ------------------------------------------------------------------------ */
+
+
+ .extern _kernel_int_isp
+ .extern ___data
+ .extern ___data_end
+ .extern ___bss
+ .extern ___bss_end
+ .extern main
+
+ .global _reset_handler
+
+ .text
+
+
+
+/************************************************
+ リセットハンドラ
+************************************************/
+ .align 2
+_reset_handler:
+ /* スタック設定 */
+ lwi r1, r0, _kernel_int_isp
+
+ addik r3, r0, ___data
+ addik r4, r0, ___data_end
+ addik r5, r0, ___data_ro
+
+ /* DATA領域のコピー */
+ cmpu r18, r4, r3
+ bgei r18, data_loop_end
+data_loop:
+ lwi r6, r5, 0
+ swi r6, r3, 0
+ addik r3, r3, 4
+ cmpu r18, r4, r3
+ bltid r18, data_loop
+ addik r5, r5, 4
+data_loop_end:
+
+ /* BSS領域の初期化 */
+ lwi r3, r0, ___bss
+ lwi r4, r0, ___bss_end
+ cmpu r18,r4, r3
+ bgei r18, bss_loop_end
+bss_loop:
+ swi r0, r3, 0
+ addik r3, r3, 4
+ cmpu r18, r4, r3
+ blti r18, bss_loop
+bss_loop_end:
+
+
+ /* main関数の呼び出し */
+ brlid r15, main
+ nop
+
+exit_loop:
+ bri exit_loop
+
+
+
+/* end of file */
--- /dev/null
+ENTRY(_reset_handler)
+
+MEMORY
+{
+ vector : o = 0x00000000, l = 0x00000050
+ ro : o = 0x00000100, l = 0x00007f00
+ rw : o = 0x00008000, l = 0x00008000
+}
+
+SECTIONS
+{
+ .vector :
+ {
+ ___vector = . ;
+ */vectors.o(.text)
+ FILL(0xff)
+ ___vector_end = . ;
+ } > vector
+ .text :
+ {
+ ___text = . ;
+ *(.text)
+ *(.strings)
+ *(.rodata*)
+ *(.glue*)
+ ___text_end = . ;
+ } > ro
+ .tors :
+ {
+ . = ALIGN(4);
+ ___ctors = . ;
+ *(.ctors)
+ ___ctors_end = . ;
+ ___dtors = . ;
+ *(.dtors)
+ ___dtors_end = . ;
+ } > ro
+ data : AT (ADDR(.tors) + SIZEOF(.tors))
+ {
+ ___data_ro = ADDR(.tors) + SIZEOF(.tors);
+ ___data = . ;
+ *(.data)
+ ___data_end = . ;
+ } > rw
+ .bss :
+ {
+ ___bss = . ;
+ *(.bss)
+ *(COMMON)
+ ___bss_end = . ;
+ } >rw
+}
+