Changeset 95 for ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_config.h
- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_config.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 11 11 * Nagoya Municipal Industrial Research Institute, JAPAN 12 12 * 13 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 14 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 15 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 16 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 17 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 18 * R[hÉÜÜêÄ¢é±ÆD 19 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 20 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 21 gipÒ} 22 * j 23 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 24 * ØKèðfÚ·é±ÆD 25 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 26 * Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 27 * (a) Äzzɺ¤hL 28 gipÒ}j 29 AÈÇjÉCãLÌì 30 * \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 31 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 32 * ·é±ÆD 33 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 34 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 35 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 36 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 13 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 15 * 再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 17 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース 18 * コード中に含まれていること. 19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 20 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 21 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 22 * 証規定を掲載すること. 23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 24 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. 25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 26 * 権表示,この利用条件および下記の無保証規定を掲載すること. 27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 28 * 告すること. 29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 30 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 31 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 32 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 37 33 * 38 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ39 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη40 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp41 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð42 * íÈ¢D34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 35 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 36 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 37 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 38 * わない. 43 39 * 44 40 */ 45 41 46 42 /* 47 * vZbT˶W 48 [iRL78j 49 * 50 * ±ÌCN[ht@CÍC"<vZbT^Ô>_config.h" ÌÝ©ç 51 * CN[h³êéD¼Ìt@C©ç¼ÚCN[hµÄÍÈçÈ¢D 43 * プロセッサ依存モジュール(RL78) 44 * 45 * このインクルードファイルは,"<プロセッサ型番>_config.h" のみから 46 * インクルードされる.他のファイルから直接インクルードしてはならない. 52 47 */ 53 48 … … 56 51 57 52 /* 58 * (1) ReLXgÉÖ·éè`59 */ 60 61 /* ¤LX^bNÌæ̽ßÌX^bN|C^úl𶬷é}N*/53 * (1) コンテキストに関する定義 54 */ 55 56 /* 共有スタック領域のためのスタックポインタ初期値を生成するマクロ */ 62 57 #define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz))) 63 58 64 59 /* 65 * (2) VXeóÔÉÖ·éè`66 */ 67 68 /* 69 * CPU bNóÔÅÌÝDæx}XN(IPM)Ìl70 * TIPM_LOCK ÍCCPUbNóÔð\»·éÝDæx}XN(IPM)Ìlð¦·D71 * J[lÇÌÝÉηéÝDæxÌŬl(TMIN_INTPRI)ɵ¢D60 * (2) システム状態に関する定義 61 */ 62 63 /* 64 * CPUロック状態での割込み優先度マスク(IPM)の値 65 * TIPM_LOCKは,CPUロック状態を表現する割込み優先度マスク(IPM)の値を示す. 66 * カーネル管理の割込みに対する割込み優先度の最小値(TMIN_INTPRI)に等しい. 72 67 */ 73 68 #ifndef TIPM_LOCK … … 76 71 77 72 /* 78 * ÝDæx}XN(IPM) ÆvZbTÌÝDæx}XN(ISP) ÌÏ·79 * 80 * RL78 ÅÍCPSWWX^̺ʩç¦Ärbg1¨æÑ 2 Ì 2 rbgÉ81 * CT[rXEvCIeBEtO(ISP) Ìlªi[³êéD82 * 83 * J[lÌÇ·éIPM (-1©çA±µ½Ìl) ðgÁÄ84 * vZbTÌ ISP ð§ä·é½ßÉÏ·ªKvÆÈéD85 * 86 * wèµ½xȺÌÝð}XN·éêÍCISPÌÝèlð87 * ÚIÌxæèê¢Dæx(lƵÄͬ³¢)lÉ·éKvª éD73 * 割込み優先度マスク(IPM) とプロセッサの割込み優先度マスク(ISP) の変換 74 * 75 * RL78 では,PSWレジスタの下位から数えてビット1および 2 の 2 ビットに 76 * インサービス・プライオリティ・フラグ(ISP) の値が格納される. 77 * 78 * カーネルの管理するIPM (-1から連続した負の値) を使って 79 * プロセッサの ISP を制御するために変換が必要となる. 80 * 81 * 指定したレベル以下の割込みをマスクする場合は,ISPの設定値を 82 * 目的のレベルより一つ高い優先度(値としては小さい)値にする必要がある. 88 83 */ 89 84 #define IPM2ISP(ipm) (((uint8_t)(4-1+(ipm))) << 1U) /* IPM-->ISP(ipm=-3,-2,-1,0) */ … … 92 87 93 88 /* 94 * ÝDæx}XNÌÁÊÈlÉηéà\»95 */ 96 #define ISP_LOCK (IPM2ISP(TIPM_LOCK)) /* CPU bNóÔÅÌISP */97 #define ISP_ENAALL (IPM2ISP(TIPM_ENAALL)) /* TIPM_ENAALL ÅÌISP */98 99 100 101 /* 102 * (3) Ýf(ÝvC)103 */ 104 105 /* 106 * intno ªCdis_int^ena_intÉηéÝÔƵÄ107 * LøÈlÅ éêÉtrueC»¤ÅÈ¢êÉfalseðÔ·}N89 * 割込み優先度マスクの特別な値に対する内部表現 90 */ 91 #define ISP_LOCK (IPM2ISP(TIPM_LOCK)) /* CPUロック状態での ISP */ 92 #define ISP_ENAALL (IPM2ISP(TIPM_ENAALL)) /* TIPM_ENAALL での ISP */ 93 94 95 96 /* 97 * (3) 割込み処理モデル(割込み要求ライン) 98 */ 99 100 /* 101 * intnoが,dis_int/ena_intに対する割込み番号として 102 * 有効な値である場合にtrue,そうでない場合にfalseを返すマクロ 108 103 */ 109 104 #define VALID_INTNO_DISINT(intno) VALID_INTNO(intno) … … 111 106 112 107 /* 113 * IPM ©çݧäWX^ÅÌ\»ÉÏ··é}N108 * IPM から割込み制御レジスタでの表現に変換するマクロ 114 109 */ 115 110 #define IPM2ILVL(ipm) ((ipm)+4) // ipm=-1,-2,-3,-4 … … 117 112 118 113 /* 119 * (4) Ýf(Ýnh)120 */ 121 122 /* 123 * ÝnhÌüû̶¬}N114 * (4) 割込み処理モデル(割込みハンドラ) 115 */ 116 117 /* 118 * 割込みハンドラの入口処理の生成マクロ 124 119 */ 125 120 #define _INT_ENTRY(inhno, inthdr) _kernel_##inthdr##_##inhno##_entry … … 131 126 132 127 /* 133 * (5) CPU áOf134 */ 135 136 /* 137 * CPU áOnhÌüû̶¬}N128 * (5) CPU例外処理モデル 129 */ 130 131 /* 132 * CPU例外ハンドラの入口処理の生成マクロ 138 133 */ 139 134 #define _EXC_ENTRY(excno , exchdr) _kernel_##exchdr##_##excno##_entry … … 145 140 146 141 /* 147 * (6) ú»EI¹148 */ 149 150 // è`ȵ142 * (6) 初期化・終了処理 143 */ 144 145 // 定義なし 151 146 152 147 #ifndef TOPPERS_MACRO_ONLY 153 148 154 149 /* 155 * (1) ReLXgÉÖ·éè`156 */ 157 158 /* 159 * ReLXgÌQÆ150 * (1) コンテキストに関する定義 151 */ 152 153 /* 154 * コンテキストの参照 160 155 */ 161 156 extern bool_t sense_context(void); 162 157 163 158 /* 164 * (2) VXeóÔÉÖ·éè`165 */ 166 167 /* 168 * CPU bNtOÀ»Ì½ßÌÏ(prc_config.c)169 */ 170 extern bool_t lock_flag; /* CPU bNtOÌl*/171 extern uint8_t saved_psw; /* CPU bNóÔÚsOÌÝDæxx*/172 173 /* 174 * CPU bNóÔÖÌÚs175 * ±ÌÖÍCCPU bNóÔÌÆ«ÉÄѾ³êÈ¢±ÆðOñÆ·éD159 * (2) システム状態に関する定義 160 */ 161 162 /* 163 * CPUロックフラグ実現のための変数 (prc_config.c) 164 */ 165 extern bool_t lock_flag; /* CPUロックフラグの値 */ 166 extern uint8_t saved_psw; /* CPUロック状態移行前の割込み優先度レベル */ 167 168 /* 169 * CPU ロック状態への移行 170 * この関数は,CPU ロック状態のときに呼びだされないことを前提とする. 176 171 */ 177 172 extern void t_lock_cpu(void); … … 179 174 180 175 /* 181 * CPU bNóÔÌð182 * ±ÌÖÍCCPU bNóÔÌÆ«ÉÌÝÄѾ³êé±ÆðOñÆ·éD176 * CPUロック状態の解除 177 * この関数は,CPU ロック状態のときにのみ呼びだされることを前提とする. 183 178 */ 184 179 extern void t_unlock_cpu(void); … … 187 182 188 183 /* 189 * CPU bNóÔÌQÆ184 * CPUロック状態の参照 190 185 */ 191 186 extern bool_t x_sense_lock(void); … … 195 190 196 191 /* 197 * ÝDæx}XN(IPM) ÌÝè198 * wèµ½ÝDæx(-1, -2, ..., TMIN_INTPRI) ð³É199 * vZbTÌÝDæxx (IPL) ðÝè·éD192 * 割込み優先度マスク(IPM) の設定 193 * 指定した割込み優先度(-1, -2, ..., TMIN_INTPRI) を元に 194 * プロセッサの割込み優先度レベル (IPL) を設定する. 200 195 */ 201 196 extern void x_set_ipm(PRI intpri); … … 210 205 211 206 /* 212 * (3) Ýf(ÝvC)213 */ 214 215 /* 216 * ÝvöÌxè`e[u (kernel_cfg.c ÉæéoÍ)217 * ÝÔ(INTNO) ©çÝDæxðæ¾·é½ßÉgpD207 * (3) 割込み処理モデル(割込み要求ライン) 208 */ 209 210 /* 211 * 割込み要因毎のレベル定義テーブル (kernel_cfg.c による出力) 212 * 割込み番号(INTNO) から割込み優先度を取得するために使用. 218 213 */ 219 214 extern const PRI intpri_table[]; 220 215 221 216 /* 222 * ÝvÖ~tOÌZbg(prc_config.c)223 * wèµ½ÝÔÉηéÝvCÌÝvtOðZbg·éD224 * Ý®«ªÝè³êĢȢÝvCÌÝÔðwèµ½225 * êÍCPÉ FALSE ðÔ·D217 * 割込み要求禁止フラグのセット(prc_config.c) 218 * 指定した割込み番号に対応する割込み要求ラインの割込み要求フラグをセットする. 219 * 割込み属性が設定されていない割込み要求ラインの割込み番号を指定した 220 * 場合は,単に FALSE を返す. 226 221 */ 227 222 extern bool_t x_disable_int(INTNO intno); … … 231 226 232 227 /* 233 * ÝvÖ~tOÌNA(prc_config.c)234 * wèµ½ÝÔÉηéÝvCÌÝvtOðNA·éD235 * Ý®«ªÝè³êĢȢÝvCÌÝÔðwèµ½236 * êÍCPÉ FALSE ðÔ·D228 * 割込み要求禁止フラグのクリア(prc_config.c) 229 * 指定した割込み番号に対応する割込み要求ラインの割込み要求フラグをクリアする. 230 * 割込み属性が設定されていない割込み要求ラインの割込み番号を指定した 231 * 場合は,単に FALSE を返す. 237 232 */ 238 233 extern bool_t x_enable_int(INTNO intno); … … 243 238 244 239 /* 245 * ÝvÌNA(prc_config.c)240 * 割込み要求のクリア(prc_config.c) 246 241 */ 247 242 extern void x_clear_int(INTNO intno); … … 252 247 253 248 /* 254 * ÝvÌ`FbN(prc_config.c)249 * 割込み要求のチェック(prc_config.c) 255 250 */ 256 251 extern bool_t x_probe_int(INTNO intno); … … 260 255 261 256 /* 262 * ÝvCÌ®«ÌÝè(prc_config.c)257 * 割込み要求ラインの属性の設定 (prc_config.c) 263 258 */ 264 259 extern void x_config_int(INTNO intno, ATR intatr, PRI intpri); 265 260 266 261 /* 267 * (4) Ýf(Ýnh)268 */ 269 270 /* 271 * ÝnhÌÝè272 * 273 * RL78 ÍROMÉÝxN^ðzu·é½ßC{ÖÍóÉè`·éD262 * (4) 割込み処理モデル(割込みハンドラ) 263 */ 264 265 /* 266 * 割込みハンドラの設定 267 * 268 * RL78はROMに割込みベクタを配置するため,本関数は空に定義する. 274 269 */ 275 270 #define x_define_inh(inhno, inthdr) 276 271 277 272 /* 278 * ÝnhÌüûÅKvÈ279 */ 280 #define i_begin_int(intno) /* ÁÉs¤×«ÍÈ¢*/281 282 /* 283 * ÝnhÌoûÅKvÈ284 */ 285 #define i_end_int(intno) /* ÁÉs¤×«ÍÈ¢*/286 287 /* 288 * (5) CPU áOf289 */ 290 291 /* 292 * CPU áOnhÌÝè293 * RL78 Í ROM ÉxN^ðzu·é½ßC{ÖÍóÉè`·éD273 * 割込みハンドラの入口で必要な処理 274 */ 275 #define i_begin_int(intno) /* 特に行うべき処理はない */ 276 277 /* 278 * 割込みハンドラの出口で必要な処理 279 */ 280 #define i_end_int(intno) /* 特に行うべき処理はない */ 281 282 /* 283 * (5) CPU例外処理モデル 284 */ 285 286 /* 287 * CPU例外ハンドラの設定 288 * RL78 は ROM にベクタを配置するため,本関数は空に定義する. 294 289 */ 295 290 #define x_define_exc(excno, exchdr) 296 291 297 292 /* 298 * (6) ú»EI¹299 */ 300 301 /* 302 * vZbT˶Ìú»(prc_config.c)293 * (6) 初期化・終了処理 294 */ 295 296 /* 297 * プロセッサ依存の初期化(prc_config.c) 303 298 */ 304 299 extern void prc_initialize(void); 305 300 306 301 /* 307 * dispatcher ÄÑoµOÉ^[Qbg˶ÅKvÈðs¤½ßÌÖ302 * dispatcher 呼び出し前にターゲット依存で必要な処理を行うための関数 308 303 * (prc_support.asm) 309 304 */ … … 311 306 312 307 /* 313 * J[lÌI¹ÌÄoµiprc_support.asmj314 * 315 * call_exit_kernel ÍCJ[lÌI¹ÉÄÑo³êCX^bN|C^ð316 * ú»µCJ[lÌI¹iexit_kerneljðÄÑo·D308 * カーネルの終了処理の呼出し(prc_support.asm) 309 * 310 * call_exit_kernelは,カーネルの終了時に呼び出され,スタックポインタを 311 * 初期化し,カーネルの終了処理(exit_kernel)を呼び出す. 317 312 */ 318 313 extern void call_exit_kernel(void); 319 314 320 315 /* 321 * vZbT˶ÌI¹(prc_config.c)316 * プロセッサ依存の終了時処理(prc_config.c) 322 317 */ 323 318 extern void prc_terminate(void); 324 319 325 320 /* 326 * (7) dispacher ÅÌÝÒ¿321 * (7) dispacher での割込み待ち 327 322 */ 328 323 extern void idle_loop(void); -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.