From 4de0f779bc0f0a1f7a556d17debbfc5864119546 Mon Sep 17 00:00:00 2001 From: ryuz Date: Sun, 2 Dec 2007 11:54:45 +0000 Subject: [PATCH] (none) --- kernel/build/common/gmake/ca850_r.inc | 5 -- kernel/build/v850/v850e/ca850/gmake.mak | 35 +++++------ kernel/include/arch/proc/sh/sh2/proc.h | 6 +- kernel/include/arch/proc/v850/v850e/proc.h | 70 ++++++++++------------ kernel/include/arch/proc/v850/v850e/procatr.h | 18 +++--- .../source/arch/proc/v850/v850e/ca850/kcre_ctx.s | 52 ++++++++-------- .../source/arch/proc/v850/v850e/ca850/kdis_int.s | 19 +++--- .../source/arch/proc/v850/v850e/ca850/kena_int.s | 19 +++--- .../source/arch/proc/v850/v850e/ca850/krst_ctx.s | 27 +++++++++ .../source/arch/proc/v850/v850e/ca850/kswi_ctx.s | 48 +++++++-------- .../source/arch/proc/v850/v850e/ca850/kwai_int.s | 23 +++---- 11 files changed, 172 insertions(+), 150 deletions(-) create mode 100755 kernel/source/arch/proc/v850/v850e/ca850/krst_ctx.s diff --git a/kernel/build/common/gmake/ca850_r.inc b/kernel/build/common/gmake/ca850_r.inc index f258929..085dc48 100755 --- a/kernel/build/common/gmake/ca850_r.inc +++ b/kernel/build/common/gmake/ca850_r.inc @@ -39,9 +39,4 @@ $(OBJS_DIR)/%.$(EXT_OBJ) :: %.$(EXT_ASM) $(CMD_ASM) $(AFLAGS) -o $@ $< -# %jp{依存関係}%en{makedepend} -depend: - $(CMD_DEPEND) $(DEPFLAGS) $(CSRCS) | sed -e 's?^\(.*\):?$(OBJS_DIR)/\1:?g' > $(OBJS_DIR)/depend.inc - - # end of file diff --git a/kernel/build/v850/v850e/ca850/gmake.mak b/kernel/build/v850/v850e/ca850/gmake.mak index 7dbb0ec..c611e30 100755 --- a/kernel/build/v850/v850e/ca850/gmake.mak +++ b/kernel/build/v850/v850e/ca850/gmake.mak @@ -1,17 +1,17 @@ # ---------------------------------------------------------------------------- # Hyper Operating System V4 Advance -# makefile for ARM V4T (none IRC) +# makefile for sh2 # # Copyright (C) 1998-2007 by Project HOS # http://sourceforge.jp/projects/hos/ # ---------------------------------------------------------------------------- -# ターゲット名 +# %jp{ターゲット名} TARGET ?= libhosv4a -# ディレクトリ定義 +# %jp{ディレクトリ定義} HOSV4A_DIR = ../../../../.. KERNEL_DIR = $(HOSV4A_DIR)/kernel KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake @@ -24,7 +24,7 @@ include $(KERNEL_MAKINC_DIR)/common.inc # %jp{アーキテクチャ定義} ARCH_PROC ?= v850/v850e -ARCH_IRC ?= none +ARCH_IRC ?= simple ARCH_CC ?= ca850 # %jp{アーキテクチャパス} @@ -46,29 +46,30 @@ ARFLAGS += # %jp{コンフィギュレータ定義} CFGRTR_DIR = $(HOSV4A_DIR)/cfgrtr/build/gcc -CFGRTR = h4acfg-arm_v4t +CFGRTR = h4acfg-sh2 -# %jp{armcc用の設定読込み} -include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc +# %jp{ca850用の設定読込み} +include $(KERNEL_MAKINC_DIR)/ca850_d.inc -# C言語ファイルの追加 +# %jp{C言語ファイルの追加} CSRCS += -# アセンブラファイルの追加 -ASRCS += $(SRC_PROC_CC_DIR)/kena_int.s \ - $(SRC_PROC_CC_DIR)/kdis_int.s \ - $(SRC_PROC_CC_DIR)/kwai_int.s \ - $(SRC_PROC_CC_DIR)/kswi_ctx.s \ - $(SRC_PROC_CC_DIR)/kcre_ctx.s + +# %jp{アセンブラファイルの追加} +ASRCS += $(SRC_PROC_CC_DIR)/kena_int.s +ASRCS += $(SRC_PROC_CC_DIR)/kdis_int.s +ASRCS += $(SRC_PROC_CC_DIR)/kwai_int.s +ASRCS += $(SRC_PROC_CC_DIR)/kcre_ctx.s +ASRCS += $(SRC_PROC_CC_DIR)/kswi_ctx.s +ASRCS += $(SRC_PROC_CC_DIR)/krst_ctx.s # カーネル共通ソースの追加 include $(KERNEL_MAKINC_DIR)/knlsrc.inc - # %jp{ALL} .PHONY : all all: makelib_all @@ -84,8 +85,8 @@ clean: makelib_clean # %jp{ライブラリ生成用設定読込み} include $(KERNEL_MAKINC_DIR)/makelib.inc -# %jp{armcc用のルール定義読込み} -include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_r.inc +# %jp{ca850用のルール定義読込み} +include $(KERNEL_MAKINC_DIR)/ca850_r.inc # %jp{カーネル依存関係読込み} include $(KERNEL_MAKINC_DIR)/knldep.inc diff --git a/kernel/include/arch/proc/sh/sh2/proc.h b/kernel/include/arch/proc/sh/sh2/proc.h index 93a3787..71b53bd 100755 --- a/kernel/include/arch/proc/sh/sh2/proc.h +++ b/kernel/include/arch/proc/sh/sh2/proc.h @@ -9,8 +9,8 @@ */ -#ifndef KERNEL__arch__sh2__proc_h__ -#define KERNEL__arch__sh2__proc_h__ +#ifndef _KERNEL__arch__proc__sh__sh2__proc_h__ +#define _KERNEL__arch__proc__sh__sh2__proc_h__ /** %jp{コンテキスト情報保存ブロック}%en{Execution context control block} */ @@ -70,7 +70,7 @@ void _kernel_swi_ctx(_KERNEL_T_CTXCB *pk_ctxcb_nxt, _KERNEL_T_CTXCB *pk_ctxcb -#endif /* KERNEL__HOS_V4a__sh2__sh2_h__ */ +#endif /* _KERNEL__arch__proc__sh__sh2__proc_h__ */ diff --git a/kernel/include/arch/proc/v850/v850e/proc.h b/kernel/include/arch/proc/v850/v850e/proc.h index e8e94ff..1700713 100755 --- a/kernel/include/arch/proc/v850/v850e/proc.h +++ b/kernel/include/arch/proc/v850/v850e/proc.h @@ -1,28 +1,19 @@ /** * Hyper Operating System V4 Advance * - * @file ctxctl.h - * @brief %jp{コンテキスト制御}%en{context control} + * @file procatr.h + * @brief %jp{プロセッサアーキテクチャ固有機能(V850E processor)} * - * Copyright (C) 1998-2006 by Project HOS + * Copyright (C) 1998-2007 by Project HOS * http://sourceforge.jp/projects/hos/ */ -#ifndef _KERNEL__arch__proc__arm__arm_v4__proc_h__ -#define _KERNEL__arch__proc__arm__arm_v4__proc_h__ +#ifndef _KERNEL__arch__proc__v850__v850e__proc_h__ +#define _KERNEL__arch__proc__v850__v850e__proc_h__ -#define _KERNEL_IMSK_F 0x40 /**< %jp{FIQ割り込みマスクビット} */ -#define _KERNEL_IMSK_I 0x80 /**< %jp{IRQ割り込みマスクビット} */ - -#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割り込みマスクレベル0(すべてマスク)} */ -#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割り込みマスクレベル1(FIQのみ許可)} */ -#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割り込みマスクレベル2(すべて許可)} */ - - - -/** %jp{コンテキスト情報保存ブロック} */ +/** %jp{コンテキスト情報保存ブロック}%en{Execution context control block} */ typedef struct _kernel_t_ctxcb { VP_INT sp; @@ -31,8 +22,8 @@ typedef struct _kernel_t_ctxcb /** %jp{割込みコンテキスト制御ブロック} */ typedef struct _kernel_t_ictxcb { - UB imsk; - UB intcnt; + H imsk; + B intcnt; VP isp; } _KERNEL_T_ICTXCB; @@ -40,20 +31,19 @@ typedef struct _kernel_t_ictxcb extern _KERNEL_T_ICTXCB _kernel_ictxcb; /**< %jp{割込みコンテキスト制御ブロック} */ - #ifdef __cplusplus extern "C" { #endif -void _kernel_ena_int(void); /**< %jp{割込み許可} */ -void _kernel_dis_int(void); /**< %jp{割込み禁止} */ -void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)} */ +void _kernel_ena_int(void); /**< %jp{割り込み許可}%en{Enable interrupt} */ +void _kernel_dis_int(void); /**< %jp{割り込み禁止}%en{Disable interrupt} */ +void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */ + +void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成}%en{Create execution context)} */ +void _kernel_sta_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの開始}%en{Stert context)} */ +void _kernel_rst_ctx(VP_INT par1, VP_INT par2, VP isp, FP entry); /**< %jp{実行コンテキストのリスタート}%en{Restert context)} */ +void _kernel_swi_ctx(_KERNEL_T_CTXCB *pk_ctxcb_nxt, _KERNEL_T_CTXCB *pk_ctxcb_now); /**< %jp{実行コンテキストの切替}%en{Switch context)} */ -void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成} */ -void _kernel_del_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの削除} */ -void _kernel_rst_ctx(VP_INT par1, VP_INT par2, FP entry, VP isp); /**< %jp{実行コンテキストのリスタート} */ -void _kernel_sta_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの開始} */ -void _kernel_swi_ctx(_KERNEL_T_CTXCB *pk_ctxinf_nxt, _KERNEL_T_CTXCB *pk_ctxcb_now); /**< %jp{実行コンテキストの切替} */ #ifdef __cplusplus } @@ -61,25 +51,27 @@ void _kernel_swi_ctx(_KERNEL_T_CTXCB *pk_ctxinf_nxt, _KERNEL_T_CTXCB *pk_ctxc -#define _KERNEL_INI_PRC() do {} while (0) /**< %jp{プロセッサ固有の初期化} */ +#define _KERNEL_INI_PRC() do{}while(0) /**< %jp{プロセッサの初期化}%en{Initialize processor} */ -#define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0) /**< %jp{割込み初期化} */ -#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可} */ -#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止} */ -#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)} */ +#define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0) +#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可}%en{Enable interrupt} */ +#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止}%en{Disable interrupt} */ +#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */ -#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, exinf1, exinf2) \ - _kernel_cre_ctx((pk_ctxcb), (isp), (entry), (exinf1), (exinf2)) /**< %jp{実行コンテキストの作成} */ -#define _KERNEL_DEL_CTX(pk_ctxcb) do {} while (0) /**< %jp{実行コンテキストの削除} */ -#define _KERNEL_RST_CTX(pk_ctxcb, stksz, stk, isp, entry, exinf1, exinf2) \ - _kernel_rst_ctx((exinf1), (exinf2), (entry), (isp)) /**< %jp{実行コンテキストのリスタート} */ +#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \ + _kernel_cre_ctx((pk_ctxcb), (isp), (entry), (par1), (par2)) /**< %jp{実行コンテキスト生成}%en{Create execution context)} */ +#define _KERNEL_DEL_CTX(pk_ctxcb) _kernel_del_ctx(pk_ctxcb) +#define _KERNEL_RST_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \ + _kernel_rst_ctx((par1), (par2), (isp), (entry)) /**< %jp{実行コンテキストリスタート}%en{Restert context)} */ #define _KERNEL_STA_CTX(pk_ctxcb) _kernel_sta_ctx(pk_ctxcb) -#define _KERNEL_SWI_CTX(pk_ctxcb_now, pk_ctxinf_nxt) \ - _kernel_swi_ctx((pk_ctxinf_nxt), (pk_ctxcb_now)) /**< %jp{実行コンテキストの切替} */ +#define _KERNEL_SWI_CTX(pk_ctxcb_now, pk_ctxcb_nxt) \ + _kernel_swi_ctx((pk_ctxcb_nxt), (pk_ctxcb_now)) /**< %jp{コンテキストのスイッチ}%en{Switch context)} */ + + +#endif /* _KERNEL__arch__proc__v850__v850e__proc_h__ */ -#endif /* _KERNEL__arch__proc__arm__arm_v4__proc_h__ */ /* end of file */ diff --git a/kernel/include/arch/proc/v850/v850e/procatr.h b/kernel/include/arch/proc/v850/v850e/procatr.h index 5094dd8..d640910 100755 --- a/kernel/include/arch/proc/v850/v850e/procatr.h +++ b/kernel/include/arch/proc/v850/v850e/procatr.h @@ -2,9 +2,9 @@ * Hyper Operating System V4 Advance * * @file procatr.h - * @brief %jp{プロセッサアーキテクチャ固有機能} + * @brief %jp{プロセッサアーキテクチャ固有属性定義(V850E processor)} * - * Copyright (C) 1998-2006 by Project HOS + * Copyright (C) 1998-2007 by Project HOS * http://sourceforge.jp/projects/hos/ */ @@ -29,23 +29,23 @@ #define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */ #define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */ -#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */ -#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */ +#define _KERNEL_PROCATR_TMIN_INHNO 64 /**< %jp{割込みハンドラ番号の最小値} */ +#define _KERNEL_PROCATR_TMAX_INHNO 255 /**< %jp{割込みハンドラ番号の最大値} */ -#define _KERNEL_PROCATR_TMIN_EXCNO 0 /**< %jp{CPU例外ハンドラ番号の最小値} */ -#define _KERNEL_PROCATR_TMAX_EXCNO 1 /**< %jp{CPU例外ハンドラ番号の最大値} */ +#define _KERNEL_PROCATR_TMIN_EXCNO 4 /**< %jp{CPU例外ハンドラ番号の最小値} */ +#define _KERNEL_PROCATR_TMAX_EXCNO 63 /**< %jp{CPU例外ハンドラ番号の最大値} */ -#define _KERNEL_PROCATR_SYSSTK_NUM 1 /**< %jp{システムスタックは何本必要か?} */ +#define _KERNEL_PROCATR_EXCSTK_NUM 0 /**< %jp{CPU例外処理用スタックは何本必要か?} */ +#define _KERNEL_PROCATR_INTSTK_NUM 1 /**< %jp{割り込みスタックは何本必要か?} */ #define _KERNEL_PROCATR_SIGNED_INT 0 /**< %jp{符号付整数と符号無し整数のどちらが得意か?(符号付き:1, 符号無し:-1, 同じ:0)} */ #define _KERNEL_PROCATR_TBIT_INT 32 /**< %jp{プロセッサに最適な整数型のビット数} */ #define _KERNEL_PROCATR_TBIT_PTR 32 /**< %jp{ポインタのビット数} */ #define _KERNEL_PROCATR_MEM_ALIGN 8 /**< %jp{適切なメモリのアライメント(byte単位)} */ -#define _KERNEL_PROCATR_STK_ALIGN 8 /**< %jp{適切なスタックのアライメント(byte単位)} */ +#define _KERNEL_PROCATR_STK_ALIGN 4 /**< %jp{適切なスタックのアライメント(byte単位)} */ #define _KERNEL_PROCATR_ALLOW_UNALIGN FALSE /**< %jp{アンアラインアクセスは可能か?} */ - #endif /* _KERNEL__arch__proc__v850__v850e__procatr_h__ */ diff --git a/kernel/source/arch/proc/v850/v850e/ca850/kcre_ctx.s b/kernel/source/arch/proc/v850/v850e/ca850/kcre_ctx.s index 16c9c65..ca4e98c 100755 --- a/kernel/source/arch/proc/v850/v850e/ca850/kcre_ctx.s +++ b/kernel/source/arch/proc/v850/v850e/ca850/kcre_ctx.s @@ -1,42 +1,46 @@ -# ---------------------------------------------------------------------------- +# --------------------------------------------------------------------------- # Hyper Operating System V4 Advance # -# Copyright (C) 1998-2007 by Project HOS -# http://sourceforge.jp/projects/hos/ -# ---------------------------------------------------------------------------- +# Copyright (C) 2007 by Project HOS +# http://sourceforge.jp/projects/hos/ +# --------------------------------------------------------------------------- .text -# -------------------------------------------------- + +# ------------------------------------------------ # 実行コンテキストの作成 # _kernel_cre_ctx( -# _KERNEL_T_CTXCB *pk_ctxcb, 作成するコンテキスト [r6] -# VP isp, 初期スタックポインタ [r7] -# FP entry, 実行アドレス [r8] -# VP_INT par1, 実行時パラメータ1 [r9] -# VP_INT par2) 実行時パラメータ2 0[sp] -# -------------------------------------------------- +# _KERNEL_T_CTXCB *pk_ctxcb, 作成するコンテキスト (r6) +# VP isp, 初期スタックポインタ (r7) +# FP entry, 実行アドレス (r8) +# VP_INT par1, 実行時パラメータ1 (r9) +# VP_INT par2) 実行時パラメータ2 (0[sp]) +# ------------------------------------------------ + .align 4 + .frame __kernel_cre_ctx, 0 .globl __kernel_cre_ctx __kernel_cre_ctx: - ld.w 0 [sp], r10 -- 実行時パラメータ2取り出し - add -44, r7 -- スタックに領域を確保 - st.w r8, 4 * 0 [r7] -- 実行アドレスを r20 の領域に設定 - st.w r9, 4 * 1 [r7] -- 実行時パラメータ1を r21 の領域に設定 - st.w r10, 4 * 2 [r7] -- 実行時パラメータ2を r22 の領域に設定 - movea ctx_entry, tp, r10 - st.w r10, 4 * 10 [r7] -- 実行時パラメータ2を r22 の領域に設定 + add -48, r7 + st.w r30, 4[r7] -- r30 EP + st.w r8, 8[r7] -- r29 実行アドレス + st.w r9, 12[r7] -- r28 実行時パラメータ1 + ld.w 0[sp], r8 + st.w r8, 12[r7] -- r27 実行時パラメータ2 + mov32 ctx_entry, r8 + st.w r8, 0[r7] -- r31 LP + st.w r7, 0[r6] jmp [lp] -# -------------------------------------------------- +# ------------------------------------------------ # 実行コンテキストエントリーアドレス -# -------------------------------------------------- +# ------------------------------------------------ ctx_entry: - mov r21, r6 -- 実行時パラメータ1を設定 - mov r22, r7 -- 実行時パラメータ2を設定(遅延スロット) - jmp [r20] -- 実行開始アドレスに分岐 - + mov r28, r6 -- 実行時パラメータ1を設定 + mov r27, r7 -- 実行時パラメータ2を設定 + jmp [r29] # end of file diff --git a/kernel/source/arch/proc/v850/v850e/ca850/kdis_int.s b/kernel/source/arch/proc/v850/v850e/ca850/kdis_int.s index 0ec47f5..8db32a6 100755 --- a/kernel/source/arch/proc/v850/v850e/ca850/kdis_int.s +++ b/kernel/source/arch/proc/v850/v850e/ca850/kdis_int.s @@ -1,23 +1,24 @@ -# ---------------------------------------------------------------------------- +# --------------------------------------------------------------------------- # Hyper Operating System V4 Advance # -# Copyright (C) 1998-2007 by Project HOS -# http://sourceforge.jp/projects/hos/ -# ---------------------------------------------------------------------------- +# Copyright (C) 2007 by Project HOS +# http://sourceforge.jp/projects/hos/ +# --------------------------------------------------------------------------- .text -# -------------------------------------------------- -# 割り込み禁止 -# void _kernel_dis_int(void) -# -------------------------------------------------- +# ------------------------------------------------ +# 割り込み禁止 +# void _kernel_dis_int(void) +# ------------------------------------------------ + .align 4 + .frame __kernel_dis_int, 0 .globl __kernel_dis_int __kernel_dis_int: di jmp [lp] - # end of file diff --git a/kernel/source/arch/proc/v850/v850e/ca850/kena_int.s b/kernel/source/arch/proc/v850/v850e/ca850/kena_int.s index 495968d..c451edd 100755 --- a/kernel/source/arch/proc/v850/v850e/ca850/kena_int.s +++ b/kernel/source/arch/proc/v850/v850e/ca850/kena_int.s @@ -1,23 +1,24 @@ -# ---------------------------------------------------------------------------- +# --------------------------------------------------------------------------- # Hyper Operating System V4 Advance # -# Copyright (C) 1998-2007 by Project HOS -# http://sourceforge.jp/projects/hos/ -# ---------------------------------------------------------------------------- +# Copyright (C) 2007 by Project HOS +# http://sourceforge.jp/projects/hos/ +# --------------------------------------------------------------------------- .text -# -------------------------------------------------- -# 割り込み許可 -# void _kernel_ena_int(void) -# -------------------------------------------------- +# ------------------------------------------------ +# 割り込み許可 +# void _kernel_ena_int(void) +# ------------------------------------------------ + .align 4 + .frame __kernel_ena_int, 0 .globl __kernel_ena_int __kernel_ena_int: ei jmp [lp] - # end of file diff --git a/kernel/source/arch/proc/v850/v850e/ca850/krst_ctx.s b/kernel/source/arch/proc/v850/v850e/ca850/krst_ctx.s new file mode 100755 index 0000000..4aa083b --- /dev/null +++ b/kernel/source/arch/proc/v850/v850e/ca850/krst_ctx.s @@ -0,0 +1,27 @@ +# --------------------------------------------------------------------------- +# Hyper Operating System V4 Advance +# +# Copyright (C) 2007 by Project HOS +# http://sourceforge.jp/projects/hos/ +# --------------------------------------------------------------------------- + + + .text + + +# ------------------------------------------------ +# 実行コンテキストのリスタート +# void _kernel_rst_ctx( +# VP_INT par1, 実行時パラメータ1 [r6] +# VP_INT par2, 実行時パラメータ2 [r7] +# VP isp, 初期スタックポインタ [r8] +# FP entry) 実行アドレス [r9] +# ------------------------------------------------ + .align 4 + .frame __kernel_rst_ctx, 0 + .globl __kernel_rst_ctx +__kernel_rst_ctx: + jmp [r9] + + +# end of file diff --git a/kernel/source/arch/proc/v850/v850e/ca850/kswi_ctx.s b/kernel/source/arch/proc/v850/v850e/ca850/kswi_ctx.s index bda5efc..7bd6971 100755 --- a/kernel/source/arch/proc/v850/v850e/ca850/kswi_ctx.s +++ b/kernel/source/arch/proc/v850/v850e/ca850/kswi_ctx.s @@ -1,38 +1,38 @@ -# ---------------------------------------------------------------------------- +# --------------------------------------------------------------------------- # Hyper Operating System V4 Advance # -# Copyright (C) 1998-2007 by Project HOS -# http://sourceforge.jp/projects/hos/ -# ---------------------------------------------------------------------------- - +# Copyright (C) 2007 by Project HOS +# http://sourceforge.jp/projects/hos/ +# --------------------------------------------------------------------------- .text -# -------------------------------------------------- -# 実行コンテキストの切替 -# void _kernel_swi_ctx( -# _KERNEL_T_CTXCB *pk_ctxcb_nxt, 切り替え先のコンテキスト [r6] -# _KERNEL_T_CTXCB *pk_ctxcb_now) 現在のコンテキスト [r7] -# -------------------------------------------------- +# ------------------------------------------------ +# 実行コンテキストの切替 +# void _kernel_swi_ctx( +# _KERNEL_T_CTXCB *pk_ctxcb_nxt, 切り替え先のコンテキスト [r6] +# _KERNEL_T_CTXCB *pk_ctxcb_now) 現在のコンテキスト [r7] +# ------------------------------------------------ + .align 4 + .frame __kernel_swi_ctx, 48 .globl __kernel_swi_ctx __kernel_swi_ctx: - pushm r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, lp -- レジスタを退避 - st.w sp, [r7] -- スタックポインタ保存 - -- このまま _kernel_sta_ctx に続ける - -# ------------------------------------------------- -# 実行コンテキストの開始 -# void _kernel_sta_ctx( -# _KERNEL_T_CTXCB *pk_ctxcb) 開始するコンテキスト [r6] -# ------------------------------------------------- + prepare r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, 0 + st.w sp, [r7] + + +# ------------------------------------------------ +# 実行コンテキストの開始 +# void _kernel_sta_ctx( +# _KERNEL_T_CTXCB *pk_ctxcb) 開始するコンテキスト [r6] +# ------------------------------------------------ + .frame __kernel_sta_ctx, 0 .globl __kernel_sta_ctx __kernel_sta_ctx: - ld.w [r6], sp -- スタックポインタ復帰 - popm r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, lp -- レジスタを復帰 - jmp [lp] - + ld.w [r6], sp + dispose 0, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, lp # end of file diff --git a/kernel/source/arch/proc/v850/v850e/ca850/kwai_int.s b/kernel/source/arch/proc/v850/v850e/ca850/kwai_int.s index 61fb9a0..0bb675b 100755 --- a/kernel/source/arch/proc/v850/v850e/ca850/kwai_int.s +++ b/kernel/source/arch/proc/v850/v850e/ca850/kwai_int.s @@ -1,23 +1,24 @@ -# ---------------------------------------------------------------------------- +# --------------------------------------------------------------------------- # Hyper Operating System V4 Advance # -# Copyright (C) 1998-2007 by Project HOS -# http://sourceforge.jp/projects/hos/ -# ---------------------------------------------------------------------------- +# Copyright (C) 2007 by Project HOS +# http://sourceforge.jp/projects/hos/ +# --------------------------------------------------------------------------- .text -# -------------------------------------------------- -# 割り込み待ち -# void _kernel_wai_int(void) -# -------------------------------------------------- +# ------------------------------------------------ +# 割り込み待ち +# void _kernel_wai_int(void) +# ------------------------------------------------ + .align 4 + .frame __kernel_wai_int, 0 .globl __kernel_wai_int __kernel_wai_int: - ; halt - jbr __kernel_wai_int - + halt + jr __kernel_wai_int # end of file -- 2.11.0