space:= $(empty) $(empty)
+
+# %jp{実行ファイル生成}%en{Executable file}
+$(TARGET_EXE): $(OBJS) $(LIBS)
+ $(CMD_RM) -f $(TARGET_EXE)
+ $(CMD_ECHO) "-rom D=R" > $(OBJS_DIR)/linksub.txt
+ $(CMD_ECHO) "-list $(TARGET).map" >> $(OBJS_DIR)/linksub.txt
+ $(CMD_ECHO) "-SHow SY,R,X" >> $(OBJS_DIR)/linksub.txt
+ $(CMD_ECHO) "-Input=$(subst $(space),$(comma),$(strip $(OBJS)))" >> $(OBJS_DIR)/linksub.txt
+ $(CMD_ECHO) "-LIB=$(subst $(space),$(comma),$(strip $(LIBS)))" >> $(OBJS_DIR)/linksub.txt
+ $(CMD_ECHO) "-start=VECTTBL/$(SECTION_VECT),P,C,C\$$BSEC,C\$$DSEC,D/$(SECTION_ROM),B,R,S/$(SECTION_RAM)" >> $(OBJS_DIR)/linksub.txt
+ $(CMD_ECHO) "-output=$(TARGET_EXE)" >> $(OBJS_DIR)/linksub.txt
+ $(CMD_LINK) -SU=$(OBJS_DIR)/linksub.txt
+
+
+# %jp{ASCII形式ファイル生成}%en{ASCII file}
+$(TARGET_ASC): $(TARGET_EXE)
+ $(CMD_ECHO) "-input=$(TARGET_EXE)" > $(OBJS_DIR)/ascsub.txt
+ $(CMD_ECHO) "-form stype" >> $(OBJS_DIR)/ascsub.txt
+ $(CMD_ECHO) "-output $(TARGET_ASC)" >> $(OBJS_DIR)/ascsub.txt
+ $(CMD_OBJCNV) -SU=$(OBJS_DIR)/ascsub.txt
+
+
# %jp{ライブラリ生成}
$(TARGET_LIB): $(OBJS)
$(CMD_RM) -f $(TARGET_LIB)
+++ /dev/null
-; ---------------------------------------------------------------------------
-; Hyper Operating System V4 Advance
-;
-; @file armctx.s
-; @brief %en{コンテキスト制御(ARM v5 アーキテクチャ)}%jp{ARM v5}
-;
-; Copyright (C) 1998-2006 by Project HOS
-; http://sourceforge.jp/projects/hos/
-; ---------------------------------------------------------------------------
-
-
-
-; ---- プロセッサモード定義 ----
-Mode_USR EQU 0x10 ; USR モード
-Mode_FIQ EQU 0x11 ; FIQ モード
-Mode_IRQ EQU 0x12 ; IRQ モード
-Mode_SVC EQU 0x13 ; SVC モード
-Mode_ABT EQU 0x17 ; ABT モード
-Mode_UND EQU 0x1b ; UND モード
-Mode_SYS EQU 0x1f ; SYS モード
-Mode_MASK EQU 0x1f ; モードビットマスク
-
-
-; ---- フラグ定義 ----
-T_Bit EQU 0x20 ; T ビット
-F_Bit EQU 0x40 ; F ビット
-I_Bit EQU 0x80 ; I ビット
-
-
-
- EXPORT _kernel_ena_int ; 割り込み許可
- EXPORT _kernel_dis_int ; 割り込み禁止
- EXPORT _kernel_wai_int ; CPUのアイドル処理
- EXPORT _kernel_cre_ctx ; 実行コンテキストの作成
- EXPORT _kernel_sta_ctx ; 実行コンテキストの開始
- EXPORT _kernel_rst_ctx ; 実行コンテキストのリスタート
- EXPORT _kernel_swi_ctx ; 実行コンテキストの切替
-
-
- PRESERVE8
- AREA code, CODE, READONLY
-
- ALIGN
- CODE32
-; -----------------------------------------------
-; 割り込み許可
-; void _kernel_ena_int(void)
-; -----------------------------------------------
-_kernel_ena_int
- mrs r0, cpsr ; cpsr取得
- bic r0, r0, #F_Bit:OR:I_Bit ; FビットとIビットをクリア
- msr cpsr_c, r0 ; cpsr設定
- bx lr ; リターン
-
-
-; -----------------------------------------------
-; 割り込み禁止
-; void hospac_dis_int(void)
-; -----------------------------------------------
-_kernel_dis_int
- mrs r0, cpsr ; cpsr取得
- orr r0, r0, #F_Bit:OR:I_Bit ; FビットとIビットを設定
- msr cpsr_c, r0 ; cpsr設定
- bx lr ; リターン
-
-
-; -----------------------------------------------
-; 割り込み待ち(CPUのアイドル処理)
-; void _kernel_wai_int(void);
-; -----------------------------------------------
-_kernel_wai_int
- mov r0, #0
- mcr p15, 0, r0, c7, c0, 4 ; WaitForInterrupt
- b _kernel_wai_int
-
-
-
- CODE16
-
-; -----------------------------------------------
-; 実行コンテキストの作成
-; void _kernel_cre_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb, /* r0 :作成するコンテキスト */
-; VP isp, /* r1 :スタックポインタ */
-; FP entry, /* r2 :実行アドレス */
-; VP_INT par1, /* r3 :実行時パラメータ */
-; VP_INT par2) /* sp[0]:実行時パラメータ */
-; -----------------------------------------------
-_kernel_cre_ctx
- sub r1, #36 ; スタックを確保
- str r2, [r1, #0] ; r4 部分にentryを設定
- str r3, [r1, #4] ; r5 部分にpar1を設定
- ldr r2, [sp, #0] ; par2を取り出し
- str r2, [r1, #8] ; r6 部分にpar2を設定
- adr r1, ctx_entry ; エントリーアドレス設定
- add r1, #1 ; Thumbモードアドレスとして設定
- str r1, [r1, #32] ; lr 部分にエントリーアドレスを設定
- str r1, [r0] ; ctxcb に新 sp を保存
- bx lr ; リターン
-
-; -----------------------------------------------
-; 実行コンテキストエントリーアドレス
-; -----------------------------------------------
-ctx_entry
- mov r0, r5 ; par1を設定
- mov r1, r6 ; par2を設定
- bx r4 ; entry を実行
-
-
-
-
-; -----------------------------------------------
-; 実行コンテキストのリスタート
-; void _kernel_rst_ctx(
-; VP_INT par1, /* r0 :実行時パラメータ */
-; VP_INT par2, /* r1 :実行時パラメータ */
-; FP entry, /* r2 :実行アドレス */
-; VP isp) /* r3 :スタックポインタ */
-; -----------------------------------------------
-_kernel_rst_ctx
- mov sp, r3 ; スタックを初期値にリセット
- bx r2 ; エントリーアドレスから再開始
-
-
-
- ALIGN
- CODE32
-
- ALIGN
- CODE32
-
-; -----------------------------------------------
-; 実行コンテキストの切替
-; void _kernel_swi_ctx(
-; _KERNEL_T_CTXCB *pk_ctxinf_nxt, /* r0 : 現在のコンテキストの保存先 */
-; _KERNEL_T_CTXCB *pk_ctxinf_now) /* r1 : 切り替えるコンテキスト */
-; -----------------------------------------------
-_kernel_swi_ctx
- stmfd sp!, {r4-r11, lr} ; レジスタ保存
- str sp, [r1] ; スタックポインタ保存
- ; ---- そのまま _kernel_sta_ctx に続ける
-
-
-; -----------------------------------------------
-; 実行コンテキストの開始
-; void _kernel_sta_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb) /* r0: 実行を開始するコンテキスト */
-; -----------------------------------------------
-_kernel_sta_ctx
- ldr sp, [r0] ; スタックポインタ復帰
- ldmfd sp!, {r4-r11, pc} ; レジスタ復帰
-
-
- END
-
-
-
-; ---------------------------------------------------------------------------
-; End of file
-; ---------------------------------------------------------------------------
+++ /dev/null
-
-; ---- プロセッサモード定義 ----
-Mode_USR EQU 0x10 ; USR モード
-Mode_FIQ EQU 0x11 ; FIQ モード
-Mode_IRQ EQU 0x12 ; IRQ モード
-Mode_SVC EQU 0x13 ; SVC モード
-Mode_ABT EQU 0x17 ; ABT モード
-Mode_UND EQU 0x1b ; UND モード
-Mode_SYS EQU 0x1f ; SYS モード
-Mode_MASK EQU 0x1f ; モードビットマスク
-
-; ---- フラグ定義 ----
-T_Bit EQU 0x20 ; T ビット
-F_Bit EQU 0x40 ; F ビット
-I_Bit EQU 0x80 ; I ビット
-
-
-; ---- 割り込みハンドラ番号 ----
-INHNO_IRQ EQU 0
-INHNO_FIQ EQU 1
-
-
- IMPORT _kernel_int_isp
- IMPORT _kernel_sta_int
- IMPORT _kernel_end_int
- IMPORT _kernel_exe_inh
- EXPORT _kernel_int_armirq ; IRQハンドラ
-
-
- PRESERVE8
- AREA inthdr_code, CODE, READONLY
- CODE32
-
-; ----------------------------------------------
-; IRQ ハンドラ
-; ----------------------------------------------
-_kernel_int_armirq
- ; ---- レジスタ退避
- msr cpsr_c, #Mode_SYS:OR:F_Bit:OR:I_Bit ; SYSモードに移行
- stmfd sp!, {r0-r3, r12, lr} ; SYSモードの汎用レジスタ退避
- msr cpsr_c, #Mode_IRQ:OR:F_Bit:OR:I_Bit ; IRQモードに移行
- mov r0, lr ; lr_irq 取り出し
- mrs r1, spsr ; spsr_irq 取り出し
- msr cpsr_c, #Mode_SYS:OR:F_Bit:OR:I_Bit ; SYSモードに移行
- stmfd sp!, {r0, r1} ; lr_irq, spsr_irq退避
-
- ; ---- 多重割込み判定
- ldr r0, =_kernel_int_nst_cnt ; 割り込みネストカウンタのアドレス取得
- ldrb r1, [r0] ; 割り込みネストカウンタ値取得
- subs r1, r1, #1 ; カウンタ減算(0判定が楽なのでマイナス方向にカウント)
- strb r1, [r0] ; 割り込みネストカウンタ値設定
- bcs multiple_int ; 多重割り込みなら分岐
-
- ; ---- 割り込み用スタックに入れ替え
- ldr r2, _kernel_int_isp ; 割り込み用スタックの初期値アドレスを取得
- mov r1, sp ; タスクのSPを保存
- ldr sp, [r2] ; 割り込み用スタックに切り替え
- stmfd sp!, {r0, r1} ; タスクのSPを割り込み用スタックに保存(8の倍数になるようにr1も)
-
- ; ---- 割り込み処理
- bl _kernel_sta_int ; 割り込み開始
-
- ; ---- 割り込みハンドラ実行
- mov r0, #INHNO_IRQ
- bl _kernel_exe_inh
-
- ; ---- 割り込み処理の終了設定
- ldmfd sp!, {r0, r1} ; 汎用レジスタ復帰
- mov sp, r1 ; スタックを戻す
-
- mov r1, #0 ; 割り込みネストカウンタを0に戻す
- strb r1, [r0] ; 割り込みネストカウンタ値設定
-
- ; ---- 遅延ディスパッチ処理
- bl _kernel_end_int ; 割り込み終了処理
-
-return_int
- ; ---- 復帰処理
- ldmfd sp!, {r0, r1} ; lr_irq, spsr_irq 復帰
- msr cpsr_c, #Mode_IRQ:OR:F_Bit:OR:I_Bit ; IRQモードに移行
- mov lr, r0 ; lr_irq 復帰
- msr spsr_csxf, r1 ; spsr_irq 復帰
- msr cpsr_c, #Mode_SYS:OR:F_Bit:OR:I_Bit ; SYSモードに移行
- ldmfd sp!, {r0-r3, r12, lr} ; SYSモードの汎用レジスタ復帰
- msr cpsr_c, #Mode_IRQ:OR:F_Bit:OR:I_Bit ; IRQモードに移行
- subs pc, lr, #4 ; 割込み復帰
-
-
- ; ---- 多重割り込み処理
-multiple_int
- ; ---- スタックを8バイトアライメントに移動
- mov r1, sp ; 割り込み発生時のSYSモードのSPに8の倍数の保証されないので
- bic sp, sp, #0x7
- stmfd sp!, {r0, r1} ; タスクのSPを割り込み用スタックに保存(8の倍数になるようにr1も)
-
- ; ---- 割り込みハンドラ実行
- mov r0, #INHNO_IRQ
- bl _kernel_exe_inh
-
- ; ---- スタックアライメント復帰
- ldmfd sp!, {r0, r1} ; 汎用レジスタ復帰
- mov sp, r1
-
- ; ---- 割り込みカウンタ復帰
- ldrb r1, [r0]
- add r1, r1, #1
- strb r1, [r0]
-
- b return_int ; 復帰処理
-
-
-
- AREA data, DATA, ALIGN=0
-_kernel_int_nst_cnt
- DCB 0x00
-
-
- END
-
-
-; ---------------------------------------------------------------------------
-; End of file
-; ---------------------------------------------------------------------------
+++ /dev/null
-; ---------------------------------------------------------------------------
-; Hyper Operating System V4 Advance μITRON4.0仕様 Real-Time OS
-; コンテキスト制御
-;
-; Copyright (C) 1998-2006 by Project HOS
-; http://sourceforge.jp/projects/hos/
-; ---------------------------------------------------------------------------
-
-
-
- .EXPORT __kernel_dis_int ; 割り込み禁止
- .EXPORT __kernel_ena_int ; 割り込み許可
- .EXPORT __kernel_cre_ctx ; 実行コンテキストの作成
- .EXPORT __kernel_swi_ctx ; 実行コンテキストの切替
- .IMPORT __kernel_h83_imsk ; 割り込みマスク
-
-
- .SECTION P, CODE, ALIGN=2
-
-
-; -----------------------------------------------
-; 割り込み禁止
-; void _kernel_dis_int(void)
-; -----------------------------------------------
- .STACK __kernel_dis_int=4
-__kernel_dis_int:
- orc #h'c0, ccr ; 割り込みの禁止
- rts
-
-
-; -----------------------------------------------
-; 割り込み許可
-; void _kernel_ena_int(void)
-; -----------------------------------------------
- .STACK __kernel_ena_int=4
-__kernel_ena_int:
- mov.b @__kernel_h83_imsk, r0l
- ldc.b r0l, ccr ; 割り込みの許可
- rts
-
-
-; -----------------------------------------------
-; 実行コンテキストエントリーアドレス
-; -----------------------------------------------
-ctx_entry:
- mov.l er3, er0 ; 実行時パラメータを第一引数に設定
- mov.l er4, er1 ; 実行時パラメータを第一引数に設定
- jmp @er2 ; 実行アドレスにジャンプ
-
-
-; -----------------------------------------------
-; 実行コンテキストの作成
-; _kernel_cre_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb, 作成するコンテキスト [er0]
-; VP isp, 初期スタックポインタ [er1]
-; FP entry, 実行アドレス [er2]
-; VP_INT par1, 実行時パラメータ1 [@(4, er7)]
-; VP_INT par2) 実行時パラメータ2 [@(8, er7)]
-; -----------------------------------------------
- .STACK __kernel_cre_ctx=12
-__kernel_cre_ctx:
- sub.l #24, er1 ; エントリーポイント+er2〜er6 までの退避分
- mov.l er2, @(0, er1) ; 実行アドレスの格納(er2部分)
- mov.l @(4, er7), er2
- mov.l er2, @(4, er1) ; 実行時パラメータ1の格納(er3部分)
- mov.l @(8, er7), er2
- mov.l er2, @(8, er1) ; 実行時パラメータ1の格納(er4部分)
- mov.l #ctx_entry, er2
- mov.l er2, @(20, er1) ; 実行エントリーポイントの設定
- mov.l er1, @(0, er0) ; スタックポインタの格納
- rts
-
-
-; -----------------------------------------------
-; 実行コンテキストの切替
-; void _kernel_swi_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb_nxt, 切り替え先のコンテキスト [er0]
-; _KERNEL_T_CTXCB *pk_ctxcb_now) 現在のコンテキスト [er1]
-; -----------------------------------------------
- .STACK __kernel_swi_ctx=24
-__kernel_swi_ctx:
- push.l er2
- push.l er3
- push.l er4
- push.l er5
- push.l er6
- mov.l er7,@(0, er1) ; スタックポインタ保存
- ; ---- このまま _kernel_sta_ctx に続ける
-
-; -----------------------------------------------
-; 実行コンテキストの開始
-; void _kernel_sta_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb) 開始するコンテキスト [er0]
-; -----------------------------------------------
- .STACK __kernel_sta_ctx=4
-__kernel_sta_ctx:
- mov.l @(0, er0), er7 ; スタックポインタ復帰
- pop.l er6
- pop.l er5
- pop.l er4
- pop.l er3
- pop.l er2
- rts
-
-
-
- .END
+++ /dev/null
-; ---------------------------------------------------------------------------
-; Hyper Operating System V4 Advance μITRON4.0仕様 Real-Time OS
-; コンテキスト制御
-;
-; Copyright (C) 1998-2006 by Project HOS
-; http://sourceforge.jp/projects/hos/
-; ---------------------------------------------------------------------------
-
-
-
- .EXPORT __kernel_dis_int ; 割り込み禁止
- .EXPORT __kernel_ena_int ; 割り込み許可
- .EXPORT __kernel_wai_int ; 割り込み待ち
- .EXPORT __kernel_cre_ctx ; 実行コンテキストの作成
- .EXPORT __kernel_swi_ctx ; 実行コンテキストの切替
- .EXPORT __kernel_sta_ctx ; 実行コンテキストの開始
- .EXPORT __kernel_rst_ctx ; 実行コンテキストのリスタート
- .EXPORT __kernel_h83_imsk ; 割り込みマスク
-
-
- .SECTION P, CODE, ALIGN=2
-
-
-; -----------------------------------------------
-; 割り込み禁止
-; void _kernel_dis_int(void)
-; -----------------------------------------------
- .STACK __kernel_dis_int=4
-__kernel_dis_int:
- orc #h'c0, ccr ; 割り込みの禁止
- rts
-
-
-; -----------------------------------------------
-; 割り込み許可
-; void _kernel_ena_int(void)
-; -----------------------------------------------
- .STACK __kernel_ena_int=4
-__kernel_ena_int:
- mov.b @__kernel_h83_imsk, r0l
- ldc.b r0l, ccr ; 割り込みの許可
- rts
-
-;------------------------------------------------
-; 割り込み待ち
-; void _kernel_wai_int(void)
-;------------------------------------------------
- .STACK __kernel_wai_int=4
-__kernel_wai_int:
- ; sleep
- jmp @__kernel_wai_int
-
-
-
-; -----------------------------------------------
-; 実行コンテキストエントリーアドレス
-; -----------------------------------------------
-ctx_entry:
- mov.l er3, er0 ; 実行時パラメータを第一引数に設定
- mov.l er4, er1 ; 実行時パラメータを第一引数に設定
- jmp @er2 ; 実行アドレスにジャンプ
-
-
-; -----------------------------------------------
-; 実行コンテキストの作成
-; _kernel_cre_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb, 作成するコンテキスト [er0]
-; VP isp, 初期スタックポインタ [er1]
-; FP entry, 実行アドレス [@(4, er7)]
-; VP_INT par1, 実行時パラメータ1 [@(8, er7)]
-; VP_INT par2) 実行時パラメータ2 [@(12, er7)]
-; -----------------------------------------------
- .STACK __kernel_cre_ctx=12
-__kernel_cre_ctx:
- sub.l #24, er1 ; エントリーポイント+er2〜er6 までの退避分
- mov.l er1, @(0, er0) ; スタックポインタの格納
- mov.l #ctx_entry, er0
- mov.l er0, @(20, er1) ; 実行エントリーポイントの設定
- mov.l @(4, er7), er0
- mov.l er0, @(16, er1) ; 実行アドレスの格納(er2部分)
- mov.l @(8, er7), er0
- mov.l er0, @(12, er1) ; 実行時パラメータ1の格納(er3部分)
- mov.l @(12, er7), er0
- mov.l er0, @(8, er1) ; 実行時パラメータ1の格納(er4部分)
- rts
-
-
-; -----------------------------------------------
-; 実行コンテキストの切替
-; void _kernel_swi_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb_nxt, 切り替え先のコンテキスト [er0]
-; _KERNEL_T_CTXCB *pk_ctxcb_now) 現在のコンテキスト [er1]
-; -----------------------------------------------
- .STACK __kernel_swi_ctx=24
-__kernel_swi_ctx:
- stm.l (er2-er3), @-er7
- stm.l (er4-er6), @-er7
- mov.l er7,@(0, er1) ; スタックポインタ保存
- ; ---- このまま _kernel_sta_ctx に続ける
-
-; -----------------------------------------------
-; 実行コンテキストの開始
-; void _kernel_sta_ctx(
-; _KERNEL_T_CTXCB *pk_ctxcb) 開始するコンテキスト [er0]
-; -----------------------------------------------
- .STACK __kernel_sta_ctx=4
-__kernel_sta_ctx:
- mov.l @(0, er0), er7 ; スタックポインタ復帰
- ldm.l @er7+, (er4-er6)
- ldm.l @er7+, (er2-er3)
- rts
-
-
-;------------------------------------------------
-; 実行コンテキストのリスタート
-; void _kernel_rst_ctx(
-; VP_INT par1, 実行時パラメータ1 [er0]
-; VP_INT par2, 実行時パラメータ2 [er1]
-; VP isp, 初期スタックポインタ [@(4, er7)]
-; FP entry) 実行アドレス [@(8, er7)]
-;------------------------------------------------
- .STACK __kernel_rst_ctx=8
-__kernel_rst_ctx:
- mov.l @(4, er7), er3 ; 初期スタックポインタ
- mov.l @(8, er7), er4 ; 実行アドレス取り出し
- mov.l er3, er7 ; スタックポインタリセット
- jmp @r4 ; 実行アドレスに分岐
-
-
-
-
- .SECTION B, DATA, ALIGN=2
-
-__kernel_h83_imsk:
- .RES.B 1
-
-
- .END
+++ /dev/null
-; ---------------------------------------------------------------------------
-; Hyper Operating System V4 μITRON4.0仕様 Real-Time OS
-; プロセッサ抽象化コンポーネント (日立 H8/300H 用)
-; 割り込みハンドラ
-;
-; Copyright (C) 1998-2006 by Project HOS
-; http://sourceforge.jp/projects/hos/
-; ---------------------------------------------------------------------------
-
-
-
- .EXPORT __kernel_int_hdr
- .IMPORT __kernel_sta_inh ; 割り込み処理開始
- .IMPORT __kernel_end_inh ; 割り込み処理終了
- .IMPORT __kernel_exe_inh ; 割り込み処理実行
- .IMPORT __kernel_int_isp ; 割り込み用スタックアドレス
- .IMPORT __kernel_h83_imsk ; 現在の割り込みマスク値
-
-
-
- .SECTION P, CODE, ALIGN=2
-
-
-; -----------------------------------------------
-; 割り込み処理
-;
-; 割り込み発生時は er0 を push した後、er0 に
-; 割り込み番号をセットして、ここにジャンプする
-; -----------------------------------------------
-
-__kernel_int_hdr:
- ; ---- レジスタ保存
- push.l er1
-
- ; ---- 割り込みをマスク
- stc.b ccr, r1l ; ccr保存
- orc #h'c0, ccr ; 割込み全マスク
- and.b #h'c0, r1l
-
- ; -------- 多重割り込みの判別
- mov.b @__kernel_int_cnt, r1h
- bne multiple_int
-
- ; ======== 最初の割り込み ========
- ; ---- 割込みマスク値(_kernel_h83_imsk)を設定
- mov.b @__kernel_h83_imsk, r0h ; 古い割込みマスク値を保存
- mov.b r1l, @__kernel_h83_imsk ; 新しいマスク値を設定
-
- ; ---- 割り込みネストカウンタ設定
- mov.b #1, r1h
- mov.b r1h, @__kernel_int_cnt
-
- ; ---- スタックポインタの入れ替え
- mov.l er7, er1
- mov.l @__kernel_int_isp, er7
- push.l er1 ; 直前のスタックポインタを保存
-
- ; ---- 古い割込みマスク値(r0h)と割込み番号(r0l)の保存
- push.w r0
-
- ; ---- 割り込み処理の開始
- jsr @__kernel_sta_inh
-
- ; -------- 割り込みハンドラの処理
- mov.b @(1, er7), r0l ; スタックから割込み番号を取り出す
- extu.w r0
- extu.l er0
- jsr @__kernel_exe_inh
-
- ; ---- 古い割込みマスク値(r0h)と割込み番号(r0l)の復帰
- pop.w r0
-
- ; -------- スタックポインタ復帰
- mov.l @er7, er7
-
- ; -------- 割り込みネストカウンタクリア
- xor.b r1l, r1l
- mov.b r1l, @__kernel_int_cnt
-
- ; -------- 割り込みマスク値の復帰
- mov.b @(10, er7), r1l
- and.b #h'c0, r1l
- mov.b r1l, @__kernel_h83_imsk ; 割込み前の値に戻す
- cmp.b r1l, r0h
- bne return_int ; 割込み前処理中の多重割り込みなら後処理をカット
-
- ; -------- コンテキストスイッチ実施
- jsr @__kernel_end_inh
-
- ; -------- コンテキストスイッチの後処理
- mov.b @__kernel_h83_imsk, r0l ; マスク値取り出し
- mov.b @(10, er7), r1l
- and.b #h'3f, r1l
- or.b r0l, r1l
- mov.b r1l, @(10, er7) ; スタック上のCCRを更新
-
-return_int:
- ; -------- 復帰
- pop.l er1
- pop.l er0
- rte
-
-
- ; ======== 多重割り込み ========
-multiple_int:
- ; -------- 割り込みネストカウンタ加算
- add.b #1, r1h
- mov.b r1h, @__kernel_int_cnt
-
- ; ---- 割込みマスク値(_kernel_h83_imsk)を設定
- mov.b r1l, @__kernel_h83_imsk ; 新しいマスク値を設定
-
- ; -------- 割り込みハンドラ呼び出し
- jsr @__kernel_exe_inh
-
- ; -------- 割り込みネストカウンタ減算
- mov.b @__kernel_int_cnt, r1h
- dec.b r1h
- mov.b r1h, @__kernel_int_cnt
-
- ; -------- 復帰
- bra return_int
-
-
- .SECTION B, DATA, ALIGN=2
-
-__kernel_int_cnt:
- .RES.B 1
-
-
- .END
-
-; end of file
+# ----------------------------------------------------------------------------
+# Hyper Operating System V4 Advance
+#
+# Copyright (C) 1998-2006 by Project HOS
+# http://sourceforge.jp/projects/hos/
+# ----------------------------------------------------------------------------
-OS_DIR = ../../../..
+# %jp{ターゲット名}
TARGET ?= sample
-ifeq ($(ROM),Yes)
-TARGET := $(TARGET)_rom
-ADDR_VECT = 0
-ADDR_ROM = 0100
-ADDR_RAM = 0FFE140
+
+# %jp{ディレクトリ定義}
+OS_DIR = ../../../..
+KERNEL_DIR = $(OS_DIR)/kernel
+KERNEL_CFGRTR_DIR = $(OS_DIR)/cfgrtr/build/gcc
+KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake
+KERNEL_BUILD_DIR = $(KERNEL_DIR)/build/h8/h8300ha/ch38
+OBJS_DIR = objs_$(TARGET)
+
+# %jp{共通定義読込み}
+include $(KERNEL_MAKINC_DIR)/common.inc
+
+
+ifeq ($(RAM),Yes)
+# %jp{RAM実行(モニタプログラム利用を想定)}
+TARGET := $(TARGET)_ram
+SECTION_VECT = 0FFC040
+SECTION_ROM = 0FFC140
+SECTION_RAM = 0FFE140
else
-ADDR_VECT = 0FFC040
-ADDR_ROM = 0FFC140
-ADDR_RAM = 0FFE140
+SECTION_VECT = 0
+SECTION_ROM = 0100
+SECTION_RAM = 0FFE140
endif
+# %jp{フラグ設定}
+CFLAGS = -CP=300HA -DEBug
+AFLAGS = -CP=300HA -DEBug
+LNFLAGS =
+
-INC_DIR = $(OS_DIR)/kernel/include
+# %jp{出力ファイル名}
+TARGET_EXE = $(TARGET).$(EXT_EXE)
+TARGET_ASC = $(TARGET).$(EXT_ASC)
-# Tools
-CC = ch38
-ASM = asm38
-LINK = optlnk
+# %jp{標準ライブラリ}
+STD_LIB = stdlib.lib
-CFLAGS = -CP=300HA -DEBug -I=$(INC_DIR)
-AFLAGS = -CP=300HA -DEBug
-LFLAGS =
+# %jp{ch38用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/ch38_def.inc
-OBJS_DIR = objs
-OBJS = $(OBJS_DIR)/vcttbl.obj \
- $(OBJS_DIR)/startup.obj \
- $(OBJS_DIR)/dbsct.obj \
- $(OBJS_DIR)/kernel_cfg.obj \
- $(OBJS_DIR)/main.obj \
- $(OBJS_DIR)/sample.obj \
- $(OBJS_DIR)/ostimer.obj \
- $(OBJS_DIR)/sci1.obj \
+# --------------------------------------
+# %jp{ファイル設定}
+# --------------------------------------
+# %jp{ソースディレクトリ}
+SRC_DIRS += . ..
-OS_LIBS = $(OS_DIR)/kernel/build/h8/h8300ha/ch38/libhosv4a.lib
-OS_CFG = $(OS_DIR)/cfgrtr/build/gcc/h4acfg-h8300ha.exe
+# %jp{アセンブラファイルの追加}
+ASRCS += ./vcttbl.src \
+ ./startup.src \
-STD_LIBS = stdlib.lib
-VPATH = ..
+# %jp{C言語ファイルの追加}
+CSRCS += ./dbsct.c \
+ ../kernel_cfg.c \
+ ../main.c \
+ ../sample.c \
+ ../ostimer.c \
+ ../sci1.c
-all: mkdir_objs mk_kernel $(TARGET).abs
+# %jp{ライブラリの追加}
+LIBS += $(STD_LIB)
-$(TARGET).abs: $(OBJS) $(STD_LIBS) $(OS_LIBS)
- echo rom D=R > $(OBJS_DIR)/subcmd.txt
- echo list $(TARGET).map >> $(OBJS_DIR)/subcmd.txt
- echo -Input=$(OBJS) | sed "s/ /,/g" >> $(OBJS_DIR)/subcmd.txt
- echo -LIB=$(OS_LIBS),$(STD_LIBS) >> $(OBJS_DIR)/subcmd.txt
- echo "-start=VECTTBL/$(ADDR_VECT),P,C,C\$$BSEC,C\$$DSEC,D/$(ADDR_ROM),B,R,S/$(ADDR_RAM)" >> $(OBJS_DIR)/subcmd.txt
- echo -output=$(TARGET).abs >> $(OBJS_DIR)/subcmd.txt
- echo end >> $(OBJS_DIR)/subcmd.txt
- echo -input=$(TARGET).abs >> $(OBJS_DIR)/subcmd.txt
- echo form stype >> $(OBJS_DIR)/subcmd.txt
- echo output $(TARGET).mot >> $(OBJS_DIR)/subcmd.txt
- echo -exit >> $(OBJS_DIR)/subcmd.txt
- $(LINK) -SU=$(OBJS_DIR)/subcmd.txt
-$(STD_LIBS):
- lbg38 -OUTPut=$(STD_LIBS) $(CFLAGS) -REent
-mk_kernel:
- make -C $(OS_DIR)/kernel/build/h8/h8300ha/ch38 -f gmake.mak
+# --------------------------------------
+# %jp{ルール}
+# --------------------------------------
-mkdir_objs:
- @mkdir -p $(OBJS_DIR)
+.PHONY : all
+all: makeexe_all $(TARGET_EXE) $(TARGET_ASC)
-clean:
- rm -f $(OBJS) $(TARGET) ../kernel_cfg.c ../kernel_id.h
-mostlyclean: clean
- make -C $(OS_DIR)/kernel/build/h8/h8300ha/ch38 -f gmake.mak clean
+.PHONY : clean
+clean: makeexe_clean
+ rm -f $(TARGET_EXE) $(TARGET_ASC) $(OBJS) ../kernel_cfg.c ../kernel_id.h
-$(OBJS_DIR)/sample.obj: sample.c ../kernel_id.h
+
+.PHONY : mostlyclean
+mostlyclean: clean clean_kernel
+
+$(STD_LIB):
+ lbg38 -OUTPut=$(STD_LIB) $(CFLAGS) -REent
../kernel_cfg.c ../kernel_id.h: ../system.cfg
cpp -E ../system.cfg ../system.i
- $(OS_CFG) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
+ $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
+
+
+# %jp{実行ファイル生成用設定読込み}
+include $(KERNEL_MAKINC_DIR)/makeexe.inc
+
+# %jp{ch38用のルール定義読込み}
+include $(KERNEL_MAKINC_DIR)/ch38_rul.inc
+# --------------------------------------
+# %jp{依存関係}
+# --------------------------------------
-$(OBJS_DIR)/%.obj :: %.c
- $(CC) $(CFLAGS) $< -OB=$@ -List=$(@:%.obj=%.lst)
+$(OBJS_DIR)/sample.$(EXT_OBJ): ../sample.c ../kernel_id.h
-$(OBJS_DIR)/%.obj :: %.src
- $(ASM) $(AFLAGS) $< -OB=$@
+# end of file
# ----------------------------------------------------------------------------
# Hyper Operating System V4 Advance
-# makefile for sh2-sample
#
# Copyright (C) 1998-2006 by Project HOS
# http://sourceforge.jp/projects/hos/
# %jp{コンフィギュレータ定義}
KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-h8300ha
-# 出力ファイル名
+# %jp{出力ファイル名}
TARGET_EXE = $(TARGET).$(EXT_EXE)
TARGET_ASC = $(TARGET).$(EXT_ASC)
# %jp{ファイル設定}
# --------------------------------------
-# ソースディレクトリ
+# %jp{ソースディレクトリ}
SRC_DIRS += . ..
-# アセンブラファイルの追加
+# %jp{アセンブラファイルの追加}
ASRCS += ./vector.S \
./crt0.S
# %jp{実行ファイル生成用設定読込み}
include $(KERNEL_MAKINC_DIR)/makeexe.inc
-# %jp{shc用のルール定義読込み}
+# %jp{gcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/gcc_rul.inc
/** %jp{適当な時間待つ} */
void rand_wait(void)
{
- dly_tsk(rand() % 1000 + 1);
+ int r;
+
+ wai_sem(SEMID_RAND);
+ r = rand();
+ sig_sem(SEMID_RAND);
+
+ dly_tsk((r % 1000) + 10);
}
KERNEL_SYS_STK(256, NULL);
KERNEL_INT_STK(512, NULL);
KERNEL_MAX_TSKID(5);
-KERNEL_MAX_SEMID(5);
+KERNEL_MAX_SEMID(6);
KERNEL_MAX_FLGID(2);
KERNEL_MAX_MBXID(2);
KERNEL_MAX_MPFID(2);
-KERNEL_MAX_ISRID(2);
+KERNEL_MAX_ISRID(4);
/* %jp{OSタイマの設定}%en{OS timer} */
CRE_SEM(3, {TA_TFIFO, 1, 1});
CRE_SEM(4, {TA_TFIFO, 1, 1});
CRE_SEM(5, {TA_TFIFO, 1, 1});
+CRE_SEM(SEMID_RAND, {TA_TFIFO, 1, 1});
/* end of file */
+++ /dev/null
-/* ------------------------------------------------------------------------ */
-/* Hyper Operating System V4 サンプルプログラム */
-/* スタートアップモジュール (日立 SH2 gcc 用) */
-/* */
-/* Copyright (C) 1998-2002 by Project HOS */
-/* http://sourceforge.jp/projects/hos/ */
-/* ------------------------------------------------------------------------ */
-
-
- .extern _main
- .extern _DATA_ROM
- .extern _DATA_START
- .extern _DATA_END
- .extern _BSS_START
- .extern _BSS_END
-
- .global _pwr_reset
- .global _man_reset
- .global ___main
-
-
-
-/************************************************
- リセットハンドラ
-************************************************/
- .section .text
- .align 4
-_pwr_reset:
-_man_reset:
- /* DATA領域のコピー */
- mov.l l_data_rom, r0
- mov.l l_data_start, r1
- mov.l l_data_end, r2
- cmp/hs r2, r1
- bt data_end
-data_loop:
- mov.l @r0+, r3
- mov.l r3, @r1
- add #4, r1
- cmp/hs r2, r1
- bf data_loop
-data_end:
-
- /* BSS領域の初期化 */
- mov.l l_bss_start, r0
- mov.l l_bss_end, r1
- cmp/hs r1, r0
- bt bss_end
- mov #0, r2
-bss_loop:
- mov.l r2, @r0
- add #4, r0
- cmp/hs r1, r0
- bf bss_loop
-bss_end:
-
- /* main関数の呼び出し */
- mov.l l_main, r8
- jsr @r8
- nop
-end_loop:
- bra end_loop
- nop
-
- /* __main */
-___main:
- rts /* 何もしない */
- nop
-
- .align 4
-l_data_rom:
- .long _DATA_ROM
-l_data_start:
- .long _DATA_START
-l_data_end:
- .long _DATA_END
-l_bss_start:
- .long _BSS_START
-l_bss_end:
- .long _BSS_END
-l_main:
- .long _main
-
-
-
-/************************************************
- カーネル用スタックポインタ定義
-************************************************/
- .global _kernel_int_sp
- .section .rodata
- .align 4
-_kernel_int_sp:
- .long _stack /* 割り込み時の er7 保存用 */
-
-
-
-/************************************************
- スタック領域
-************************************************/
- .section .stack
- .global _stack
-
- .align 4
-_stack: .long 1
-
-
-
- .end
-
-
-/* ------------------------------------------------------------------------ */
-/* Copyright (C) 1998-2002 by Project HOS */
-/* ------------------------------------------------------------------------ */
+++ /dev/null
-
-
-TARGET ?= sample.out
-
-# Tools
-CC = sh-elf-gcc
-ASM = sh-elf-gcc
-LINK = sh-elf-gcc
-DEPEND = sh-elf-gcc -M
-LINT = splint
-AWK = gawk
-
-
-INC_DIR = ../../../../kernel/include
-
-
-CFLAGS = -c -g -O0 -Wall -std=c89 -I$(INC_DIR)
-AFLAGS = -c -g
-LFLAGS = -m2 -nostartfiles -Wl,-v,-t,-Map,sample.map,-Tsample.x
-
-OBJS = vector.o crt0.o kernel_cfg.o sample.o ../../../../kernel/build/sh/sh2/gcc/libhosv4a.a
-
-all: $(OBJS)
- $(LINK) $(LFLAGS) $(OBJS) -o sample.elf
-
-
-vector.o: vector.S
- $(CC) $(AFLAGS) vector.S -o vector.o
-
-crt0.o: crt0.S
- $(CC) $(AFLAGS) crt0.S -o crt0.o
-
-sample.o: sample.c
- $(CC) $(CFLAGS) sample.c -o sample.o
-
-kernel_cfg.o: kernel_cfg.c
- $(CC) $(CFLAGS) kernel_cfg.c -o kernel_cfg.o
-
-kernel_cfg.c: system.cfg
- cpp -E system.cfg > system.i
- ../../../../cfgrtr/build/gcc/h4acfg-sh2
-
-
+++ /dev/null
-#include <stdio.h>
-
-
-#include "kernel.h"
-
-
-
-int main()
-{
-
-/* _kernel_sta_knl(); */
-
- return 0;
-}
-
-
-void Sample_Initialize(VP_INT exinf)
-{
-}
-
-void Sample_Task1(VP_INT exinf)
-{
-}
-
-void Sample_Task2(VP_INT exinf)
-{
-}
-
-void Sample_Task3(VP_INT exinf)
-{
-}
+++ /dev/null
-
-
-void Sample_Initialize(VP_INT exinf);
-void Sample_Task1(VP_INT exinf);
-void Sample_Task2(VP_INT exinf);
-void Sample_Task3(VP_INT exinf);
+++ /dev/null
-OUTPUT_FORMAT("coff-sh")
-OUTPUT_ARCH(sh)
-MEMORY
-{
- vector : o = 0xfffff200, l = 0x00000300
- rom : o = 0x00c00000, l = 0x00020000
- ram : o = 0x00c20000, l = 0x0001fff0
- stack : o = 0x00c3fff0, l = 0x00000010
-}
-SECTIONS
-{
- .vector :
- {
- _VECTOR_START = . ;
- *(.vector)
- } > vector
-
- .text :
- {
- _TEXT_START = . ;
- *(.vector)
- *(.text)
- *(.strings)
- *(.rodata)
- _TEXT_END = . ;
- } > rom
- .data : AT (ADDR(.text) + SIZEOF(.text))
- {
- _DATA_ROM = ADDR(.text) + SIZEOF(.text) ;
- _DATA_START = . ;
- *(.data)
- _DATA_END = . ;
- } > ram
- .bss :
- {
- _BSS_START = . ;
- *(.bss)
- *(COMMON)
- _BSS_END = . ;
- } > ram
- .stack :
- {
- _STACK_START = . ;
- *(.stack);
- _STACK_END = . ;
- } > stack
-}
+++ /dev/null
-
-INCLUDE("\"sample.h\"");
-
-ATT_INI({TA_HLNG, 0, Sample_Initialize});
-CRE_TSK(TSKID_SAMPLE1, {TA_HLNG, 1, Sample_Task1, 1, 1024, NULL});
-CRE_TSK(TSKID_SAMPLE2, {TA_HLNG, 2, Sample_Task2, 2, 1024, NULL});
-CRE_TSK(TSKID_SAMPLE3, {TA_HLNG, 3, Sample_Task3, 3, 1024, NULL});
-
-
+++ /dev/null
-/* ------------------------------------------------------------------------ */
-/* Hyper Operating System V4 サンプルプログラム */
-/* 割り込みベクタテーブル (日立 SH2 gcc 用) */
-/* */
-/* Copyright (C) 1998-2002 by Project HOS */
-/* http://sourceforge.jp/projects/hos/ */
-/* ------------------------------------------------------------------------ */
-
-
- .global _kernel_vecter004
- .global _kernel_vecter005
- .global _kernel_vecter006
- .global _kernel_vecter007
- .global _kernel_vecter008
- .global _kernel_vecter009
- .global _kernel_vecter010
- .global _kernel_vecter011
- .global _kernel_vecter012
- .global _kernel_vecter013
- .global _kernel_vecter014
- .global _kernel_vecter015
- .global _kernel_vecter016
- .global _kernel_vecter017
- .global _kernel_vecter018
- .global _kernel_vecter019
- .global _kernel_vecter020
- .global _kernel_vecter021
- .global _kernel_vecter022
- .global _kernel_vecter023
- .global _kernel_vecter024
- .global _kernel_vecter025
- .global _kernel_vecter026
- .global _kernel_vecter027
- .global _kernel_vecter028
- .global _kernel_vecter029
- .global _kernel_vecter030
- .global _kernel_vecter031
- .global _kernel_vecter032
- .global _kernel_vecter033
- .global _kernel_vecter034
- .global _kernel_vecter035
- .global _kernel_vecter036
- .global _kernel_vecter037
- .global _kernel_vecter038
- .global _kernel_vecter039
- .global _kernel_vecter040
- .global _kernel_vecter041
- .global _kernel_vecter042
- .global _kernel_vecter043
- .global _kernel_vecter044
- .global _kernel_vecter045
- .global _kernel_vecter046
- .global _kernel_vecter047
- .global _kernel_vecter048
- .global _kernel_vecter049
- .global _kernel_vecter050
- .global _kernel_vecter051
- .global _kernel_vecter052
- .global _kernel_vecter053
- .global _kernel_vecter054
- .global _kernel_vecter055
- .global _kernel_vecter056
- .global _kernel_vecter057
- .global _kernel_vecter058
- .global _kernel_vecter059
- .global _kernel_vecter060
- .global _kernel_vecter061
- .global _kernel_vecter062
- .global _kernel_vecter063
- .global _kernel_vecter064
- .global _kernel_vecter065
- .global _kernel_vecter066
- .global _kernel_vecter067
- .global _kernel_vecter068
- .global _kernel_vecter069
- .global _kernel_vecter070
- .global _kernel_vecter071
- .global _kernel_vecter072
- .global _kernel_vecter073
- .global _kernel_vecter074
- .global _kernel_vecter075
- .global _kernel_vecter076
- .global _kernel_vecter077
- .global _kernel_vecter078
- .global _kernel_vecter079
- .global _kernel_vecter080
- .global _kernel_vecter081
- .global _kernel_vecter082
- .global _kernel_vecter083
- .global _kernel_vecter084
- .global _kernel_vecter085
- .global _kernel_vecter086
- .global _kernel_vecter087
- .global _kernel_vecter088
- .global _kernel_vecter089
- .global _kernel_vecter090
- .global _kernel_vecter091
- .global _kernel_vecter092
- .global _kernel_vecter093
- .global _kernel_vecter094
- .global _kernel_vecter095
- .global _kernel_vecter096
- .global _kernel_vecter097
- .global _kernel_vecter098
- .global _kernel_vecter099
- .global _kernel_vecter100
- .global _kernel_vecter101
- .global _kernel_vecter102
- .global _kernel_vecter103
- .global _kernel_vecter104
- .global _kernel_vecter105
- .global _kernel_vecter106
- .global _kernel_vecter107
- .global _kernel_vecter108
- .global _kernel_vecter109
- .global _kernel_vecter110
- .global _kernel_vecter111
- .global _kernel_vecter112
- .global _kernel_vecter113
- .global _kernel_vecter114
- .global _kernel_vecter115
- .global _kernel_vecter116
- .global _kernel_vecter117
- .global _kernel_vecter118
- .global _kernel_vecter119
- .global _kernel_vecter120
- .global _kernel_vecter121
- .global _kernel_vecter122
- .global _kernel_vecter123
- .global _kernel_vecter124
- .global _kernel_vecter125
- .global _kernel_vecter126
- .global _kernel_vecter127
- .global _kernel_vecter128
- .global _kernel_vecter129
- .global _kernel_vecter130
- .global _kernel_vecter131
- .global _kernel_vecter132
- .global _kernel_vecter133
- .global _kernel_vecter134
- .global _kernel_vecter135
- .global _kernel_vecter136
- .global _kernel_vecter137
- .global _kernel_vecter138
- .global _kernel_vecter139
- .global _kernel_vecter140
- .global _kernel_vecter141
- .global _kernel_vecter142
- .global _kernel_vecter143
- .global _kernel_vecter144
- .global _kernel_vecter145
- .global _kernel_vecter146
- .global _kernel_vecter147
- .global _kernel_vecter148
- .global _kernel_vecter149
- .global _kernel_vecter150
- .global _kernel_vecter151
- .global _kernel_vecter152
- .global _kernel_vecter153
- .global _kernel_vecter154
- .global _kernel_vecter155
- .global _kernel_vecter156
-
-
-
- .section .vector
-
- .long _pwr_reset /* パワーオンリセット */
- .long _STACK_END
- .long _man_reset /* マニュアルリセット */
- .long _STACK_END
- .long _kernel_vecter004
- .long _kernel_vecter005
- .long _kernel_vecter006
- .long _kernel_vecter007
- .long _kernel_vecter008
- .long _kernel_vecter009
- .long _kernel_vecter010
- .long _kernel_vecter011
- .long _kernel_vecter012
- .long _kernel_vecter013
- .long _kernel_vecter014
- .long _kernel_vecter015
- .long _kernel_vecter016
- .long _kernel_vecter017
- .long _kernel_vecter018
- .long _kernel_vecter019
- .long _kernel_vecter020
- .long _kernel_vecter021
- .long _kernel_vecter022
- .long _kernel_vecter023
- .long _kernel_vecter024
- .long _kernel_vecter025
- .long _kernel_vecter026
- .long _kernel_vecter027
- .long _kernel_vecter028
- .long _kernel_vecter029
- .long _kernel_vecter030
- .long _kernel_vecter031
- .long _kernel_vecter032
- .long _kernel_vecter033
- .long _kernel_vecter034
- .long _kernel_vecter035
- .long _kernel_vecter036
- .long _kernel_vecter037
- .long _kernel_vecter038
- .long _kernel_vecter039
- .long _kernel_vecter040
- .long _kernel_vecter041
- .long _kernel_vecter042
- .long _kernel_vecter043
- .long _kernel_vecter044
- .long _kernel_vecter045
- .long _kernel_vecter046
- .long _kernel_vecter047
- .long _kernel_vecter048
- .long _kernel_vecter049
- .long _kernel_vecter050
- .long _kernel_vecter051
- .long _kernel_vecter052
- .long _kernel_vecter053
- .long _kernel_vecter054
- .long _kernel_vecter055
- .long _kernel_vecter056
- .long _kernel_vecter057
- .long _kernel_vecter058
- .long _kernel_vecter059
- .long _kernel_vecter060
- .long _kernel_vecter061
- .long _kernel_vecter062
- .long _kernel_vecter063
- .long _kernel_vecter064
- .long _kernel_vecter065
- .long _kernel_vecter066
- .long _kernel_vecter067
- .long _kernel_vecter068
- .long _kernel_vecter069
- .long _kernel_vecter070
- .long _kernel_vecter071
- .long _kernel_vecter072
- .long _kernel_vecter073
- .long _kernel_vecter074
- .long _kernel_vecter075
- .long _kernel_vecter076
- .long _kernel_vecter077
- .long _kernel_vecter078
- .long _kernel_vecter079
- .long _kernel_vecter080
- .long _kernel_vecter081
- .long _kernel_vecter082
- .long _kernel_vecter083
- .long _kernel_vecter084
- .long _kernel_vecter085
- .long _kernel_vecter086
- .long _kernel_vecter087
- .long _kernel_vecter088
- .long _kernel_vecter089
- .long _kernel_vecter090
- .long _kernel_vecter091
- .long _kernel_vecter092
- .long _kernel_vecter093
- .long _kernel_vecter094
- .long _kernel_vecter095
- .long _kernel_vecter096
- .long _kernel_vecter097
- .long _kernel_vecter098
- .long _kernel_vecter099
- .long _kernel_vecter100
- .long _kernel_vecter101
- .long _kernel_vecter102
- .long _kernel_vecter103
- .long _kernel_vecter104
- .long _kernel_vecter105
- .long _kernel_vecter106
- .long _kernel_vecter107
- .long _kernel_vecter108
- .long _kernel_vecter109
- .long _kernel_vecter110
- .long _kernel_vecter111
- .long _kernel_vecter112
- .long _kernel_vecter113
- .long _kernel_vecter114
- .long _kernel_vecter115
- .long _kernel_vecter116
- .long _kernel_vecter117
- .long _kernel_vecter118
- .long _kernel_vecter119
- .long _kernel_vecter120
- .long _kernel_vecter121
- .long _kernel_vecter122
- .long _kernel_vecter123
- .long _kernel_vecter124
- .long _kernel_vecter125
- .long _kernel_vecter126
- .long _kernel_vecter127
- .long _kernel_vecter128
- .long _kernel_vecter129
- .long _kernel_vecter130
- .long _kernel_vecter131
- .long _kernel_vecter132
- .long _kernel_vecter133
- .long _kernel_vecter134
- .long _kernel_vecter135
- .long _kernel_vecter136
- .long _kernel_vecter137
- .long _kernel_vecter138
- .long _kernel_vecter139
- .long _kernel_vecter140
- .long _kernel_vecter141
- .long _kernel_vecter142
- .long _kernel_vecter143
- .long _kernel_vecter144
- .long _kernel_vecter145
- .long _kernel_vecter146
- .long _kernel_vecter147
- .long _kernel_vecter148
- .long _kernel_vecter149
- .long _kernel_vecter150
- .long _kernel_vecter151
- .long _kernel_vecter152
- .long _kernel_vecter153
- .long _kernel_vecter154
- .long _kernel_vecter155
- .long _kernel_vecter156
-
-
-
- .end
-
-
-/* ------------------------------------------------------------------------ */
-/* Copyright (C) 1998-2002 by Project HOS */
-/* ------------------------------------------------------------------------ */