OSDN Git Service

add cortex-m0
authorryuz <ryuz@users.sourceforge.jp>
Tue, 29 Mar 2011 15:26:56 +0000 (00:26 +0900)
committerryuz <ryuz@users.sourceforge.jp>
Tue, 29 Mar 2011 15:26:56 +0000 (00:26 +0900)
30 files changed:
.gitignore
kernel/build/arm/cortex_m0/gcc/Makefile [new file with mode: 0644]
kernel/include/arch/proc/arm/arm_v6m/proc.h [new file with mode: 0644]
kernel/include/arch/proc/arm/arm_v6m/procatr.h [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/dis_int.c [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/ena_int.c [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kcre_ctx.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kdis_int.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kena_int.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/khwf_hdr.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/knmi_hdr.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kpnd_hdr.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kref_ctl.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/krst_ctx.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/krst_hdr.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kswi_ctx.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/gcc/kwai_int.S [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v6m/vclr_int.c [new file with mode: 0644]
kernel/source/arch/proc/arm/arm_v7m/gcc/kcre_ctx.S
kernel/source/arch/proc/arm/arm_v7m/gcc/kdis_int.S
kernel/source/arch/proc/arm/arm_v7m/gcc/kena_int.S
kernel/source/arch/proc/arm/arm_v7m/gcc/khwf_hdr.S
kernel/source/arch/proc/arm/arm_v7m/gcc/knmi_hdr.S
kernel/source/arch/proc/arm/arm_v7m/gcc/kref_ctl.S
kernel/source/arch/proc/arm/arm_v7m/gcc/krst_ctx.S
kernel/source/arch/proc/arm/arm_v7m/gcc/kswi_ctx.S
kernel/source/arch/proc/arm/arm_v7m/gcc/kwai_int.S
sample/arm/stm32f103/gcc/Makefile
sample/arm/stm32f103/gcc/kernel_vct.c [deleted file]
sample/arm/stm32f103/sample.c

index d744f30..6ce4cfc 100644 (file)
@@ -6,6 +6,7 @@
 *.i
 kernel_id.h
 kernel_cfg.c
+kernel_vct.c
 
 # output files
 *.elf
diff --git a/kernel/build/arm/cortex_m0/gcc/Makefile b/kernel/build/arm/cortex_m0/gcc/Makefile
new file mode 100644 (file)
index 0000000..5315414
--- /dev/null
@@ -0,0 +1,156 @@
+# ----------------------------------------------------------------------------
+# Hyper Operating System V4 Advance
+#  makefile for Cortex-M3
+#
+# Copyright (C) 1998-2011 by Project HOS
+# http://sourceforge.jp/projects/hos/
+# ----------------------------------------------------------------------------
+
+
+
+# --------------------------------------
+#  %jp{各種設定}%en{setting}
+# --------------------------------------
+
+# %jp{ターゲットライブラリ名}%en{target library name}
+TARGET ?= libhosv4a
+
+
+# %jp{ツール定義}%jp{tools}
+GCC_ARCH ?= arm-none-eabi-
+CMD_CC   ?= $(GCC_ARCH)gcc
+CMD_ASM  ?= $(GCC_ARCH)gcc
+CMD_LIBR ?= $(GCC_ARCH)ar
+
+
+# %jp{アーキテクチャ定義}%en{architecture}
+ARCH_NAME ?= cortex_m0
+ARCH_PROC ?= arm/arm_v6m
+ARCH_IRC  ?= none
+ARCH_CC   ?= gcc
+
+
+# %jp{ディレクトリ定義}%en{directories}
+TOP_DIR           = ../../../../..
+KERNEL_DIR        = $(TOP_DIR)/kernel
+KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake
+INC_PROC_DIR      = $(KERNEL_DIR)/include/arch/proc/$(ARCH_PROC)
+INC_IRC_DIR       = $(KERNEL_DIR)/include/arch/irc/$(ARCH_IRC)
+SRC_PROC_DIR      = $(KERNEL_DIR)/source/arch/proc/$(ARCH_PROC)
+SRC_PROC_CC_DIR   = $(KERNEL_DIR)/source/arch/proc/$(ARCH_PROC)/$(ARCH_CC)
+SRC_IRC_DIR       = $(KERNEL_DIR)/source/arch/irc/$(ARCH_IRC)
+SRC_IRC_CC_DIR    = $(KERNEL_DIR)/source/arch/irc/$(ARCH_IRC)/$(ARCH_CC)
+CFGRTR_DIR        = $(TOP_DIR)/cfgrtr/build/gcc
+
+
+# %jp{コンフィギュレータ定義}%en{kernel configurator}
+CFGRTR = h4acfg-$(ARCH_NAME)
+
+
+# %jp{カーネル指定}%en{kernel flag}
+KERNEL = Yes
+
+
+# %jp{共通定義読込み}%en{common setting}
+include $(KERNEL_MAKINC_DIR)/common.inc
+
+
+# %jp{パス設定}%en{add source directories}
+INC_DIRS += $(INC_PROC_DIR) $(INC_IRC_DIR)
+SRC_DIRS += $(SRC_PROC_DIR) $(SRC_PROC_DIR) $(SRC_PROC_CC_DIR) $(SRC_IRC_DIR) $(SRC_IRC_CC_DIR)
+
+
+# %jp{オプションフラグ}%en{option flags}
+AFLAGS  = -mcpu=cortex-m0 -mthumb
+CFLAGS  = -mcpu=cortex-m0 -mthumb
+ARFLAGS = 
+
+
+# %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
+include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc
+
+# %jp{ライブラリ生成用設定読込み}%en{definitions for library}
+include $(KERNEL_MAKINC_DIR)/maklib_d.inc
+
+
+
+
+# --------------------------------------
+#  %jp{ソースファイル}%en{source files}
+# --------------------------------------
+
+# %jp{アセンブラファイルの追加}%en{assembry sources}
+ASRCS += $(SRC_PROC_CC_DIR)/krst_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/knmi_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/khwf_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/kpnd_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/kdis_int.S
+ASRCS += $(SRC_PROC_CC_DIR)/kena_int.S
+ASRCS += $(SRC_PROC_CC_DIR)/kcre_ctx.S
+ASRCS += $(SRC_PROC_CC_DIR)/krst_ctx.S
+ASRCS += $(SRC_PROC_CC_DIR)/kswi_ctx.S
+ASRCS += $(SRC_PROC_CC_DIR)/kwai_int.S
+ASRCS += $(SRC_PROC_CC_DIR)/kref_ctl.S
+
+# %jp{C言語ファイルの追加}%en{C sources}
+CSRCS += $(SRC_PROC_DIR)/ena_int.c
+CSRCS += $(SRC_PROC_DIR)/dis_int.c
+CSRCS += $(SRC_PROC_DIR)/vclr_int.c
+
+# %jp{カーネル共通ソースの追加}%en{kernel common sources}
+include $(KERNEL_MAKINC_DIR)/knlsrc.inc
+
+
+
+
+# --------------------------------------
+#  %jp{ルール定義}%en{rules}
+# --------------------------------------
+
+# %jp{ALL}%en{all}
+.PHONY : all
+all: makelib_all
+       $(MAKE) -C $(CFGRTR_DIR) TARGET=$(CFGRTR) ARCH_PROC=$(ARCH_PROC) ARCH_IRC=$(ARCH_IRC)
+
+# %jp{クリーン}%en{clean}
+.PHONY : clean
+clean: makelib_clean
+       $(MAKE) -C $(CFGRTR_DIR) TARGET=$(CFGRTR) ARCH_PROC=$(ARCH_PROC) ARCH_IRC=$(ARCH_IRC) clean
+       $(RM) -f *.lst
+
+# %jp{依存関係更新}%en{make depend}
+.PHONY : depend
+depend: makelib_depend
+
+# %jp{ソース一括コピー}%en{source files copy}
+.PHONY : srccpy
+srccpy: makelib_srccpy
+
+
+# %jp{ライブラリ生成用設定読込み}%en{rules for library}
+include $(KERNEL_MAKINC_DIR)/maklib_r.inc
+
+# %jp{コンパイラ依存のルール定義読込み}%en{rules for compiler}
+include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_r.inc
+
+
+
+
+# --------------------------------------
+#  %jp{依存関係}%en{dependency}
+# --------------------------------------
+
+# %jp{カーネル依存関係読込み}{dependency list of kernel sources}
+include $(KERNEL_MAKINC_DIR)/knldep.inc
+
+
+$(OBJS_DIR)/val_int.$(EXT_OBJ) :       $(COMMON_HEADERS)
+$(OBJS_DIR)/kini_irc.$(EXT_OBJ)        :       $(COMMON_HEADERS)
+$(OBJS_DIR)/kexe_irc.$(EXT_OBJ)        :       $(COMMON_HEADERS)
+$(OBJS_DIR)/ena_int.$(EXT_OBJ) :       $(COMMON_HEADERS)
+$(OBJS_DIR)/dis_int.$(EXT_OBJ) :       $(COMMON_HEADERS)
+$(OBJS_DIR)/vclr_int.$(EXT_OBJ)        :       $(COMMON_HEADERS)
+
+
+
+# end of file
diff --git a/kernel/include/arch/proc/arm/arm_v6m/proc.h b/kernel/include/arch/proc/arm/arm_v6m/proc.h
new file mode 100644 (file)
index 0000000..975a3fa
--- /dev/null
@@ -0,0 +1,88 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * @file  proc.h
+ * @brief %jp{ARMv7-M}%en{ARMv7-M}
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef _KERNEL__arch__proc__arm__arm_v6m__proc_h__
+#define _KERNEL__arch__proc__arm__arm_v6m__proc_h__
+
+#define _KERNEL_REG_INT_CONTROL                        ((volatile UW *)0xE000ED04)             /**< %jp{割り込み制御状態レジスタ}%en{Interrupt Control State Register} */
+
+#define _KERNEL_REG_INT_SETENA_BASE            ((volatile UW *)0xE000E100)             /**< %jp{割り込みイネーブルセットレジスタ} */
+#define _KERNEL_REG_INT_CLRENA_BASE            ((volatile UW *)0xE000E180)             /**< %jp{割り込みイネーブルクリアレジスタ} */
+#define _KERNEL_REG_INT_SETPEND_BASE   ((volatile UW *)0xE000E200)             /**< %jp{割り込み保留セットレジスタ} */
+#define _KERNEL_REG_INT_CLRPEND_BASE   ((volatile UW *)0xE000E280)             /**< %jp{割り込み保留クリアレジスタ} */
+
+
+/** %jp{コンテキスト制御ブロック} */
+typedef struct _kernel_t_ctxcb
+{
+       VP      sp;
+} _KERNEL_T_CTXCB;
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void    _kernel_reset_handler(void);
+void    _kernel_nmi_handler(void);
+void    _kernel_hw_fault_handler(void);
+void    _kernel_pendsv_handler(void);
+
+int     _kernel_ref_cpu_control(void);                                                                                                                         /**< %jp{CONTROLレジスタの取得} */
+
+
+void    _kernel_ena_int(void);                                                                                                                                         /**< %jp{割込み許可} */
+void    _kernel_dis_int(void);                                                                                                                                         /**< %jp{割込み禁止} */
+void    _kernel_wai_int(void);                                                                                                                                         /**< %jp{割込み待ち(アイドル時の処理)} */
+
+void    _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2);                /**< %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
+}
+#endif
+
+
+
+#define _KERNEL_INI_PRC()                      do {} while (0)                                                                                                 /**< %jp{プロセッサ固有の初期化} */
+
+#define _KERNEL_INI_INT(stksz, stk)    do {} 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_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_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_PROC_SET_CTX()          do { } while (0)
+#define        _KERNEL_PROC_CLR_CTX()          do { } while (0)
+#define        _KERNEL_PROC_SNS_CTX()          ((_kernel_ref_cpu_control() & 0x00000002) == 0)
+
+#define        _KERNEL_PROC_SET_DLY()          do { *_KERNEL_REG_INT_CONTROL |= 0x10000000; } while (0)
+#define        _KERNEL_PROC_CLR_DLY()          do { *_KERNEL_REG_INT_CONTROL |= 0x08000000; } while (0)
+#define        _KERNEL_PROC_SNS_DLY()          ((*_KERNEL_REG_INT_CONTROL & 0x10000000) != 0)
+
+
+#endif /* _KERNEL__arch__proc__arm__arm_v6m__proc_h__ */
+
+
+
+/* end of file */
diff --git a/kernel/include/arch/proc/arm/arm_v6m/procatr.h b/kernel/include/arch/proc/arm/arm_v6m/procatr.h
new file mode 100644 (file)
index 0000000..36c9e1c
--- /dev/null
@@ -0,0 +1,63 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * @file  procatr.h
+ * @brief %jp{ARMv6-M}%en{ARMv6-M}
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef _KERNEL__arch__proc__arm__arm_v6m__procatr_h__
+#define _KERNEL__arch__proc__arm__arm_v6m__procatr_h__
+
+
+#define _KERNEL_PROCATR_ARM_CORTEX_M3
+
+
+/* %jp{プロセッサアーキテクチャ定義のあるインクルードパス} */
+#define _KERNEL_PROCATR_INC_PATH                       "arm/arm_v6m"
+
+
+/* %jp{プロセッサアーキテクチャに依存した属性} */
+#define _KERNEL_PROCATR_CTX_STK                                FALSE           /**< %jp{コンテキスト生成にスタック領域の指定が必要か?} */
+#define _KERNEL_PROCATR_CTX_STKSZ                      FALSE           /**< %jp{コンテキスト生成にスタックサイズの指定が必要か?} */
+#define _KERNEL_PROCATR_CTX_ISP                                TRUE            /**< %jp{コンテキスト生成に初期スタックポインタ値が必要か?} */
+#define _KERNEL_PROCATR_CTX_DEL                                FALSE           /**< %jp{別コンテキストからのコンテキスト削除が必要か?} */
+#define _KERNEL_PROCATR_CTX_RST                                TRUE            /**< %jp{自コンテキストのリスタートが可能か?} */
+
+#define _KERNEL_PROCATR_TMIN_STKSZ                     (4*16)          /**< %jp{最低限必要なスタックサイズ(byte単位)} */
+#define _KERNEL_PROCATR_DEF_SYSSTKSZ           64
+#define _KERNEL_PROCATR_DEF_INTSTKSZ           256
+
+#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                     255                     /**< %jp{割込みハンドラ番号の最大値} */
+
+#define _KERNEL_PROCATR_TMIN_EXCNO                     0                       /**< %jp{CPU例外ハンドラ番号の最小値} */
+#define _KERNEL_PROCATR_TMAX_EXCNO                     15                      /**< %jp{CPU例外ハンドラ番号の最大値} */
+
+#define _KERNEL_PROCATR_SYSSTK_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                      4                       /**< %jp{適切なメモリのアライメント(byte単位)} */
+#define _KERNEL_PROCATR_STK_ALIGN                      8                       /**< %jp{適切なスタックのアライメント(byte単位)} */
+#define _KERNEL_PROCATR_ALLOW_UNALIGN          FALSE           /**< %jp{アンアラインアクセスは可能か?} */
+
+#define _KERNEL_PROCATR_SYS_CTX                                TRUE            /**< %jp{コンテキスト状態管理をプロセッサで実施するか?} */
+#define _KERNEL_PROCATR_SYS_LOC                                FALSE           /**< %jp{CPUロック状態管理をプロセッサで実施するか?} */
+#define _KERNEL_PROCATR_SYS_DSP                                FALSE           /**< %jp{ディスパッチ禁止状態管理をプロセッサで実施するか?} */
+#define _KERNEL_PROCATR_SYS_SYS                                FALSE           /**< %jp{システム状態管理をプロセッサで実施するか?} */
+#define _KERNEL_PROCATR_SYS_DLY                                TRUE            /**< %jp{遅延ディスパッチ保留状態管理をプロセッサで実施するか?} */
+
+
+
+#endif /* _KERNEL__arch__proc__arm__arm_v6m__procatr_h__ */
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/dis_int.c b/kernel/source/arch/proc/arm/arm_v6m/dis_int.c
new file mode 100644 (file)
index 0000000..a247195
--- /dev/null
@@ -0,0 +1,31 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * @file  dis_int.c
+ * @brief %jp{ARMv7-M}%en{ARMv7-M}
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "core/core.h"
+#include "object/inhobj.h"
+
+
+/* 割込みの禁止 */
+ER dis_int(INTNO intno)
+{
+       if ( intno < _KERNEL_PROCATR_TMIN_INHNO || intno > _KERNEL_PROCATR_TMAX_INHNO )
+       {
+               return E_PAR;
+       }
+       
+       *(_KERNEL_REG_INT_CLRENA_BASE + (intno >> 2)) = (1 << (intno & 3));
+       
+       return E_OK;
+}
+
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/ena_int.c b/kernel/source/arch/proc/arm/arm_v6m/ena_int.c
new file mode 100644 (file)
index 0000000..306c7ea
--- /dev/null
@@ -0,0 +1,31 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * @file  dis_int.c
+ * @brief %jp{ARMv7-M}%en{ARMv7-M}
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "core/core.h"
+#include "object/inhobj.h"
+
+
+/* 割込みの許可 */
+ER ena_int(INTNO intno)
+{
+       if ( intno < _KERNEL_PROCATR_TMIN_INHNO || intno > _KERNEL_PROCATR_TMAX_INHNO )
+       {
+               return E_PAR;
+       }
+       
+       *(_KERNEL_REG_INT_SETENA_BASE + (intno >> 2)) = (1 << (intno & 3));
+       
+       return E_OK;
+}
+
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kcre_ctx.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kcre_ctx.S
new file mode 100644 (file)
index 0000000..f47b9b7
--- /dev/null
@@ -0,0 +1,57 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .text
+                               .align  2
+
+
+/************************************************
+  実行コンテキストの作成
+  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]:実行時パラメータ
+ ************************************************/
+                               .global _kernel_cre_ctx
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_cre_ctx, %function
+_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を設定 */
+                               ldr             r2, =ctx_entry
+                               str             r2, [r1, #16]                           /* lr 部分にエントリーアドレスを設定 */
+                               str             r1, [r0]                                        /* ctxcb に新 sp を保存 */
+                               bx              lr                                                      /* リターン */
+
+                               .size   _kernel_cre_ctx, .-_kernel_cre_ctx
+
+
+/************************************************
+  実行コンテキストエントリーアドレス
+ ************************************************/
+                               .code   16
+                               .thumb_func
+                               .type   ctx_entry, %function
+ctx_entry:
+                               mov             r0, r5                                          /* par1を設定 */
+                               mov             r1, r6                                          /* par2を設定 */
+                               bx              r4                                                      /* entry を実行 */
+
+                               .size   ctx_entry, .-ctx_entry
+
+
+                               .end
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kdis_int.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kdis_int.S
new file mode 100644 (file)
index 0000000..d17fc54
--- /dev/null
@@ -0,0 +1,28 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .text
+                               .align  2
+
+/************************************************
+   割り込み禁止
+   void _kernel_dis_int(void)
+ ************************************************/
+                               .global _kernel_dis_int
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_dis_int, %function
+_kernel_dis_int:
+                               cpsid   i                       /* 割り込み禁止 */
+                               bx              lr                      /* リターン */
+                               .size   _kernel_dis_int, .-_kernel_dis_int
+
+                               .end
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kena_int.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kena_int.S
new file mode 100644 (file)
index 0000000..e8f0939
--- /dev/null
@@ -0,0 +1,30 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+                               .text
+                               .align  2
+
+/************************************************
+  割り込み許可
+  void _kernel_ena_int(void)
+ ************************************************/
+                               .global _kernel_ena_int
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_ena_int, %function
+_kernel_ena_int:
+                               cpsie   i                       /* 割り込み許可 */
+                               bx              lr                      /* リターン */
+                               .size   _kernel_ena_int, .-_kernel_ena_int
+
+
+                               .end
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/khwf_hdr.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/khwf_hdr.S
new file mode 100644 (file)
index 0000000..e4bf503
--- /dev/null
@@ -0,0 +1,31 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+
+                               .text
+                               .align  2
+
+
+/************************************************
+  リセットハンドラ
+ ************************************************/
+                               .global _kernel_hw_fault_handler
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_hw_fault_handler, %function
+_kernel_hw_fault_handler:
+                               b               _kernel_hw_fault_handler
+                               
+                               .size   _kernel_hw_fault_handler, .-_kernel_hw_fault_handler
+
+
+                               .end
+
+
+; end of file
+
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/knmi_hdr.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/knmi_hdr.S
new file mode 100644 (file)
index 0000000..1867a07
--- /dev/null
@@ -0,0 +1,31 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .text
+                               .align  2
+
+                               .global main
+
+/************************************************
+  NMIハンドラ
+ ************************************************/
+                               .global _kernel_nmi_handler
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_nmi_handler, %function
+_kernel_nmi_handler:
+                               b               _kernel_nmi_handler
+                               
+                               .size   _kernel_nmi_handler, .-_kernel_nmi_handler
+
+
+                               .end
+
+
+; end of file
+
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kpnd_hdr.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kpnd_hdr.S
new file mode 100644 (file)
index 0000000..2dc7724
--- /dev/null
@@ -0,0 +1,80 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .text
+                               .align  2
+
+                               .global _kernel_dsp_tsk
+
+/************************************************
+  PendSV ハンドラ
+ ************************************************/
+                               .global _kernel_pendsv_handler
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_pendsv_handler, %function
+_kernel_pendsv_handler:
+                               /* 割り込み禁止 */
+                               cpsid   i
+
+                               /* リターンアドレス変更 */
+                               mrs             r0, psp
+                               ldr             r1, [r0, #24]
+                               ldr             r2, =pendsv_ret_addr
+                               str             r1, [r2]
+
+                               ldr             r1, =_kernel_pendsv_proc
+                               str             r1, [r0, #24]
+
+                               /* スレッドモードへの復帰 */
+                               bx              lr
+
+                               .size   _kernel_pendsv_handler, .-_kernel_pendsv_handler
+
+
+                               .thumb_func
+                               .type   _kernel_pendsv_proc, %function
+_kernel_pendsv_proc:
+                               push    {r0}
+                               push    {r0, r1, r2, r3}
+                               mov             r0, r12
+                               push    {r0, lr}
+
+                               mrs             r0, apsr
+                               push    {r0}
+
+                               /* リターンアドレス格納 */
+                               ldr             r0, =pendsv_ret_addr
+                               ldr             r1, [r0]
+                               add             r1, r1, #1
+                               str             r1, [sp, #28]
+
+                               /* 遅延ディスパッチ */
+                               blx             _kernel_dsp_tsk
+
+                               pop             {r0}
+                               msr             apsr, r0
+
+                               cpsie   i
+                               
+                               pop             {r0, r1}
+                               mov             r12, r0
+                               mov             lr, r1
+                               pop             {r0, r1, r2, r3}
+                               pop             {pc}
+
+                               .size   _kernel_pendsv_proc, .-_kernel_pendsv_proc
+
+
+                               .comm   pendsv_ret_addr, 4, 4
+
+                               .end
+
+
+; end of file
+
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kref_ctl.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kref_ctl.S
new file mode 100644 (file)
index 0000000..3bdad90
--- /dev/null
@@ -0,0 +1,30 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+                               .syntax unified
+
+                               .text
+                               .align  2
+
+
+/************************************************
+  CONTROLレジスタの取得
+  int _kernel_ref_cpu_control(void)
+ ************************************************/
+                               .global _kernel_ref_cpu_control
+                               .thumb
+                               .thumb_func
+                               .type   _kernel_ref_cpu_control, %function
+_kernel_ref_cpu_control:
+                               mrs             r0, CONTROL
+                               bx              lr
+                               .size   _kernel_ref_cpu_control, .-_kernel_ref_cpu_control
+
+                               .end
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/krst_ctx.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/krst_ctx.S
new file mode 100644 (file)
index 0000000..88beb3e
--- /dev/null
@@ -0,0 +1,34 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .syntax unified
+
+                               .text
+                               .align  2
+
+/************************************************
+  実行コンテキストのリスタート
+  void _kernel_rst_ctx(
+                       VP_INT         par1,    r0 : 実行時パラメータ
+                       VP_INT         par2,    r1 : 実行時パラメータ
+                       FP             entry,   r2 : 実行アドレス
+                       VP             isp)             r3 : スタックポインタ
+ ************************************************/
+                               .global _kernel_rst_ctx
+                               .thumb
+                               .thumb_func
+                               .type   _kernel_rst_ctx, %function
+_kernel_rst_ctx:
+                               mov             sp, r3          /* スタックを初期値にリセット */
+                               bx              r2                      /* エントリーアドレスから再開始 */
+                               .size   _kernel_rst_ctx, .-_kernel_rst_ctx
+
+                               .end
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/krst_hdr.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/krst_hdr.S
new file mode 100644 (file)
index 0000000..df1caff
--- /dev/null
@@ -0,0 +1,79 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .text
+                               .align  2
+
+                               .extern         ___data
+                               .extern         ___data_end
+                               .extern         ___bss
+                               .extern         ___bss_end
+                               .extern         main
+                               .global         main
+
+/************************************************
+  リセットハンドラ
+ ************************************************/
+                               .global _kernel_reset_handler
+                               .code   16
+                               .thumb_func
+                               .type   _kernel_reset_handler, %function
+_kernel_reset_handler:
+                               /* PSPへ切り替え */
+                               mov             r1, sp
+                               mov             r2, #2
+                               mrs             r0, control
+                               orr             r0, r0, r2
+                               msr             control, r0
+                               isb
+                               mov             sp, r1
+
+                               /* PendSV 優先度設定 */
+                               ldr             r0, =0xe000ed20
+                               ldr             r2, =0x00ff0000
+                               ldr             r1, [r0]
+                               orr             r1, r1, r2
+                               str             r1, [r0]
+
+                               /* DATA領域のコピー */
+                               ldr             r0, =___data_rom
+                               ldr             r1, =___data
+                               ldr             r2, =___data_end
+
+data_loop:
+                               ldr             r3, [r0]
+                               add             r0, r0, #4
+                               str             r3, [r1]
+                               add             r1, r1, #4
+                               cmp             r1, r2
+                               bcc             data_loop
+
+                               /* BSS領域の初期化 */
+                               ldr             r0, =___bss
+                               ldr             r1, =___bss_end
+                               mov             r2, #0
+bss_loop:
+                               str             r2, [r0]
+                               add             r0, r0, #4
+                               cmp             r0, r1
+                               bcc             bss_loop
+
+                               /* main関数の呼び出し */
+                               blx             main
+end_loop:
+                               b               end_loop
+
+
+                               .size   _kernel_reset_handler, .-_kernel_reset_handler
+
+
+                               .end
+
+
+; end of file
+
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kswi_ctx.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kswi_ctx.S
new file mode 100644 (file)
index 0000000..5a2174b
--- /dev/null
@@ -0,0 +1,55 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .syntax unified
+
+
+                               .text
+                               .align  2
+
+/************************************************
+  実行コンテキストの切替
+  void _kernel_swi_ctx(
+                       _KERNEL_T_CTXCB *pk_ctxinf_nxt, r0 : 切り替えるコンテキスト
+                       _KERNEL_T_CTXCB *pk_ctxinf_now) r1 : 現在のコンテキストの保存先
+ ************************************************/
+                               .global _kernel_swi_ctx
+                               .thumb
+                               .thumb_func
+                               .type   _kernel_swi_ctx, %function
+_kernel_swi_ctx:
+                               push    {r4-r7, lr}                     /* レジスタ保存 */
+                               mov             r4, sp
+                               str             r4, [r1]
+               /* --- そのまま _kernel_sta_ctx に続ける */
+
+
+/************************************************
+  実行コンテキストの開始
+  void _kernel_sta_ctx(
+                       _KERNEL_T_CTXCB *pk_ctxcb)              r0: 実行を開始するコンテキスト
+ ************************************************/
+                               .global _kernel_sta_ctx
+                               .thumb
+                               .thumb_func
+                               .type   _kernel_sta_ctx, %function
+_kernel_sta_ctx:
+                               ldr             r4, [r0]                        /* スタックポインタ復帰 */
+                               mov             sp, r4
+                               pop             {r4-r7, pc}                     /* レジスタ復帰 */
+
+                               .size   _kernel_swi_ctx, .-_kernel_swi_ctx
+                               .size   _kernel_sta_ctx, .-_kernel_sta_ctx
+
+
+
+                               .end
+
+
+; end of file
+
diff --git a/kernel/source/arch/proc/arm/arm_v6m/gcc/kwai_int.S b/kernel/source/arch/proc/arm/arm_v6m/gcc/kwai_int.S
new file mode 100644 (file)
index 0000000..8f13434
--- /dev/null
@@ -0,0 +1,32 @@
+/** 
+ *  Hyper Operating System V4 Advance
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+                               .syntax unified
+
+
+                               .text
+                               .align  2
+
+/************************************************
+  割り込み待ち(CPUのアイドル処理)
+  void         _kernel_wai_int(void);
+ ************************************************/
+                               .global _kernel_wai_int
+                               .thumb
+                               .thumb_func
+                               .type   _kernel_wai_int, %function
+_kernel_wai_int:
+                                                                                       /* WaitForInterrupt */
+                               b               _kernel_wai_int
+                               .size   _kernel_wai_int, .-_kernel_wai_int
+
+
+                               .end
+
+
+/* end of file */
diff --git a/kernel/source/arch/proc/arm/arm_v6m/vclr_int.c b/kernel/source/arch/proc/arm/arm_v6m/vclr_int.c
new file mode 100644 (file)
index 0000000..75af700
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+ *  Hyper Operating System V4 Advance
+ *
+ * @file  dis_int.c
+ * @brief %jp{ARMv7-M}%en{ARMv7-M}
+ *
+ * Copyright (C) 1998-2011 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "core/core.h"
+#include "object/inhobj.h"
+
+
+/* 割込みのクリア */
+ER vclr_int(INTNO intno)
+{
+       if ( intno < _KERNEL_PROCATR_TMIN_INHNO || intno > _KERNEL_PROCATR_TMAX_INHNO )
+       {
+               return E_PAR;
+       }
+
+       *(_KERNEL_REG_INT_CLRPEND_BASE + (intno >> 2)) = (1 << (intno & 3));
+
+       return E_OK;
+}
+
+
+
+/* end of file */
index 95df685..68b4f64 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
                                .text
                                .align  2
 
index c276ed5..3e83e7c 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 
+                               .syntax unified
 
                                .text
                                .align  2
index d17a64a..3d7cea3 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
                                .text
                                .align  2
 
index 0d0eb0c..ffc4019 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
 
                                .text
                                .align  2
index 0794dce..3b66d0e 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
 
                                .text
                                .align  2
index 75a7a49..3bdad90 100644 (file)
@@ -5,6 +5,7 @@
  * http://sourceforge.jp/projects/hos/
  */
 
+                               .syntax unified
 
                                .text
                                .align  2
index 8c76c25..88beb3e 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
                                .text
                                .align  2
 
index 9ef7a0e..5a2174b 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
 
                                .text
                                .align  2
index 52f84cc..8f13434 100644 (file)
@@ -6,6 +6,8 @@
  */
 
 
+                               .syntax unified
+
 
                                .text
                                .align  2
index 28d1846..a916ca6 100644 (file)
@@ -120,7 +120,7 @@ all: kernel_make makeexe_all $(TARGET_EXE) $(TARGET_MOT) $(TARGET_HEX)
 # %jp{クリーン}%en{clean}
 .PHONY : clean
 clean: makeexe_clean
-       rm -f $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ../kernel_cfg.c ../kernel_id.h
+       rm -f $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ../kernel_cfg.c ../kernel_id.h kernel_vct.c
 
 # %jp{依存関係更新}%en{depend}
 .PHONY : depend
@@ -136,7 +136,7 @@ mostlyclean: clean kernel_clean
 
 
 # %jp{コンフィギュレータ実行}%en{configurator}
-../kernel_cfg.c ../kernel_id.h: ../system.cfg $(KERNEL_CFGRTR)
+../kernel_cfg.c ../kernel_id.h kernel_vct.c: ../system.cfg $(KERNEL_CFGRTR)
        cpp -E ../system.cfg ../system.i
        $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
 
diff --git a/sample/arm/stm32f103/gcc/kernel_vct.c b/sample/arm/stm32f103/gcc/kernel_vct.c
deleted file mode 100644 (file)
index 950f3d8..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/* ------------------------------------------------------------------------ */
-/*  HOS-V4a  kernel configuration                                           */
-/*                                                                          */
-/* ------------------------------------------------------------------------ */
-
-
-#include "kernel.h"
-#include "arch/proc/arm/arm_v7m/procatr.h"
-#include "arch/proc/arm/arm_v7m/proc.h"
-#include "arch/irc/none/ircatr.h"
-#include "arch/irc/none/irc.h"
-#include "config/cfgknl.h"
-#include "parser/parsknl.h"
-#include "core/objid.h"
-#include "core/objhdl.h"
-#include "object/tskobj.h"
-#include "object/semobj.h"
-#include "object/flgobj.h"
-#include "object/dtqobj.h"
-#include "object/mbxobj.h"
-#include "object/mtxobj.h"
-#include "object/mpfobj.h"
-#include "object/inhobj.h"
-#include "object/isrobj.h"
-#include "object/cycobj.h"
-#include "kernel_id.h"
-
-#include "ostimer.h"
-#include "sample.h"
-
-
-
-/* ------------------------------------------ */
-/*        define interrupt handler            */
-/* ------------------------------------------ */
-
-extern VP       _kernel_int_stkblk[((512) + sizeof(VP) - 1) / sizeof(VP)];
-
-
-_KERNEL_T_INHINF _kernel_inh_tbl[256] =
-       {
-               {(FP)(&_kernel_int_stkblk[((512) + sizeof(VP) - 1) / sizeof(VP)])},             /* stack pointer */
-               {(FP)(_kernel_reset_handler)},          /* reset handler */
-               {(FP)(_kernel_nmi_handler)},            /* non maskable intterupt handler */
-               {(FP)(_kernel_hw_fault_handler)},               /* hard fault handler */
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)(_kernel_pendsv_handler)},         /* hard fault handler */
-               {(FP)(OsTimer_Isr)},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-               {(FP)NULL},
-       };
-
-
-
-/* ------------------------------------------------------------------------ */
-/*  End of file                                                             */
-/* ------------------------------------------------------------------------ */
index 428a668..f5a88ef 100644 (file)
@@ -30,10 +30,13 @@ void Sample_Initialize(VP_INT exinf)
 /** %jp{適当な時間待つ} */
 void rand_wait(void)
 {
-       int r;
+       static  long    x = 1;
+       int                     r;
 
+       /* 擬似乱数生成 */
        wai_sem(SEMID_RAND);
-       r = 500; /*rand();*/
+       x = x * 214013 + 2531011;
+       r = ((x >> 16) & 0xffff);
        sig_sem(SEMID_RAND);
 
        dly_tsk((r % 100) + 10);