2 * Hyper Operating System V4 Advance
5 * @brief %jp{コンテキスト制御}%en{context control}
7 * Copyright (C) 1998-2014 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #ifndef _KERNEL__arch__proc__arm__arm_v7a__procatr_h__
13 #define _KERNEL__arch__proc__arm__arm_v7a__procatr_h__
17 /* %jp{プロセッサアーキテクチャ定義のあるインクルードパス} */
18 #define _KERNEL_PROCATR_INC_PATH "arm/arm_v7a"
21 /* %jp{プロセッサアーキテクチャに依存した属性} */
22 #define _KERNEL_PROCATR_CTX_STK FALSE /**< %jp{コンテキスト生成にスタック領域の指定が必要か?} */
23 #define _KERNEL_PROCATR_CTX_STKSZ FALSE /**< %jp{コンテキスト生成にスタックサイズの指定が必要か?} */
24 #define _KERNEL_PROCATR_CTX_ISP TRUE /**< %jp{コンテキスト生成に初期スタックポインタ値が必要か?} */
25 #define _KERNEL_PROCATR_CTX_DEL FALSE /**< %jp{別コンテキストからのコンテキスト削除が必要か?} */
26 #define _KERNEL_PROCATR_CTX_RST TRUE /**< %jp{自コンテキストのリスタートが可能か?} */
28 #define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
29 #define _KERNEL_PROCATR_DEF_SYSSTKSZ 64
30 #define _KERNEL_PROCATR_DEF_INTSTKSZ 256
32 #define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
33 #define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
35 #define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
36 #define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
38 #define _KERNEL_PROCATR_TMIN_EXCNO 0 /**< %jp{CPU例外ハンドラ番号の最小値} */
39 #define _KERNEL_PROCATR_TMAX_EXCNO 4 /**< %jp{CPU例外ハンドラ番号の最大値} */
41 #define _KERNEL_PROCATR_SYSSTK_NUM 2 /**< %jp{システムスタックは何本必要か?} */
43 #define _KERNEL_PROCATR_SIGNED_INT 0 /**< %jp{符号付整数と符号無し整数のどちらが得意か?(符号付き:1, 符号無し:-1, 同じ:0)} */
44 #define _KERNEL_PROCATR_TBIT_INT 32 /**< %jp{プロセッサに最適な整数型のビット数} */
45 #define _KERNEL_PROCATR_TBIT_PTR 32 /**< %jp{ポインタのビット数} */
46 #define _KERNEL_PROCATR_MEM_ALIGN 32 /**< %jp{適切なメモリのアライメント(byte単位)} */
47 #define _KERNEL_PROCATR_STK_ALIGN 8 /**< %jp{適切なスタックのアライメント(byte単位)} */
48 #define _KERNEL_PROCATR_ALLOW_UNALIGN FALSE /**< %jp{アンアラインアクセスは可能か?} */
50 #define _KERNEL_PROCATR_SYS_CTX FALSE /**< %jp{コンテキスト状態管理をプロセッサで実施するか?} */
51 #define _KERNEL_PROCATR_SYS_LOC FALSE /**< %jp{CPUロック状態管理をプロセッサで実施するか?} */
52 #define _KERNEL_PROCATR_SYS_DSP FALSE /**< %jp{ディスパッチ禁止状態管理をプロセッサで実施するか?} */
53 #define _KERNEL_PROCATR_SYS_SYS FALSE /**< %jp{システム状態管理をプロセッサで実施するか?} */
54 #define _KERNEL_PROCATR_SYS_DLY FALSE /**< %jp{遅延ディスパッチ保留状態管理をプロセッサで実施するか?} */
58 #define _KERNEL_ARM_INHNO_IRQ 0 /**< %jp{IRQ割込みの割込みハンドラ番号} */
59 #define _KERNEL_ARM_INHNO_FIQ 1 /**< %jp{FIQ割込みの割込みハンドラ番号} */
61 #define _KERNEL_ARM_EXCNO_RST 0 /**< %jp{リセットのCPU例外ハンドラ番号} */
62 #define _KERNEL_ARM_EXCNO_UND 1 /**< %jp{無効命令例外のCPU例外ハンドラ番号} */
63 #define _KERNEL_ARM_EXCNO_SWI 2 /**< %jp{ソフトウェア割込みのCPU例外ハンドラ番号} */
64 #define _KERNEL_ARM_EXCNO_PRE 3 /**< %jp{プリフェッチアボートのCPU例外ハンドラ番号} */
65 #define _KERNEL_ARM_EXCNO_ABT 4 /**< %jp{データアボートのCPU例外ハンドラ番号} */
69 #endif /* _KERNEL__arch__proc__arm__arm_v7a__procatr_h__ */