Changeset 95 for ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r
- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- Location:
- ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/MANIFEST
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
-
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc.tf
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 $ Nagoya Municipal Industrial Research Institute, JAPAN 8 8 $ 9 $ ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 10 $ Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 11 $ ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 $ (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 $ \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 14 $ R[hÉÜÜêÄ¢é±ÆD 15 $ (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 16 $ Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gipÒ} 18 $ j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 20 $ ØKèðfÚ·é±ÆD 21 $ (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 22 $ Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 23 $ (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌì 26 $ \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 $ (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 28 $ ·é±ÆD 29 $ (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 30 $ ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 31 $ {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 32 $ ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 33 $ 34 $ {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ 35 $ ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη 36 $ éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp 37 $ Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð 38 $ íÈ¢D 39 $ 40 41 $ 42 $ vZbT˶ev[g 43 $ 44 45 $ 46 $ ATT_ISRÅgpÅ«éÝÔÆ»êÉηéÝnhÔ 9 $ 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 10 $ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 11 $ 再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 $ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 13 $ 表示,この利用条件および下記の無保証規定が,そのままの形でソース 14 $ コード中に含まれていること. 15 $ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 16 $ できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 17 $ ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 18 $ 証規定を掲載すること. 19 $ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 20 $ できない形で再配布する場合には,次のいずれかの条件を満たすこと. 21 $ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 22 $ 権表示,この利用条件および下記の無保証規定を掲載すること. 23 $ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 24 $ 告すること. 25 $ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 26 $ からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 27 $ 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 28 $ く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 $ 30 $ 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 31 $ びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 32 $ る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 33 $ により直接的または間接的に生じたいかなる損害に関しても,その責任を負 34 $ わない. 35 $ 36 37 $ 38 $ プロセッサ依存テンプレート 39 $ 40 41 $ 42 $ ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号 47 43 $ 48 44 … … 51 47 52 48 $ 53 $ DEF_INH ^DEF_EXCÅgpÅ«éÝnhÔ^CPUáOnhÔ49 $ DEF_INH/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号 54 50 $ 55 51 … … 58 54 59 55 $ 60 $ CFG_INT ÅgpÅ«éÝÔÆÝDæx56 $ CFG_INTで使用できる割込み番号と割込み優先度 61 57 $ 62 58 63 59 $INTNO_CFGINT_VALID = INTNO_VALID$ 64 60 65 $ // INTPRI_CFGINT_VALID ÍvZbTÉZbgÂ\ÈDæxÌÍÍð¦µC66 $ // J[lÇ(O)©Ç¤©ÌæÊðµÄ¢È¢D67 $ // J[lÇÆÈéÝDæxÌÍÍðÏX·éêC68 $ // TMIN_INTPRI (prc_kernel.h) ÌlðKvɶÄÏX·éD61 $ // INTPRI_CFGINT_VALID はプロセッサにセット可能な優先度の範囲を示し, 62 $ // カーネル管理(外)かどうかの区別をしていない. 63 $ // カーネル管理となる割込み優先度の範囲を変更する場合, 64 $ // TMIN_INTPRI (prc_kernel.h) の値を必要に応じて変更する. 69 65 $INTPRI_CFGINT_VALID = { -4,-3,-2,-1 }$ 70 66 71 67 $ 72 $ X^bNTCYÌ`FbNû@wè73 $ 74 $ ACgÉÖWȯ¶¬xÅANZXÅ«é68 $ スタックサイズのチェック方法指定 69 $ 70 $ アライメントに関係なく同じ速度でアクセスできる 75 71 $ 76 72 … … 79 75 80 76 $ 81 $ èè`77 $ 定数定義 82 78 $ 83 79 $TA_POSEDGE = TA_EDGE$ 84 80 85 81 $ 86 $ ^[Qbg˶ÌÝ®«Ìè`82 $ ターゲット依存の割込み属性の定義 87 83 $ 88 84 … … 90 86 91 87 $ 92 $ Wev[gt@CÌCN[h88 $ 標準テンプレートファイルのインクルード 93 89 $ 94 90 $INCLUDE "kernel.tf"$ … … 96 92 97 93 $ 98 $ CFG_INT Ì^[Qbg˶ÌG[`FbN94 $ CFG_INTのターゲット依存のエラーチェック 99 95 $ 100 96 $ … … 102 98 103 99 $FOREACH intno INT.ORDER_LIST$ 104 $ // INT ÝÉηéÝԩǤ©100 $ // INT割込みに対する割込み番号かどうか 105 101 $IF (LENGTH(FIND(INTNO_INT , INT.INTNO[intno])) != 0)$ 106 $ // TA_POSEDGE Ü½Í TA_NEGEDGE Ü½Í TA_BOTHEDGE ª¯ÉÝè³êÄÈ¢©Ç¤©102 $ // TA_POSEDGE または TA_NEGEDGE または TA_BOTHEDGE が同時に設定されてないかどうか 107 103 $IF 108 104 ( ((INT.INTATR[intno] & (TA_POSEDGE|TA_NEGEDGE|TA_BOTHEDGE)) != (TA_POSEDGE)) … … 113 109 $END$ 114 110 $ELSE$ 115 $ // INT ÝÈOÌÝÉ뵀 TA_ENAINT yÑ TA_EDGE ÈOÌÝ®«ªwè³êĢȢ©Ç¤©111 $ // INT割込み以外の割込みに対して TA_ENAINT 及び TA_EDGE 以外の割込み属性が指定されていないかどうか 116 112 $IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE)) != 0$ 117 113 $ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$ … … 122 118 123 119 $ 124 $ ÝÔ©çÝDæxðæèo·e[u120 $ 割込み番号から割込み優先度を取り出すテーブル 125 121 $ 126 122 … … 141 137 142 138 $ 143 $ A[LeN`˶ev[giAZuÅLªj144 $ 145 146 $ 147 $ AZuoÍt@C (¤Êª)139 $ アーキテクチャ依存テンプレート(アセンブラ固有部分) 140 $ 141 142 $ 143 $ アセンブラ出力ファイル (共通部分) 148 144 $ 149 145 … … 151 147 152 148 ;$NL$ 153 ; RL78 A[LeN`˶oÍt@C$NL$154 ;$NL$ 155 ; ÝnhüûÌè`$NL$149 ; RL78アーキテクチャ依存出力ファイル$NL$ 150 ;$NL$ 151 ; 割込みハンドラ入口処理の定義$NL$ 156 152 ;$NL$ 157 153 $NL$$NL$ … … 159 155 160 156 $ 161 $ Ýüû162 $ 163 164 $ 165 $ O[oV{157 $ 割込み入口処理 158 $ 159 160 $ 161 $ グローバルシンボル 166 162 $ 167 163 … … 169 165 $TAB$extrn __kernel_int_return$NL$$NL$ 170 166 171 $TAB$; RpCªgp·é saddrÌæÌWX^$NL$167 $TAB$; コンパイラが使用する saddr領域のレジスタ$NL$ 172 168 $TAB$extrn _@RTARG0,_@RTARG2,_@RTARG4,_@RTARG6,_@SEGAX,_@SEGDE$NL$ 173 169 $TAB$extrn _@NRARG0,_@NRARG1,_@NRARG2,_@NRARG3$NL$ … … 176 172 177 173 ; $NL$ 178 ; RpCªgp·ésaddrÌæÌÞð$NL$174 ; コンパイラが使用するsaddr領域の退避 $NL$ 179 175 ; $NL$ 180 176 save_saddr_regs macro$NL$ … … 191 187 $TAB$movw ax, _@SEGDE $NL$ 192 188 $TAB$push ax $NL$ 193 $TAB$$$if (ALLOC_REGVAR_TO_SADDR) ; -qr IvVðgp·éê$NL$189 $TAB$$$if (ALLOC_REGVAR_TO_SADDR) ; -qr オプションを使用する場合 $NL$ 194 190 $TAB$movw ax, _@NRARG0 $NL$ 195 191 $TAB$push ax $NL$ … … 215 211 216 212 $ 217 $ Ýnhüû213 $ 割込みハンドラ入口処理 218 214 $ 219 215 … … 223 219 $TAB$public __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry $NL$ 224 220 __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry: $NL$ 225 $TAB$push ax ; WX^ð^XNX^bNÖÞð$NL$221 $TAB$push ax ; レジスタをタスクスタックへ退避 $NL$ 226 222 $TAB$push bc $NL$ 227 223 $TAB$push de $NL$ 228 224 $TAB$push hl $NL$ 229 $TAB$mov a,es ; ES, CS ÌÞð$NL$225 $TAB$mov a,es ; ES, CS の退避 $NL$ 230 226 $TAB$mov x,a $NL$ 231 227 $TAB$mov a,cs $NL$ 232 228 $TAB$push ax $NL$ 233 229 $TAB$save_saddr_regs$NL$ 234 $TAB$movw bc, #_$INH.INTHDR[inhno]$ ; nhÌAhXð bc Ö$NL$230 $TAB$movw bc, #_$INH.INTHDR[inhno]$ ; ハンドラのアドレスを bc へ $NL$ 235 231 236 232 $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$ 237 $TAB$br __kernel_interrupt_entry ; ¤ÊÌüûÖ$NL$233 $TAB$br __kernel_interrupt_entry ; 共通の入口処理へ $NL$ 238 234 $NL$$NL$ 239 235 $ELSE$ 240 $TAB$; J[lÇOÌÝÌêCnhÀsµÄ»ÌÜÜ^[$NL$241 $TAB$call bc ; ÝnhÄÑoµ$NL$242 $TAB$br __kernel_int_return ; WX^A & Ý©ç^[(prc_support.asm) $NL$236 $TAB$;カーネル管理外の割込みの場合,ハンドラ実行してそのままリターン $NL$ 237 $TAB$call bc ; 割込みハンドラ呼び出し$NL$ 238 $TAB$br __kernel_int_return ; レジスタ復帰 & 割込みからリターン(prc_support.asm) $NL$ 243 239 $END$ 244 240 $END$ … … 247 243 248 244 $ 249 $ CPU áOnhüû245 $ CPU例外ハンドラ入口処理 250 246 $ 251 247 … … 255 251 $TAB$public __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry $NL$ 256 252 __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry: $NL$ 257 $TAB$push ax ; WX^ð^XNX^bNÖÞð$NL$253 $TAB$push ax ; レジスタをタスクスタックへ退避 $NL$ 258 254 $TAB$push bc $NL$ 259 255 $TAB$push de $NL$ 260 256 $TAB$push hl $NL$ 261 $TAB$mov a,es ; ES, CS ÌÞð$NL$257 $TAB$mov a,es ; ES, CS の退避 $NL$ 262 258 $TAB$mov x,a $NL$ 263 259 $TAB$mov a,cs $NL$ 264 260 $TAB$push ax $NL$ 265 261 $TAB$save_saddr_regs $NL$ 266 $TAB$movw ax, sp ; SP( nhÌøÆÈé)ð ax Ö$NL$267 $TAB$movw bc, #_$EXC.EXCHDR[excno]$ ; nhÌAhXð bc Ö$NL$268 $TAB$br __kernel_interrupt_entry ; ¤ÊÌüûÖ$NL$262 $TAB$movw ax, sp ; SP(ハンドラの引数となる)を ax へ $NL$ 263 $TAB$movw bc, #_$EXC.EXCHDR[excno]$ ; ハンドラのアドレスを bc へ $NL$ 264 $TAB$br __kernel_interrupt_entry ; 共通の入口処理へ $NL$ 269 265 $NL$$NL$ 270 266 $END$ … … 273 269 274 270 $ 275 $ xN^e[u276 $ 277 278 ;$NL$ 279 ; xN^e[u$NL$271 $ ベクタテーブル 272 $ 273 274 ;$NL$ 275 ; ベクタテーブル$NL$ 280 276 ;$NL$ 281 277 $NL$ … … 308 304 309 305 $ 310 $ prc_support.asm p}Nè`t@C306 $ prc_support.asm 用マクロ定義ファイル 311 307 $ 312 308 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_cfg1_out.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 /* 2 * cfg1_out.c ÌNÉKvÈX^uÌè`2 * cfg1_out.cのリンクに必要なスタブの定義 3 3 */ 4 4 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_config.c
-
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 43 * プロセッサ依存モジュール(RL78) 49 44 */ 50 45 #pragma EI … … 53 48 54 49 /* 55 * ݶñðÛ¶·éÏ50 * 割込み発生回数を保存する変数 56 51 */ 57 52 uint8_t intnest; … … 59 54 60 55 /* 61 * (1) ReLXgÉÖ·éè`62 */ 63 64 65 /* 66 * ReLXgÌQÆ56 * (1) コンテキストに関する定義 57 */ 58 59 60 /* 61 * コンテキストの参照 67 62 */ 68 63 bool_t 69 64 sense_context(void) 70 65 { 71 /* lXgJE^0æèåÈçñ^XNReLXg*/66 /* ネストカウンタ0より大なら非タスクコンテキスト */ 72 67 return (intnest > 0); 73 68 } … … 75 70 76 71 /* 77 * (2) VXeóÔÉÖ·éè`78 */ 79 80 /* 81 * CPU bNtOÀ»Ì½ßÌÏ82 */ 83 bool_t lock_flag; /* CPU bNtOÌlðÛ·éÏ*/72 * (2) システム状態に関する定義 73 */ 74 75 /* 76 * CPUロックフラグ実現のための変数 77 */ 78 bool_t lock_flag; /* CPUロックフラグの値を保持する変数 */ 84 79 #if TMIN_INTPRI != -4 85 uint8_t saved_psw; /* ÝDæxxðÛ¶·éÏ*/80 uint8_t saved_psw; /* 割込み優先度レベルを保存する変数 */ 86 81 #endif 87 82 88 83 /* 89 * CPU bNóÔÖÌÚs90 * ±ÌÖÍCCPU bNóÔÌÆ«ÉÄѾ³êÈ¢±ÆðOñÆ·éD84 * CPU ロック状態への移行 85 * この関数は,CPU ロック状態のときに呼びだされないことを前提とする. 91 86 */ 92 87 void … … 96 91 DI(); 97 92 #else 98 /* ^XNÅÍÝDæx}XNÌlÍ 0 Ì͸ÈÌÅÛ¶·éKvªÈ¢*/93 /* タスクでは割込み優先度マスクの値は 0 のはずなので保存する必要がない */ 99 94 set_psw(PSW_SET_ISP(get_psw(), ISP_LOCK)); 100 95 #endif … … 111 106 112 107 /* 113 * get_psw() ÌÔèlð¼Ú saved_isp ÉÛ¶¹¸CêÏ114 * psw ÖÛ¶·éÌÍCget_psw() ÌÄѾµ¼ãÉݪ¶µC115 * N®³ê½ÝÅ saved_isp ªÏX³êéÂ\«ª é½ßD108 * get_psw() の返り値を直接 saved_isp に保存せず,一時変数 109 * psw へ保存するのは,get_psw() の呼びだし直後に割込みが発生し, 110 * 起動された割込み処理で saved_isp が変更される可能性があるため. 116 111 */ 117 112 psw = get_psw(); … … 125 120 126 121 /* 127 * CPU bNóÔÌð128 * ±ÌÖÍCCPU bNóÔÌÆ«ÉÌÝÄѾ³êé±ÆðOñÆ·éD122 * CPUロック状態の解除 123 * この関数は,CPU ロック状態のときにのみ呼びだされることを前提とする. 129 124 */ 130 125 void … … 135 130 EI(); 136 131 #else 137 /* ^XNÀsÍÝ}XNSðóÔÌ͸ÈÌÅCSðɵĨ*/132 /* タスク実行時は割込みマスク全解除状態のはずなので,全解除にしておく */ 138 133 set_psw(PSW_SET_ISP(get_psw(), ISP_ENAALL)); 139 134 #endif … … 152 147 153 148 /* 154 * CPU bNóÔÌQÆ149 * CPUロック状態の参照 155 150 */ 156 151 bool_t … … 161 156 162 157 /* 163 * ÝDæx}XN(IPM) ÌÝè164 * wèµ½ÝDæx(-1, -2, ..., TMIN_INTPRI) ð³É165 * vZbTÌÝDæxx (IPL) ðÝè·éD158 * 割込み優先度マスク(IPM) の設定 159 * 指定した割込み優先度(-1, -2, ..., TMIN_INTPRI) を元に 160 * プロセッサの割込み優先度レベル (IPL) を設定する. 166 161 */ 167 162 void … … 180 175 181 176 /* 182 * (7) dispacher ÅÌÝÒ¿177 * (7) dispacher での割込み待ち 183 178 */ 184 179 void … … 191 186 192 187 /* 193 * vZbT˶Ìú»188 * プロセッサ依存の初期化 194 189 */ 195 190 void … … 199 194 200 195 /* 201 * vZbT˶ÌI¹196 * プロセッサ依存の終了処理 202 197 */ 203 198 void 204 199 prc_terminate(void) 205 200 { 206 /* ÁÉKvÈÍÈ¢*/207 } 208 209 /* 210 * ÝvÖ~tOÌZbg201 /* 特に必要な処理はない */ 202 } 203 204 /* 205 * 割込み要求禁止フラグのセット 211 206 */ 212 207 bool_t … … 215 210 volatile uint8_t *reg_addr; 216 211 217 /* xè`ª0Å éêÍCFG_INT³êĢȢ*/212 /* レベル定義が0である場合はCFG_INTされていない */ 218 213 if(intpri_table[intno] == 0U) 219 214 { 220 215 return (false); 221 216 } 222 // Ý}XNEtOEWX^ÌYrbgð1ÉZbg217 // 割込みマスク・フラグ・レジスタの該当ビットを1にセット 223 218 if(intno < 32) { 224 219 reg_addr = (volatile uint8_t *)TADR_MK0L; … … 235 230 236 231 /* 237 * ÝvÖ~tOÌNA232 * 割込み要求禁止フラグのクリア 238 233 */ 239 234 bool_t … … 242 237 volatile uint8_t *reg_addr; 243 238 244 /* xè`ª0Å éêÍCFG_INT³êĢȢ*/239 /* レベル定義が0である場合はCFG_INTされていない */ 245 240 if(intpri_table[intno] == 0u) 246 241 { 247 242 return (false); 248 243 } 249 // Ý}XNEtOEWX^ÌYrbgð0ÉZbg244 // 割込みマスク・フラグ・レジスタの該当ビットを0にセット 250 245 if(intno < 32) { 251 246 reg_addr = (volatile uint8_t *)TADR_MK0L; … … 262 257 263 258 /* 264 * ÝvÌNA259 * 割込み要求のクリア 265 260 */ 266 261 void … … 269 264 volatile uint8_t *reg_addr; 270 265 271 // ÝvtOEWX^ÌYrbgð0ÉZbg266 // 割込み要求フラグ・レジスタの該当ビットを0にセット 272 267 if(intno < 32) { 273 268 reg_addr = (volatile uint8_t *)TADR_IF0L; … … 282 277 283 278 /* 284 * ÝvÌ`FbN279 * 割込み要求のチェック 285 280 */ 286 281 bool_t … … 289 284 volatile uint8_t *reg_addr; 290 285 291 // ÝvtOEWX^ÌYrbgª 1 Èçtrue286 // 割込み要求フラグ・レジスタの該当ビットが 1 なら true 292 287 if(intno < 32) { 293 288 reg_addr = (volatile uint8_t *)TADR_IF0L; … … 303 298 304 299 /* 305 * ÝvCÌ®«ÌÝè300 * 割込み要求ラインの属性の設定 306 301 */ 307 302 void … … 315 310 316 311 /* 317 * ÝÌ}XN312 * 割込みのマスク 318 313 * 319 * Ýðó¯t¯½ÜÜCxgK^GbWgKÌÝèâC320 * ÝDæxÌÝèðs¤ÌÍë¯È½ßCÝ®«É©©íç¸C321 * êU}XN·éD314 * 割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割 315 * 込み優先度の設定を行うのは危険なため,割込み属性にかかわらず, 316 * 一旦マスクする. 322 317 */ 323 318 (void) x_disable_int(intno); 324 319 325 320 /* 326 * DæxÌÝè321 * 優先度の設定 327 322 */ 328 // DæÊwètOEWX^ÌYrbgÉlðZbg323 // 優先順位指定フラグ・レジスタの該当ビットに値をセット 329 324 if(intno < 32) { 330 325 reg_addr = (volatile uint8_t *)TADR_PR00L; … … 335 330 reg_addr += ((intno-32) / 8); 336 331 } 337 // DæÊxÌÝè(áÊrbg)332 // 優先順位レベルの設定(低位ビット) 338 333 if((IPM2ILVL(intpri) & 0x01) != 0) { 339 334 *reg_addr |= (uint8_t)(1 << (intno % 8)); … … 342 337 *reg_addr &= (uint8_t)~(1 << (intno % 8)); 343 338 } 344 // DæÊxÌÝè(Êrbg)339 // 優先順位レベルの設定(高位ビット) 345 340 if((IPM2ILVL(intpri) & 0x02) != 0) { 346 341 *(reg_addr+4) |= (uint8_t)(1 << (intno % 8)); … … 351 346 352 347 /* 353 * gKÌÝè348 * トリガの設定 354 349 */ 355 350 if(intno <= 7) { … … 362 357 } 363 358 364 /* INT [qÌêÍÝmû@ðÝè·é*/359 /* INT端子の場合は割込み検知方法を設定する */ 365 360 if((intatr & TA_POSEDGE) != 0U) 366 361 { 367 // Oݧ¿ãªèGbWÂWX^ÌYrbgð1ÉZbg362 // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを1にセット 368 363 *reg_addr |= (uint8_t)(1 << (portno % 8)); 369 // Oݧ¿ºªèGbWÂWX^ÌYrbgð0ÉZbg364 // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを0にセット 370 365 *(reg_addr+1) &= (uint8_t)~(1 << (portno % 8)); 371 366 } 372 367 else if((intatr & TA_NEGEDGE) != 0U) 373 368 { 374 // Oݧ¿ãªèGbWÂWX^ÌYrbgð0ÉZbg369 // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを0にセット 375 370 *reg_addr &= (uint8_t)~(1 << (portno % 8)); 376 // Oݧ¿ºªèGbWÂWX^ÌYrbgð1ÉZbg371 // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを1にセット 377 372 *(reg_addr+1) |= (uint8_t)(1 << (portno % 8)); 378 373 } 379 374 else if((intatr & TA_BOTHEDGE) != 0U) 380 375 { 381 // Oݧ¿ãªèGbWÂWX^ÌYrbgð1ÉZbg376 // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを1にセット 382 377 *reg_addr |= (uint8_t)(1 << (portno % 8)); 383 // Oݧ¿ºªèGbWÂWX^ÌYrbgð1ÉZbg378 // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを1にセット 384 379 *(reg_addr+1) |= (uint8_t)(1 << (portno % 8)); 385 380 } 386 else { // Ç¿çÅàÈ¢êÍGbWoðÖ~387 // Oݧ¿ãªèGbWÂWX^ÌYrbgð0ÉZbg381 else { // どちらでもない場合はエッジ検出を禁止 382 // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを0にセット 388 383 *reg_addr &= (uint8_t)~(1 << (portno % 8)); 389 // Oݧ¿ºªèGbWÂWX^ÌYrbgð0ÉZbg384 // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを0にセット 390 385 *(reg_addr+1) &= (uint8_t)~(1 << (portno % 8)); 391 386 } 392 387 393 388 /* 394 * ÝÌ}XNð(DæxÝè)389 * 割込みのマスク解除(優先度設定) 395 390 */ 396 391 if ((intatr & TA_ENAINT) != 0U) { … … 400 395 401 396 /* 402 * NMI ð·×ÄÌÝÌÖ~397 * NMIを除くすべての割込みの禁止 403 398 */ 404 399 uint8_t … … 413 408 414 409 /* 415 * ÝDæx}XNià\»jÌ»ÝlÌÝè410 * 割込み優先度マスク(内部表現)の現在値の設定 416 411 */ 417 412 void -
Property svn:mime-type
set to
-
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
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_def.csv
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
-
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_kernel.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 * Nagoya Municipal Industrial Research Institute, JAPAN 8 8 * 9 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 11 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 14 * R[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 16 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gipÒ} 18 * j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 20 * ØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 22 * Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌì 26 * \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 28 * ·é±ÆD 29 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 30 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 31 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 32 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 9 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 11 * 再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 13 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース 14 * コード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 16 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 17 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 18 * 証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 20 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 22 * 権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 24 * 告すること. 25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 26 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 27 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 28 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 33 29 * 34 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ35 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη36 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp37 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð38 * íÈ¢D30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 31 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 32 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 33 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 34 * わない. 39 35 * 40 36 */ 41 37 42 38 /* 43 * kernel.h vZbT˶iRL78j39 * kernel.h プロセッサ依存部(RL78) 44 40 * 45 * ±ÌCN[ht@CÍCtarget_kernel.hiܽÍC»±©çCN46 * [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç47 * ¼ÚCN[hµÄÍÈçÈ¢D41 * このインクルードファイルは,target_kernel.h(または,そこからインク 42 * ルードされるファイル)のみからインクルードされる.他のファイルから 43 * 直接インクルードしてはならない. 48 44 */ 49 45 … … 52 48 53 49 /* 54 * J[l{ÌðRpC·é½ßÌ}Nè`50 * カーネル本体をコンパイルするためのマクロ定義 55 51 * 56 * {«ÅÍ1Öð1IuWFNgt@CÉRpC·é±ÆªÅ«È¢½ßC57 * ALLFUNC }Nðè`·éD52 * 本環境では1関数を1オブジェクトファイルにコンパイルすることができないため, 53 * ALLFUNCマクロを定義する. 58 54 */ 59 55 … … 61 57 62 58 /* 63 * T|[g·é@\Ìè`59 * サポートする機能の定義 64 60 */ 65 #define TOPPERS_TARGET_SUPPORT_DIS_INT /* dis_int ðT|[g·é*/66 #define TOPPERS_TARGET_SUPPORT_ENA_INT /* ena_int ðT|[g·é*/61 #define TOPPERS_TARGET_SUPPORT_DIS_INT /* dis_intをサポートする */ 62 #define TOPPERS_TARGET_SUPPORT_ENA_INT /* ena_intをサポートする */ 67 63 68 64 /* 69 * J[lÇÌÝDæxÌÍÍ65 * カーネル管理の割込み優先度の範囲 70 66 * 71 * J[lÇÌÝDæxÌÅålyÑŬlÌè`D72 * ÅålÍ -1 ÅèÅC±êÍdlÉ éæ¤ÉÎÌ«ÌÏ_ÅpÓ³êÄ¢éD73 * Ŭl TMIN_INTPRI ÉÝèÂ\ÈlÌÍÍÍC-3, -2, -1 Å éD67 * カーネル管理の割込み優先度の最大値及び最小値の定義. 68 * 最大値は -1 固定で,これは統合仕様書にあるように対称性の観点で用意されている. 69 * 最小値 TMIN_INTPRI に設定可能な値の範囲は,-3, -2, -1 である. 74 70 * 75 * á¦Î TMIN_INTPRI ð -2 ÉÝè·éÆCNMI ÉÁ¦ÝDæxª76 * -4 yÑ -3 ÉÝè³êÄ¢éÝvC©çÌݪ77 * J[lÇOÌÝÆÈéD78 * ܽCTMIN_INTPRI ð -4 ÉÝè·é±ÆÍÅ«¸CNMI ¨æÑ -4 ÍíÉ79 * J[lÇOÌÝÆÈéD71 * 例えば TMIN_INTPRI を -2 に設定すると,NMI に加え割込み優先度が 72 * -4 及び -3 に設定されている割込み要求ラインからの割込みが 73 * カーネル管理外の割込みとなる. 74 * また,TMIN_INTPRI を -4 に設定することはできず,NMI および -4 は常に 75 * カーネル管理外の割込みとなる. 80 76 */ 81 77 #ifndef TMIN_INTPRI 82 #define TMIN_INTPRI (-3) /* ÝDæxÌŬliÅlj*/78 #define TMIN_INTPRI (-3) /* 割込み優先度の最小値(最高値)*/ 83 79 #endif /* TMIN_INTPRI */ 84 #define TMAX_INTPRI (-1) /* ÝDæxÌÅåliÅálj*/80 #define TMAX_INTPRI (-1) /* 割込み優先度の最大値(最低値) */ 85 81 86 82 /* 87 * èÝ®«83 * 割り込み属性 88 84 */ 89 #define TA_POSEDGE TA_EDGE /* |WeBuGbWgK*/90 #define TA_NEGEDGE UINT_C(0x04) /* lKeBuGbWgK*/91 #define TA_BOTHEDGE UINT_C(0x08) /* ¼GbWgK*/85 #define TA_POSEDGE TA_EDGE /* ポジティブエッジトリガ */ 86 #define TA_NEGEDGE UINT_C(0x04) /* ネガティブエッジトリガ */ 87 #define TA_BOTHEDGE UINT_C(0x08) /* 両エッジトリガ */ 92 88 93 89 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_rename.def
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
-
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_rename.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
-
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_sil.asm
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 6 6 ; Nagoya Municipal Industrial Research Institute, JAPAN 7 7 ; 8 ; ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 9 ; Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 10 ; ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 ; (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 ; \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 13 ; R[hÉÜÜêÄ¢é±ÆD 14 ; (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 15 ; Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gipÒ} 17 ; j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 19 ; ØKèðfÚ·é±ÆD 20 ; (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 21 ; Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 22 ; (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌì 25 ; \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 26 ; (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 27 ; ·é±ÆD 28 ; (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 29 ; ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 30 ; {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 31 ; ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 8 ; 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 9 ; ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 10 ; 再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 ; (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 12 ; 表示,この利用条件および下記の無保証規定が,そのままの形でソース 13 ; コード中に含まれていること. 14 ; (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 15 ; できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 16 ; ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 17 ; 証規定を掲載すること. 18 ; (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 19 ; できない形で再配布する場合には,次のいずれかの条件を満たすこと. 20 ; (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 21 ; 権表示,この利用条件および下記の無保証規定を掲載すること. 22 ; (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 23 ; 告すること. 24 ; (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 25 ; からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 26 ; 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 27 ; く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 28 ; 33 ; {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ34 ; ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη35 ; éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp36 ; Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð37 ; íÈ¢D29 ; 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 30 ; びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 31 ; る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 32 ; により直接的または間接的に生じたいかなる損害に関しても,その責任を負 33 ; わない. 38 34 ; 39 35 ; 40 36 41 37 ; 42 ; SIL ÌAZuLqª38 ; SILのアセンブラ記述部分 43 39 ; 44 40 … … 50 46 ; 51 47 ; uint8_t get_psw(void) 52 ; PSW Ìlðæ¾48 ; PSWの値を取得 53 49 ; 54 50 _get_psw: 55 51 push ax 56 mov a, psw ; PSW Ìlðæ¾52 mov a, psw ; PSW の値を取得 57 53 mov c, a 58 54 clrb b … … 62 58 ; 63 59 ; void set_psw(uint8_t psw) 64 ; PSW ÌlðÝè60 ; PSWの値を設定 65 61 ; 66 62 _set_psw: -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_sil.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 * Nagoya Municipal Industrial Research Institute, JAPAN 8 8 * 9 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 * ÆD 24 * (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 * ñ·é±ÆD 30 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 * ÆÓ·é±ÆD 9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 35 31 * 36 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨37 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI38 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF39 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»40 * ÌÓCðíÈ¢D32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 41 37 * 42 38 */ 43 39 44 40 /* 45 * sil.h vZbT˶(RL78t@~¤Êª)41 * sil.h プロセッサ依存部(RL78ファミリ共通部分) 46 42 */ 47 43 … … 50 46 51 47 /* 52 * RpCª Inline ðT|[gµÈ¢½ß53 * WÌóÔANZXÖðgpµÈ¢48 * コンパイラが Inline をサポートしないため 49 * 標準のメモリ空間アクセス関数を使用しない 54 50 */ 55 51 #define TOPPERS_OMIT_SIL_ACCESS 56 52 57 53 /* 58 * PSW WX^54 * PSW レジスタ 59 55 */ 60 56 #define PSW_IE_MASK (0x80) 61 57 #define PSW_ISP_MASK (0x06) 62 58 63 // psw Ì ISP{0,1} ª¾¯ðæèo·59 // psw の ISP{0,1} 部分だけを取り出す 64 60 #define PSW2ISP(psw) ((uint8_t)((psw) & PSW_ISP_MASK)) 65 // psw Ì ISP{0,1} ÌrbgÊuÉ isp ðZbgµ½p^[ðìé61 // psw の ISP{0,1} のビット位置に isp をセットしたパターンを作る 66 62 #define PSW_SET_ISP(psw, isp) ((uint8_t)((uint8_t)(psw & ~PSW_ISP_MASK) | isp)) 67 63 … … 69 65 #ifndef TOPPERS_MACRO_ONLY 70 66 71 // PSW Ìæ¾EÝè67 // PSWの取得・設定 72 68 extern uint8_t get_psw(void); 73 69 extern void set_psw(uint8_t psw); 74 70 75 71 /* 76 * NMI ð·×ÄÌÝÌÖ~(prc_config.c)72 * NMIを除くすべての割込みの禁止(prc_config.c) 77 73 */ 78 74 extern uint8_t TOPPERS_disint(void); 79 75 80 76 /* 81 * ÝDæx}XNià\»jÌ»ÝlÌÝè(prc_config.c)77 * 割込み優先度マスク(内部表現)の現在値の設定(prc_config.c) 82 78 */ 83 79 extern void TOPPERS_enaint(uint8_t TOPPERS_psw); 84 80 85 81 /* 86 * SÝbNóÔ̧ä82 * 全割込みロック状態の制御 87 83 */ 88 84 #define SIL_PRE_LOC uint8_t TOPPERS_ie_psw; … … 91 87 92 88 /* 93 * ÷ÔÒ¿(target_support.asm, not yet)89 * 微少時間待ち(target_support.asm, not yet) 94 90 */ 95 91 extern void sil_dly_nse(ulong_t dlytim); … … 98 94 99 95 /* 100 * vZbTÌGfBA96 * プロセッサのエンディアン 101 97 */ 102 #define SIL_ENDIAN_LITTLE /* gGfBA*/98 #define SIL_ENDIAN_LITTLE /* リトルエンディアン */ 103 99 104 100 #endif /* TOPPERS_PRC_SIL_H */ -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_stddef.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 * Nagoya Municipal Industrial Research Institute, JAPAN 8 8 * 9 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 * ÆD 24 * (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 * ñ·é±ÆD 30 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 * ÆÓ·é±ÆD 9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 35 31 * 36 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨37 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI38 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF39 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»40 * ÌÓCðíÈ¢D32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 41 37 * 42 38 */ 43 39 44 40 /* 45 * t_stddef.h ÌvZbT˶iRL78t@~¤Êªj41 * t_stddef.hのプロセッサ依存部(RL78ファミリ共通部分) 46 42 * 47 * ±ÌCN[ht@CÍCtarget_stddef.h ÌÝ©çCN[h³êéD48 * ¼Ìt@C©ç¼ÚCN[hµÄÍÈçÈ¢D43 * このインクルードファイルは,target_stddef.h のみからインクルードされる. 44 * 他のファイルから直接インクルードしてはならない. 49 45 */ 50 46 … … 53 49 54 50 /* 55 * ^[Qbgð¯Ê·é½ßÌ}NÌè`51 * ターゲットを識別するためのマクロの定義 56 52 */ 57 #define TOPPERS_RL78 /* vZbTªÌ*/53 #define TOPPERS_RL78 /* プロセッサ略称 */ 58 54 59 55 #endif /* TOPPERS_PRC_STDDEF_H */ -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_support.asm
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 6 6 ; Nagoya Municipal Industrial Research Institute, JAPAN 7 7 ; 8 ; ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 9 ; Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 10 ; ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 ; (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 ; \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 13 ; R[hÉÜÜêÄ¢é±ÆD 14 ; (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 15 ; Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gipÒ} 17 ; j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 19 ; ØKèðfÚ·é±ÆD 20 ; (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 21 ; Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 22 ; (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌì 25 ; \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 26 ; (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 27 ; ·é±ÆD 28 ; (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 29 ; ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 30 ; {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 31 ; ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 ; 33 ; {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ 34 ; ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη 35 ; éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp 36 ; Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð 37 ; íÈ¢D 38 ; 39 ; 40 41 ; 42 ; J[lÀÌvZbT˶ª 43 ; 44 45 ; 46 ; }Nè`ÌCN[h 8 ; 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 9 ; ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 10 ; 再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 ; (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 12 ; 表示,この利用条件および下記の無保証規定が,そのままの形でソース 13 ; コード中に含まれていること. 14 ; (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 15 ; できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 16 ; ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 17 ; 証規定を掲載すること. 18 ; (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 19 ; できない形で再配布する場合には,次のいずれかの条件を満たすこと. 20 ; (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 21 ; 権表示,この利用条件および下記の無保証規定を掲載すること. 22 ; (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 23 ; 告すること. 24 ; (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 25 ; からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 26 ; 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 27 ; く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 ; 29 ; 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 30 ; びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 31 ; る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 32 ; により直接的または間接的に生じたいかなる損害に関しても,その責任を負 33 ; わない. 34 ; 35 ; 36 37 ; 38 ; カーネル実装のプロセッサ依存部分 39 ; 40 41 ; 42 ; マクロ定義のインクルード 47 43 ; 48 44 $INCLUDE(prc_support_def.inc) 49 45 50 46 ; 51 ; O[oV{52 ; 53 ; RpCªgp·é saddrÌæÌWX^47 ; グローバルシンボル 48 ; 49 ; コンパイラが使用する saddr領域のレジスタ 54 50 extrn _@RTARG0,_@RTARG2,_@RTARG4,_@RTARG6,_@SEGAX,_@SEGDE 55 51 extrn _@NRARG0,_@NRARG1,_@NRARG2,_@NRARG3 56 52 extrn _@NRAT00,_@NRAT02,_@NRAT04,_@NRAT06 57 53 ; kernel_cfg.c 58 extrn __kernel_istkpt ; X^bN|C^Ìúl54 extrn __kernel_istkpt ; スタックポインタの初期値 59 55 ; prc_config.c 60 extrn _t_lock_cpu ; CPU bNóÔÖÌÚs61 extrn __kernel_intnest ; ÝÌlXgJE^62 extrn __kernel_lock_flag ; CPU bNtO56 extrn _t_lock_cpu ; CPUロック状態への移行 57 extrn __kernel_intnest ; 割込みのネストカウンタ 58 extrn __kernel_lock_flag ; CPUロックフラグ 63 59 ; task.c 64 extrn __kernel_dispatcher ; fBXpb`65 extrn __kernel_reqflg ; fBXpb`vtO66 extrn __kernel_disdsp ; fBXpb`Ö~óÔ67 extrn __kernel_search_schedtsk ; ÅDæxÌT[`68 extrn __kernel_run_task ; ^XNÌJn60 extrn __kernel_dispatcher ; ディスパッチャ 61 extrn __kernel_reqflg ; ディスパッチ要求フラグ 62 extrn __kernel_disdsp ; ディスパッチ禁止状態 63 extrn __kernel_search_schedtsk ; 最高優先度のサーチ 64 extrn __kernel_run_task ; タスクの開始 69 65 ; startup.c 70 extrn __kernel_exit_kernel ; J[lÌI¹66 extrn __kernel_exit_kernel ; カーネルの終了処理 71 67 72 68 ; prc_support.asm 73 public __kernel_start_dispatch ; fBXpb`ÌJn74 public __kernel_call_exit_kernel ; I¹ÌR[75 public __kernel_interrupt_entry ; ÝÌüû(¤Ê)76 public __kernel_int_return ; WX^ðAµÄݶ³Ö^[77 public _unused_interrupt ; ¢gpÝÌ78 79 ; 80 ; RpCÅgp·ésaddrÌæÌWX^ðÛ¶69 public __kernel_start_dispatch ; ディスパッチの開始処理 70 public __kernel_call_exit_kernel ; 終了処理のコール 71 public __kernel_interrupt_entry ; 割込みの入口処理(共通部) 72 public __kernel_int_return ; レジスタを復帰して割込み発生元へリターン 73 public _unused_interrupt ; 未使用割込みの処理 74 75 ; 76 ; コンパイラで使用するsaddr領域のレジスタを保存 81 77 ; 82 78 restore_saddr_regs macro 83 $if (ALLOC_REGVAR_TO_SADDR) ; -qr IvVðgp·éê84 pop ax ; WX^A79 $if (ALLOC_REGVAR_TO_SADDR) ; -qr オプションを使用する場合 80 pop ax ; レジスタ復帰 85 81 movw _@NRAT06, ax ; 86 82 pop ax ; … … 99 95 movw _@NRARG0, ax ; 100 96 $endif 101 pop ax ; WX^A97 pop ax ; レジスタ復帰 102 98 movw _@SEGDE, ax ; 103 99 pop ax ; … … 114 110 115 111 ; 116 ; X^bN|C^ðú»112 ; スタックポインタを初期化 117 113 ; 118 114 reset_sp macro … … 124 120 125 121 ; 126 ; PSW Ì ISP1 = 1, ISP0 = 1 ɵÄÝÌ}XNðð·é122 ; PSW の ISP1 = 1, ISP0 = 1 にして割込みのマスクを解除する 127 123 ; 128 124 clear_pswisp_mask macro … … 136 132 137 133 ; 138 ; J[lÌ®ìJnÉKvƳêéãnðs¤½ßÌÖ139 ; sta_ker(startup.c) ©çÄÑo³êéD134 ; カーネルの動作開始に必要とされる後始末を行うための関数 135 ; sta_ker(startup.c) から呼び出される. 140 136 ; 141 137 __kernel_start_dispatch: 142 138 ; 143 ; CPU bNóÔÆSÝbNóÔÆðæÊ·éKvª éêC144 ; CPU bNóÔɵCSÝbNÌóÔðð·éD139 ; CPUロック状態と全割込みロック状態とを区別する必要がある場合, 140 ; CPUロック状態にし,全割込みロック相当の状態を解除する. 145 141 ; 146 142 call !!_t_lock_cpu … … 151 147 $ENDIF 152 148 ; 153 ; X^bN|C^ðú»·é154 ; sta_ker ©ç start_dispatch ÌÖR[ÉæéX^bNÁïªð155 ; NA·é½ßCX^bN|C^ðú»·éD149 ; スタックポインタを初期化する 150 ; sta_ker から start_dispatch の関数コールによるスタック消費分を 151 ; クリアするため,スタックポインタを初期化する. 156 152 ; 157 153 reset_sp 158 154 159 155 ; 160 ; dispatcher (task.c) ÖWv·é161 ; ÖR[ɵȢÌÍX^bNðßñ·é½ßD162 ; 163 ; dispatcher (kernel/task.c) ÌÄÑoµ156 ; dispatcher (task.c) へジャンプする 157 ; 関数コールにしないのはスタックを節約するため. 158 ; 159 ; dispatcher (kernel/task.c) の呼び出し 164 160 br !!__kernel_dispatcher 165 161 166 162 167 163 ; 168 ; I¹ÌÄÑoµ169 ; X^bN|C^ðú»µCexit_kernel ðÄÑo·D164 ; 終了処理の呼び出し 165 ; スタックポインタを初期化し,exit_kernel を呼び出す. 170 166 ; 171 167 __kernel_call_exit_kernel: … … 177 173 178 174 ; 179 ; Ý/CPUáOÌoüû(¤Ê)180 ; J[lÇÌÝܽÍCPUáOÌêÉWX^Û¶ãCÄÑo³êéD181 ; 182 ; Oñð183 ; EPSWWX^ÌIErbg=0, ISPÍót¯½ÝÌISP.184 ; EnhÌAhXª bc Éi[³êÄ¢é.185 ; ECPUáOnhÌüû©ç½êCX^bN|C^Ì186 ; æªÔn(p_excinf)ª ax Éi[³êĨèC187 ; ±êÍCPUáOnhÌø(p_excinf)ƵĻÌÜÜn³êéD188 ; 189 ; WX^ªX^bNãÉÇÌæ¤ÉÛ¶³êÄ¢é©ðȺɦ·.190 ; }ÍÀÑÌÝð\»µ½àÌÅ èCTCYðl¶µÄ¢È¢±ÆÉÓ·éD191 ; ³mÉÍf[^V[gðQÆ̱ÆD192 ; ±Ì}ÅÍãªáÊ, ºªÊÌAhXÅ, X^bNÍ}̺¤©ç193 ; ãûüÉü©ÁÄÏÝã°çêéàÌÆ·é.194 ; 195 ; ¦1 saddrÌæÌ[NGAÍRpCIvV -qr ðwè·éêÉ196 ; Û¶ªKvÅ èCÊíÍÛ¶µÈ¢DÛ¶·éêÍAZuIvV197 ; ÉÄuALLOC_REGVAR_TO_SADDRvðè`·é±ÆD198 ; 199 ; ¦2 CPUáOÌüûðoRµ½êÌÝÛ¶³êé200 ; 201 ; 202 ; ---------------<-- p_excinf( ¦)203 ; | saddr Ìæ|204 ; | [NpGA|205 ; | (16byte) ¦1 |175 ; 割込み/CPU例外の出入口処理(共通部) 176 ; カーネル管理の割込みまたはCPU例外の場合にレジスタ保存後,呼び出される. 177 ; 178 ; 前提条件 179 ; ・PSWレジスタのIEビット=0, ISPは受付けた割込みのISP. 180 ; ・ハンドラのアドレスが bc に格納されている. 181 ; ・CPU例外ハンドラの入口から来た場合,スタックポインタの 182 ; 先頭番地(p_excinf)が ax に格納されており, 183 ; これはCPU例外ハンドラの引数(p_excinf)としてそのまま渡される. 184 ; 185 ; レジスタがスタック上にどのように保存されているかを以下に示す. 186 ; 図は並び順のみを表現したものであり,サイズを考慮していないことに注意する. 187 ; 正確にはデータシートを参照のこと. 188 ; この図では上が低位, 下が高位のアドレスで, スタックは図の下側から 189 ; 上方向に向かって積み上げられるものとする. 190 ; 191 ; ※1 saddr領域のワークエリアはコンパイラオプション -qr を指定する場合に 192 ; 保存が必要であり,通常は保存しない.保存する場合はアセンブラオプション 193 ; にて「ALLOC_REGVAR_TO_SADDR」を定義すること. 194 ; 195 ; ※2 CPU例外の入口を経由した場合のみ保存される 196 ; 197 ; 198 ; ---------------<-- p_excinf(※) 199 ; | saddr領域 | 200 ; |ワーク用エリア| 201 ; | (16byte)※1 | 206 202 ; ---------------<-- p_excinf 207 ; | saddr Ìæ|208 ; | ZOgîñ|209 ; | i[pGA|203 ; | saddr領域 | 204 ; |セグメント情報| 205 ; | 格納用エリア | 210 206 ; | (4byte) | 211 207 ; --------------- 212 ; | saddr Ìæ|213 ; | ^C|214 ; | øGA|208 ; | saddr領域 | 209 ; | ランタイム | 210 ; | 引数エリア | 215 211 ; | (8byte) | 216 212 ; --------------- … … 230 226 ; --------------- 231 227 ; 232 ; nh©ç^[µ½ãÍ, ½dÝÅÈ, ©ÂC233 ; reqflg ª TRUEC©ÂCdisdsp ª FALSE ÌÉCinterrupt_dispatch Öªò·éD234 ; 235 ; ½dݩǤ©ÍÝlXgJE^ÌlÅ»è·é.236 ; intnest > 0 ÈçνdÝÅ éÆ»è·é.228 ; ハンドラからリターンした後は, 多重割込みでなく, かつ, 229 ; reqflg が TRUE,かつ,disdsp が FALSE の時に,interrupt_dispatch へ分岐する. 230 ; 231 ; 多重割込みかどうかは割込みネストカウンタの値で判定する. 232 ; intnest > 0 ならば多重割込みであると判定する. 237 233 ; 238 234 239 235 __kernel_interrupt_entry: 240 inc !__kernel_intnest ; lXgJE^ðCNg241 ei ; ÝÂ(IPLÍó¯t¯çê½ÝÌx)242 call bc ; ÝnhÄÑoµ243 di ; ÝÖ~244 dec !__kernel_intnest ; lXgJE^ðfNg245 bnz $__kernel_int_return ; ßèæªñ^XNReLXg(ñ[)ÈçPÉ^[246 movw ax,!__kernel_reqflg ; fBXpb`vª é©Ç¤©236 inc !__kernel_intnest ; ネストカウンタをインクリメント 237 ei ; 割込み許可(IPLは受け付けられた割込みのレベル) 238 call bc ; 割込みハンドラ呼び出し 239 di ; 割込み禁止 240 dec !__kernel_intnest ; ネストカウンタをデクリメント 241 bnz $__kernel_int_return ; 戻り先が非タスクコンテキスト(非ゼロ)なら単にリターン 242 movw ax,!__kernel_reqflg ; ディスパッチ要求があるかどうか 247 243 cmpw ax, #0 248 bz $__kernel_int_return ; ȯêÎCPÉ^[244 bz $__kernel_int_return ; なければ,単にリターン 249 245 movw ax, #0 250 movw !__kernel_reqflg, ax ; reqflg = FALSE ÉߵĨ251 movw ax, !__kernel_disdsp ; fBXpb`Ö~©Ç¤©246 movw !__kernel_reqflg, ax ; reqflg = FALSE に戻しておく 247 movw ax, !__kernel_disdsp ; ディスパッチ禁止かどうか 252 248 cmpw ax, #0 253 bnz $__kernel_int_return ; Ö~ÈçCPÉ^[254 255 ; 256 ; ÝÌoû(fBXpb`t«)257 ; CPU bNÌóÔÉÚsµCVK^XNðJn·é258 ; 259 ; OñðF260 ; PSW WX^ÌIEtO = 0 (ÝÖ~)261 ; PSW WX^ÌISP{1,0} = ó¯t¯½ÝÌÝx249 bnz $__kernel_int_return ; 禁止なら,単にリターン 250 251 ; 252 ; 割込みの出口処理(ディスパッチ付き) 253 ; CPU ロック相当の状態に移行し,新規タスクを開始する 254 ; 255 ; 前提条件: 256 ; PSWレジスタのIEフラグ = 0 (割込み禁止) 257 ; PSWレジスタのISP{1,0} = 受け付けた割込みの割込みレベル 262 258 ; 263 259 __kernel_interrupt_dispatch: … … 272 268 call !!__kernel_run_task 273 269 274 ; run_task ©çÌ^[ãÌóÔ: CPUbNóÔ275 ; __kernel_int_return Ì reti Å PSW Ì IE, ISP Í276 ; ݶOÌóÔÉßé½ßClock_flag ¾¯³Éß·D270 ; run_task からのリターン後の状態: CPUロック状態 271 ; __kernel_int_return の reti で PSW の IE, ISP は 272 ; 割込み発生前の状態に戻るため,lock_flag だけ元に戻す. 277 273 movw ax, #0 278 movw !__kernel_lock_flag, ax ; lock_flag ðNA279 280 ; 281 ; WX^AµÄÝ©ç^[274 movw !__kernel_lock_flag, ax ; lock_flag をクリア 275 276 ; 277 ; レジスタ復帰して割込みからリターン 282 278 ; 283 279 __kernel_int_return: 284 restore_saddr_regs ; saddr ÌæÌWX^A285 pop ax ; ES, CS ÌA280 restore_saddr_regs ; saddr領域のレジスタ復帰 281 pop ax ; ES, CS の復帰 286 282 mov cs, a ; 287 283 mov a, x ; 288 284 mov es, a ; 289 pop hl ; WX^ðA285 pop hl ; レジスタを復帰 290 286 pop de 291 287 pop bc … … 294 290 295 291 ; 296 ; ³À[v(O̽ß)292 ; 無限ループ(念のため) 297 293 ; 298 294 _loop: … … 300 296 301 297 ; 302 ; ¢gpÝ298 ; 未使用割込み 303 299 ; 304 300 _unused_interrupt: -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_unrename.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
-
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_user.txt
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 ===================================================================== 2 RL78 vZbT˶2 RL78プロセッサ依存部 3 3 Last Modified: '15/6/2 4 4 ===================================================================== 5 5 6 6 7 (1) εĢé^[QbgVXeÌíÞE\¬ 8 9 RL78vZbT˶(ȺCRL78˶)ÍClTXGNgjNX» RL78t@~ 10 ÌvZbTðåÈ^[QbgÆ·éDRL78t@~ÍC¢Â©ÌO[vC 11 »µÄܽ»ÌO[vÌÉClXÈ^ÔÅ\»³êévZbTÌoG[Vª 12 ¶ÝµÄ¢éD 13 14 ½¾µC{vZbT˶ɨ¢ÄC»óÅÍCT|[g·é^[Qbg{[hÆÌÖW©çC 15 RL78/G13 ÉÖ·éè`ÌÝðpӵĢéD 16 17 18 (2) vZbT˶Ìt@C\¬ 19 20 A^COSJ[lÌvZbT˶ƵÄÀ·éªÌÝðl¦½êC 21 RL78˶Ìè`ÍCåïÌêCSÄÌvZbTɤʷéªÆC 22 vZbTÌ^ÔÅÙÈéª(¦1)ÆÉR[hð®·é±ÆªÂ\Å éD 23 ÙÈéªÉ¢ÄÍvZbT^ÔÉîÃt@CðpӵĢéD 24 25 ¦1 ÝÔCÝnhÔCyÑCݧäWX^ÌzuÈÇ 26 27 ÈãæèCvZbT˶ÌR[hÍCȺ̽¼K¥É]ÁÄpÓ³ê½ 28 t@CÖC¤ÊªÆÂϪÆɪ޵Äzu³êÄ¢éD 29 30 prc_* F SÄÌvZbTɤʷéè` 31 rl78g13_* ÈÇFvZbT^ÔÉÙÈéè` 32 33 è`ÌzuÍT|[g·évZbTðâ·É©¼µªKvÆÈé©àµêÈ¢D 34 ൻóÌR[hzuÅssª¶¶éêÉÍT|[g[OXgÜÅ 35 ²A¸¯éÆK¢Å éD 36 37 38 (3) gp·éJ«Ʈìص½ð 39 40 RpCCyÑrhÇÉÍlTXGNgjNX»c[ðp¢éD 41 ®ìmFµ½o[WÍ^[Qbg˶ÌhL 42 gÉLÚ·éD 43 44 45 (4) ^[Qbgè`ÌKè 46 47 (4-1) f[^^ÉÖ·éKè 48 49 TOPPERS¤Êf[^^̤¿CTOPPERSV¢ãJ[ldl(ȺCdl)Å 50 IvVµ¢Æ³êÄ¢éf[^^ðÎÛÉC^[Qbg˶ÅÌT|[góµÉ墀 51 Lq·éD±êçÌè`Í arch/ca78k0r/tool_stddef.h Åè`³êÄ¢é 52 53 y®^z 54 55 ET|[g 56 int8_t t«8rbg®iIvVCC99j 57 uint8_t ³µ8rbg®iIvVCC99j 58 float32_t IEEE754Ì32rbgP¸x®¬_iIvVj 59 60 ±Ì¤¿Cfloat32_t ÍCIEEE754ÌP¸x®¬_Å éD 61 62 E¢T|[g 63 int64_t t«64rbg®iIvVCC99j 64 uint64_t ³µ64rbg®iIvVCC99j 65 double64_t IEEE754Ì64rbg{¸x®¬_iIvVj 66 int128_t t«128rbg®iIvVCC99j 67 uint128_t ³µ128rbg®iIvVCC99j 68 69 yÅålCŬlÌèz 70 71 ET|[g 72 INT8_MAX int8_tÉi[Å«éÅåliIvVCC99j 73 INT8_MIN int8_tÉi[Å«éŬliIvVCC99j 74 UINT8_MAX uint8_tÉi[Å«éÅåliIvVCC99j 75 FLOAT32_MIN float32_tÉi[Å«éŬ̳K»³ê½³Ì®¬_iIvVj 76 FLOAT32_MAX float32_tÉi[Å«é\»Â\ÈÅåÌLÀ®¬_iIvVj 77 78 E¢T|[g 79 INT64_MAX int64_tÉi[Å«éÅåliIvVCC99j 80 INT64_MIN int64_tÉi[Å«éŬliIvVCC99j 81 UINT64_MAX uint64_tÉi[Å«éÅåliIvVCC99j 82 DOUBLE64_MIN double64_tÉi[Å«éŬ̳K»³ê½³Ì®¬_iIvVj 83 DOUBLE64_MAX double64_tÉi[Å«é\»Â\ÈÅåÌLÀ®¬_iIvVj 84 INT128_MAX int128_tÉi[Å«éÅåliIvVCC99j 85 INT128_MIN int128_tÉi[Å«éŬliIvVCC99j 86 UINT128_MAX uint128_tÉi[Å«éÅåliIvVCC99j 87 88 (4-2) ÝÉÖ·éKè 89 90 (4-2-1) ÝnhÔÆÝÔÌÄC¼ÒÌÎ 91 92 ÝnhÔ(inhno)ÆÝÔ(intno)ÍC¤ÉftHgvCIeBÌlðp¢éD 93 ¼ÒÍî{Iɯ¶Ôª1Î1ÉηéD]ÁÄgpÂ\ÈSÄÌÝÔÉ뵀 94 ÝT[rX[`(ISR)ðo^Â\Å éD 95 ÝÔCÝnhÔÍ <vZbT¼>.h t@CÅè`µÄ¢éD 96 (á¦Î rl78g13.h ÈÇ) 97 98 (4-2-2) ÝDæxÌiKiTMIN_INTPRIÌljC»ÌÝèû@ 99 100 J[lÇOÌÝÉηéCDEF_INH,CFG_INTÍT|[g·éD 101 »Ì½ßCRL78˶ŠCFG_INT Ìp[^ƵÄwèÂ\ÈÝDæxÌlÍC 102 RL78 ªÂÝDæxxÌlÌÍÍÉ뵀 -1(=TMAX_INTPRI) ©ç -4 ÜÅÌ 103 lðÝèÂ\Å é(¦2)(¦3)D½¾µCãq·éæ¤ÉCTMIN_INTPRI Åè`³êélɶÄC 104 J[lÇyÑJ[lÇOÌÝnhÉwèÂ\ÈlÌÍͪϻ·éD 105 106 CFG_INT ÅÝè³ê½ÝvCÉJ[lÇÌÝnhð 107 o^·éêÍCTMAX_INTPRI ȺCTMIN_INTPRI ÈãÌlðwèµÈ¯êÎÈçÈ¢D 108 ¼ûCJ[lÇOÌÝnhðo^·éÝvCðÝè·éêÍC 109 TMIN_INTPRI æ謳C-4 ÈãÌlðwèµÈ¯êÎÈçÈ¢D 110 111 (¦2) J[lÌÝfÌãÅÍÝDæxð -1 ©çnÜéÅ 112 @ \»·é±ÆÉÈÁÄ¢é½ßCªÂ¢Ä¢éD 113 114 (¦3) TMIN_INTPRI ð -4 ɵ½êCCFG_INT ÅDæx -4 ÉÝèµ½ÝvöÍC 115 CPUbNóÔɵȢÀè½dÉà½dݪÂ\ÆÈé½ßCÓªKvÅ éD 116 117 (4-2-3) J[lÇOÌÝ 118 119 RL78˶ÅÍCJ[lÇOÌÝðT|[gµÄ¢éD 120 121 TMIN_INTPRI æè¢(lƵÄÍæ謳¢)ÝDæxÉÝè³ê½ 122 ÝvCÌÝÍCJ[lÇOÌÝƵÄp¢é±Æª 123 Â\Å éDJ[lÇOÌÝÍOSÀsàÖ~ÉÈé±ÆÍÈ 124 iµ§ÉÍÝÌoûŲZ¢æÔÖ~³êéjCݶÍC 125 J[lÌR[hðoR¹¸ÉÄÑo³êéD 126 127 TMIN_INTPRI ÍJ[lÇÌÝÉÝè·é±ÆÌÅ«éÝDæxÌÅl 128 (lƵÄÍŬl)ðè`µ½}NÅCarch/m16c_ncxx/prc_kernel.h Å 129 è`³êÄ¢éDùèÅÍC-3ÆÈÁÄ¢éD±ÌlÍ^[Qbg˶Å㫪Â\Å éD 130 131 (4-2-4) J[lÇOÌÝÌÝèû@ 132 133 CFG_INT, DEF_INH ðp¢ÄJ[lÇOÌÝnhðo^·éȩ̂ñÍC 134 (1) DEF_INH Åo^·éÝnhÌ®«ÆµÄ TA_NONKERNEL ðwè·é±ÆC 135 yÑC(2) nho^æÌÝvCªàÂÝDæxÍC 136 CFG_INT Éæè TMIN_INTPRI æè (lƵÄͬ³¢l)ÉÝè·é±ÆC 137 Å éD 138 139 (4-2-5) J[lÇOÌÝnhÌLqû@ 140 141 J[lÇOÌÝnhÍCȺÌæ¤ÉøCßèlª¤É void ÌÖ 142 ƵÄÀ·é±ÆD 7 (1) 対応しているターゲットシステムの種類・構成 8 9 RL78プロセッサ依存部(以下,RL78依存部)は,ルネサスエレクトロニクス製 RL78ファミリ 10 のプロセッサを主なターゲットとする.RL78ファミリは,いくつかのグループ, 11 そしてまたそのグループの中に,様々な型番で表現されるプロセッサのバリエーションが 12 存在している. 13 14 ただし,本プロセッサ依存部において,現状では,サポートするターゲットボードとの関係から, 15 RL78/G13 に関する定義のみを用意している. 16 17 18 (2) プロセッサ依存部のファイル構成 19 20 リアルタイムOSカーネルのプロセッサ依存部として実装する部分のみを考えた場合, 21 RL78依存部の定義は,大抵の場合,全てのプロセッサに共通する部分と, 22 プロセッサの型番で異なる部分(※1)とにコードを整理することが可能である. 23 異なる部分についてはプロセッサ型番に基づくファイルを用意している. 24 25 ※1 割込み番号,割込みハンドラ番号,及び,割込み制御レジスタの配置など 26 27 以上より,プロセッサ依存部のコードは,以下の命名規則に従って用意された 28 ファイルへ,共通部分と可変部分とに分類して配置されている. 29 30 prc_* : 全てのプロセッサに共通する定義 31 rl78g13_* など:プロセッサ型番毎に異なる定義 32 33 定義の配置はサポートするプロセッサを増やす毎に見直しが必要となるかもしれない. 34 もし現状のコード配置で不都合が生じる場合にはサポートメーリングリストまで 35 ご連絡頂けると幸いである. 36 37 38 (3) 使用する開発環境と動作検証した条件 39 40 コンパイル,及びビルド管理にはルネサスエレクトロニクス製ツールを用いる. 41 動作確認したバージョンはターゲット依存部のドキュメントに記載する. 42 43 44 (4) ターゲット定義事項の規定 45 46 (4-1) データ型に関する規定 47 48 TOPPERS共通データ型のうち,TOPPERS新世代カーネル統合仕様書(以下,統合仕様書)で 49 オプション扱いとされているデータ型を対象に,ターゲット依存部でのサポート状況について 50 記述する.これらの定義は arch/ca78k0r/tool_stddef.h で定義されている 51 52 【整数型】 53 54 ・サポート 55 int8_t 符号付き8ビット整数(オプション,C99準拠) 56 uint8_t 符号無し8ビット整数(オプション,C99準拠) 57 float32_t IEEE754準拠の32ビット単精度浮動小数点数(オプション) 58 59 このうち,float32_t は,IEEE754準拠の単精度浮動小数点数である. 60 61 ・未サポート 62 int64_t 符号付き64ビット整数(オプション,C99準拠) 63 uint64_t 符号無し64ビット整数(オプション,C99準拠) 64 double64_t IEEE754準拠の64ビット倍精度浮動小数点数(オプション) 65 int128_t 符号付き128ビット整数(オプション,C99準拠) 66 uint128_t 符号無し128ビット整数(オプション,C99準拠) 67 68 【最大値,最小値の定数】 69 70 ・サポート 71 INT8_MAX int8_tに格納できる最大値(オプション,C99準拠) 72 INT8_MIN int8_tに格納できる最小値(オプション,C99準拠) 73 UINT8_MAX uint8_tに格納できる最大値(オプション,C99準拠) 74 FLOAT32_MIN float32_tに格納できる最小の正規化された正の浮動小数点数(オプション) 75 FLOAT32_MAX float32_tに格納できる表現可能な最大の有限浮動小数点数(オプション) 76 77 ・未サポート 78 INT64_MAX int64_tに格納できる最大値(オプション,C99準拠) 79 INT64_MIN int64_tに格納できる最小値(オプション,C99準拠) 80 UINT64_MAX uint64_tに格納できる最大値(オプション,C99準拠) 81 DOUBLE64_MIN double64_tに格納できる最小の正規化された正の浮動小数点数(オプション) 82 DOUBLE64_MAX double64_tに格納できる表現可能な最大の有限浮動小数点数(オプション) 83 INT128_MAX int128_tに格納できる最大値(オプション,C99準拠) 84 INT128_MIN int128_tに格納できる最小値(オプション,C99準拠) 85 UINT128_MAX uint128_tに格納できる最大値(オプション,C99準拠) 86 87 (4-2) 割込み処理に関する規定 88 89 (4-2-1) 割込みハンドラ番号と割込み番号の割当て,両者の対応 90 91 割込みハンドラ番号(inhno)と割込み番号(intno)は,共にデフォルトプライオリティの値を用いる. 92 両者は基本的に同じ番号が1対1に対応する.従って使用可能な全ての割込み番号に対して 93 割込みサービスルーチン(ISR)を登録可能である. 94 割込み番号,割込みハンドラ番号は <プロセッサ名>.h ファイルで定義している. 95 (例えば rl78g13.h など) 96 97 (4-2-2) 割込み優先度の段階数(TMIN_INTPRIの値),その設定方法 98 99 カーネル管理外の割込みに対する,DEF_INH,CFG_INTはサポートする. 100 そのため,RL78依存部で CFG_INT のパラメータとして指定可能な割込み優先度の値は, 101 RL78 が持つ割込み優先度レベルの値の範囲に対応して -1(=TMAX_INTPRI) から -4 までの 102 値を設定可能である(※2)(※3).ただし,後述するように,TMIN_INTPRI で定義される値に応じて, 103 カーネル管理及びカーネル管理外の割込みハンドラに指定可能な値の範囲が変化する. 104 105 CFG_INT で設定された割込み要求ラインにカーネル管理の割込みハンドラを 106 登録する場合は,TMAX_INTPRI 以下,TMIN_INTPRI 以上の値を指定しなければならない. 107 他方,カーネル管理外の割込みハンドラを登録する割込み要求ラインを設定する場合は, 108 TMIN_INTPRI より小さく,-4 以上の値を指定しなければならない. 109 110 (※2) カーネルの割込み処理モデルの上では割込み優先度を -1 から始まる負数で 111 表現することになっているため,負号がついている. 112 113 (※3) TMIN_INTPRI を -4 にした場合,CFG_INT で優先度 -4 に設定した割込み要因は, 114 CPUロック状態にしない限り何重にも多重割込みが可能となるため,注意が必要である. 115 116 (4-2-3) カーネル管理外の割込み 117 118 RL78依存部では,カーネル管理外の割込みをサポートしている. 119 120 TMIN_INTPRI より高い(数値としてはより小さい)割込み優先度に設定された 121 割込み要求ラインの割込みは,カーネル管理外の割込みとして用いることが 122 可能である.カーネル管理外の割込みはOS実行中も禁止になることはなく 123 (厳密には割込みの出口でごく短い区間禁止される),割込み発生時は, 124 カーネルのコードを経由せずに呼び出される. 125 126 TMIN_INTPRI はカーネル管理の割込みに設定することのできる割込み優先度の最高値 127 (値としては最小値)を定義したマクロで,arch/m16c_ncxx/prc_kernel.h で 128 定義されている.既定では,-3となっている.この値はターゲット依存部で上書きが可能である. 129 130 (4-2-4) カーネル管理外の割込みの設定方法 131 132 CFG_INT, DEF_INH を用いてカーネル管理外の割込みハンドラを登録する場合の制約は, 133 (1) DEF_INH で登録する割込みハンドラの属性として TA_NONKERNEL を指定すること, 134 及び,(2) ハンドラ登録先の割込み要求ラインがもつ割込み優先度は, 135 CFG_INT により TMIN_INTPRI より高く (値としては小さい値)に設定すること, 136 である. 137 138 (4-2-5) カーネル管理外の割込みハンドラの記述方法 139 140 カーネル管理外の割込みハンドラは,以下のように引数,戻り値が共に void の関数 141 として実装すること. 143 142 144 143 void 145 144 interrupt_handler (void) 146 145 { 147 /* nhÌàe*/146 /* ハンドラの内容 */ 148 147 } 149 148 150 (4-2-6) CFG_INT Å^[QbgÆ©ÉgpÅ«éÝ®« 151 152 INTÝÉÖµÄÌÝCÝvCÌgK[hÌÝèðT|[g·éD 153 ÝèÅ«éÌÍCȺ̢¸ê©Å éD 154 E|WeBuGbW(gKÝ)FTA_POSEDGE 155 ElKeBuGbW(gKÝ)FTA_NEGEDGE 156 E¼GbW(gKÝ)FTA_BOTHEDGE 157 158 (4-2-7) dis_intÆena_intÌT|[gÌL³C»Ì§À 159 160 RL78˶ÅÍ dis_int yÑ ena_int ðT|[g·éD§ÀÍÁÉÈ¢D 161 162 TOPPERSÝfɨ¯éÝvÖ~tOÍ 163 RL78vZbTÌÝ}XNEtOEWX^ªÎ·éD 164 165 (4-2-8) ½dÝÌT|[g 166 167 ½dÝð·éD½¾µCJ[lÇOÌÝÌêCÝnhÌÅ 168 PSWWX^ÌIErbgð¾¦IÉZbgµCÝÂɵȯêνdݪ 169 LøÆÈçÈ¢½ßCÓªKvÅ éD 170 171 ܽ TMIN_INTPRI==-4 ÌêCCFG_INT Å -4 ÉÝèµ½ÝÍC 172 CPUbNðóÔɨ¢Ä¯¶Dæx -4 ÌݪÀsÅà 173 ½dÉݪó¯t¯çêéD±êÍRL78ÌvZbTÌdlÉæéàÌÅC 174 PSWÌIErbgª1Å éÀèC(vZbTà\»É¨¯é)x0ÌÝ 175 (ÝfÅÍDæx-4ÌÝ)ÍCPSWÌISPðgpµ½ 176 xÉæéÝÌ}XNðs¤±ÆªÅ«È¢D 177 178 ÝDæx-4 ÌJ[lÇÌÝnhÍCPUbNðóÔÅ 179 N®³êé½ßCÓªKvÅ éD 180 181 (4-2-9) ÝT[rX[`àÝnhào^µÄ¢È¢Ýv 182 183 éÝvCÅÝvðó¯t¯½ªC»ÌCÉÝT[rX[`yÑ 184 ÝnhÌÇ¿çào^µÄ¢È¢êC_unused_interrupt (prc_support.asm) Ö 185 Wv·éæ¤ÉRtBM 186 [^ªÝxN^𶬷éD»µÄC 187 »±©ç¦ÀÉ^[·éæ¤ÉÈÁÄ¢éD 188 189 190 (4-3) CPUáOÉÖ·éKè 191 192 (4-3-1) CPUáOnhÔ 193 194 RL78 ˶ÅÍBRK½ßÉæé\tgEFAÝðCPUáOƵĵ¤D 195 CPUáOnhÔƵÄ0 ðèUé±ÆÉ·éD 196 197 eCPUáOÉηé CPUáOnhÔÍȺÌÊèD 198 ±êçÍ <vZbT¼>.h Åè`³êÄ¢éD 199 200 áO áOÔ 201 #define EXCNO_BRK 0 /* \tgEFAxN^Ý½ß */ 202 203 204 (4-3-2) nhðo^µÄ¢È¢CPUáOª¶µ½Æ« 205 206 ¶µ½CPUáOÉεÄCCPUáOnhªo^³êĢȢêC 207 _unused_interrupt (prc_support.asm) ÖWv·éæ¤ÉRtBM 208 [^ª 209 ÝxN^𶬷éD»µÄC»±©ç¦ÀÉ^[·éD 210 211 (4-3-3) \tgEFAÝ̵¢ 212 213 \tgEFAÝÉηénhÍ DEF_EXC ÅÄÑo·±ÆÍÅ«È¢D 214 êûCDEF_INH ðp¢ÄÄoµÂ\Å éªC\tgEFAÝ͵§ÉÍ 215 CPUáOÉ®·éàÌÅ èCµ©àm}XJuÅ é½ßC 216 VXeR[ðÄÑo·ÈÇÌÊíÌÝnhƯlÌgpÍ𯽠217 ûª³ïÅ éD 218 219 220 (4-4) CPUbNEÝbN 221 222 ÝbNóÔÍCPSWWX^ÌIErbgÉæèÀ»µÄ¢éD 223 IErbgª0ÌÆ«ÝbNóÔC1ÌÆ«ÝbNðóÔÆ·éD 224 225 J[lÌCPUbNóÔÍCTMIN_INTPRI Åè`·élÉæèÙÈéD 226 227 (4-4-1) TMIN_INTPRI ª -4 Ìê 228 229 CPUbNóÔÍCPSWWX^ÌIErbgÉæèÀ»·éD 230 IErbgª0ÌÆ«CPUbNóÔC1ÌÆ«CPUbNðóÔÆ·éD 231 ±ÌêCCPUbNÆÝbNͯ¶Å éD 232 233 (4-4-2) TMIN_INTPRI ª -1 Èã -3 ȺÌê 234 235 PSWÌCT[rXEvCIeBtO(ISP{1,0})Ìlð 236 (-TMIN_INTPRI+3) ÉÝè·é±ÆÅÀ»·éD 237 á¦Î -3 ÌêCPSW WX^Ì ISP{1,0} ª (0,0) ÉÝè³êéD 238 239 RL78 ÅÍCISP{1,0} ÉÝèµ½luÈã(lƵÄͬ)vÌDæÊðÂݪ 240 uÂv³êéCÆ¢¤dlÉÈÁÄ¢éDµ½ªÁÄC}XNµ½¢xæè 241 êi¢lðZbg·éKvª éD 242 243 244 (4-5) «\]¿pVXeÌQÆÉÖ·éKè 245 246 get_utmðT|[g·é\èÅ éªÜ¾ÀµÄ¢È¢D 247 248 249 (4-6) VXeú»èÌàe 250 251 X^[gAbv[`ÍCVXeZbg¼ãÉÄÑo³êCÀsðJn·éD 252 »ÌÛÌvZbTóÔÍȺðOñƵĢéD 253 ESP, MAA Í¢ú» 254 EWX^oNÍ RB0 255 EPSWWX^ÌIEtOª0 (ÝbNóÔƯÌóÔ) 256 EPSWWX^ÌISP=(1,1) 257 EVXeNbNÍ¢ú»(àIV[^®ì 1MHz) 258 E¢ú»(àµ\tgEFAZbgðÆ©ÉÀµÄ¢êÎÛ³êÄ¢é) 259 260 ܸCX^[gAbv[`Ì start (start.asm) ªÈºÌðs¤D 261 ISP, MAA Ìú» 262 ú» 263 sta_ker (startup.c) R[ 264 »µÄCtarget_initialize (target_config.c) ÉÄNbNÝèªsíêéD 265 266 »ÌãCdispatcher (task.c) ðÀs·éOÉ CPUbNóÔ©ÂÝbNðóÔÉ 267 µÄ¨Kvª é½ßCstart_dispatch (prc_support.asm)ɨ¢Ä 268 PSW WX^Ì ISP yÑ IErbgðCȺÌlÉZbg·éD 269 270 (a) TMIN_INTPRI ª -1 Ⱥ©Â -3 ÈãÌê 271 IPL=-(TMIN_INTPRI)+3 ©ÂCIErbg=1 272 273 (b) TMIN_INTPRI==-4Ìê 274 IPL=3 ©ÂCIErbg=0 275 276 ³çÉCdispatcher ͳÀ[vÅ^[µÈ¢½ßCWvOÉ 277 start_dispatch ÅX^bNÌú»ðsÁÄ¢éD 278 279 280 (4-7) VXeI¹è 281 282 VXeI¹Í call_exit_kernel (prc_support.asm) ÅX^bNðú»µC 283 exit_kernel (startup.c) ðÄÑo·D 284 285 »ÌãCtarget_exit (target_config.c) Å^[Qbg˶ÌI¹ðs¤D 286 KèÅͳÀ[v³¹éÌÝÅÁɽàµÄ¢È¢D 287 àµC^[QbgÅLÌI¹ðs¤Kvª éêCtarget_exit àµÍ 288 »±©çÄÑo³êéÖÅðÀ{·éD 289 290 291 (5) ^C}hCoÖAÌîñ 292 293 ŬZbgJ[lÌg£@\ƵÄüúnhyÑA[nhª 294 pÓ³êÄ¢éD±êçðgp·é½ßÉÍ^CeBbNð·é 295 ^C}hCoð^[QbgÅpÓ·éKvª éD 296 297 298 (6) §À 299 300 EJ[lÌRtBM 301 [V 302 RtBM 303 [VÌpX3irhãÌ\¬`FbNjÍsÁĢȢB 304 »Ì½ßC^XNCÝnhCÝT[rX[`CCPUáOnhC 305 ú»[`CI¹[`CüúnhCA[nhª 306 s³Å éêð E_PAR G[ƵÄo·é±ÆªÅ«È¢D 307 ]ÁÄAvP[VJÉeXg·é±ÆűêçÌÙíðo·éKvª éD 308 309 E¶R[hCüsR[hÉ墀 310 RL78vZbTË¶Í WindowsãÅ®ì·éJ« CubeSuite+ ðp¢Ä 311 J·é±ÆðOñƵĢéDTOPPERSvWFNg©çöJ³êé\[XpbP[WÍ 312 ¶R[hÍSJIS, üsR[hÍ CR+LF ƵÄöJµÄ¢éD 313 314 315 (7) T|[gvZbTÌÇÁ 316 317 (7-1) vZbTÌè` 318 319 vZbTÉÙÈéƵÄÍȺ̪ éD 320 ELøÈÝÔCÝnhÔCCPUáOnhÔÌÍÍ 321 EÝÔCÝnhÔCCPUáOnhÔÌèÄ 322 323 ]ÁÄCT|[g·évZbTðÇÁ·éêÉÍCܸvZbT¼Éîà 324 Ìt@CðpÓ·éDá¦Î RL78/G13 ÌêC 149 (4-2-6) CFG_INT でターゲット独自に使用できる割込み属性 150 151 INT割込みに関してのみ,割込み要求ラインのトリガモードの設定をサポートする. 152 設定できるのは,以下のいずれかである. 153 ・ポジティブエッジ(トリガ割込み):TA_POSEDGE 154 ・ネガティブエッジ(トリガ割込み):TA_NEGEDGE 155 ・両エッジ(トリガ割込み):TA_BOTHEDGE 156 157 (4-2-7) dis_intとena_intのサポートの有無,その制限事項 158 159 RL78依存部では dis_int 及び ena_int をサポートする.制限事項は特にない. 160 161 TOPPERS割込み処理モデルにおける割込み要求禁止フラグは 162 RL78プロセッサの割込みマスク・フラグ・レジスタが対応する. 163 164 (4-2-8) 多重割込みのサポート 165 166 多重割込みを許可する.ただし,カーネル管理外の割込みの場合,割込みハンドラの中で 167 PSWレジスタのIEビットを明示的にセットし,割込み許可にしなければ多重割込みが 168 有効とならないため,注意が必要である. 169 170 また TMIN_INTPRI==-4 の場合,CFG_INT で -4 に設定した割込みは, 171 CPUロック解除状態において同じ優先度 -4 の割込み処理が実行中でも 172 多重に割込みが受け付けられる.これはRL78のプロセッサの仕様によるもので, 173 PSWのIEビットが1である限り,(プロセッサ内部表現における)レベル0の割込み 174 (割込み処理モデルでは優先度-4の割込み)は,PSWのISPを使用した 175 レベルによる割込みのマスクを行うことができない. 176 177 割込み優先度-4 のカーネル管理の割込みハンドラはCPUロック解除状態で 178 起動されるため,注意が必要である. 179 180 (4-2-9) 割込みサービスルーチンも割込みハンドラも登録していない割込み要求 181 182 ある割込み要求ラインで割込み要求を受け付けたが,そのラインに割込みサービスルーチン及び 183 割込みハンドラのどちらも登録していない場合,_unused_interrupt (prc_support.asm) へ 184 ジャンプするようにコンフィギュレータが割込みベクタを生成する.そして, 185 そこから即座にリターンするようになっている. 186 187 188 (4-3) CPU例外処理に関する規定 189 190 (4-3-1) CPU例外ハンドラ番号 191 192 RL78 依存部ではBRK命令によるソフトウェア割込みをCPU例外として扱う. 193 CPU例外ハンドラ番号として0 を割り振ることにする. 194 195 各CPU例外に対する CPU例外ハンドラ番号は以下の通り. 196 これらは <プロセッサ名>.h で定義されている. 197 198 例外 例外番号 199 #define EXCNO_BRK 0 /* ソフトウェアベクタ割込み命令 */ 200 201 202 (4-3-2) ハンドラを登録していないCPU例外が発生したとき 203 204 発生したCPU例外に対して,CPU例外ハンドラが登録されていない場合, 205 _unused_interrupt (prc_support.asm) へジャンプするようにコンフィギュレータが 206 割込みベクタを生成する.そして,そこから即座にリターンする. 207 208 (4-3-3) ソフトウェア割込みの扱い 209 210 ソフトウェア割込みに対するハンドラは DEF_EXC で呼び出すことはできない. 211 一方,DEF_INH を用いて呼出し可能であるが,ソフトウェア割込みは厳密には 212 CPU例外に属するものであり,しかもノンマスカブルであるため, 213 システムコールを呼び出すなどの通常の割込みハンドラと同様の使用は避けた 214 方が無難である. 215 216 217 (4-4) CPUロック・割込みロック 218 219 割込みロック状態は,PSWレジスタのIEビットにより実現している. 220 IEビットが0のとき割込みロック状態,1のとき割込みロック解除状態とする. 221 222 カーネルのCPUロック状態は,TMIN_INTPRI で定義する値により異なる. 223 224 (4-4-1) TMIN_INTPRI が -4 の場合 225 226 CPUロック状態は,PSWレジスタのIEビットにより実現する. 227 IEビットが0のときCPUロック状態,1のときCPUロック解除状態とする. 228 この場合,CPUロックと割込みロックは同じである. 229 230 (4-4-2) TMIN_INTPRI が -1 以上 -3 以下の場合 231 232 PSWのインサービス・プライオリティフラグ(ISP{1,0})の値を 233 (-TMIN_INTPRI+3) に設定することで実現する. 234 例えば -3 の場合,PSW レジスタの ISP{1,0} が (0,0) に設定される. 235 236 RL78 では,ISP{1,0} に設定した値「以上(値としては小)」の優先順位を持つ割込みが 237 「許可」される,という仕様になっている.したがって,マスクしたいレベルより 238 一段高い値をセットする必要がある. 239 240 241 (4-5) 性能評価用システム時刻の参照に関する規定 242 243 get_utmをサポートする予定であるがまだ実装していない. 244 245 246 (4-6) システム初期化手順の内容 247 248 スタートアップルーチンは,システムリセット直後に呼び出され,実行を開始する. 249 その際のプロセッサ状態は以下を前提としている. 250 ・SP, MAA は未初期化 251 ・レジスタバンクは RB0 252 ・PSWレジスタのIEフラグが0 (割込みロック状態と同等の状態) 253 ・PSWレジスタのISP=(1,1) 254 ・システムクロックは未初期化(内部オシレータ動作 1MHz) 255 ・メモリ未初期化(もしソフトウェアリセットを独自に実装していれば保持されている) 256 257 まず,スタートアップルーチンの start (start.asm) が以下の処理を行う. 258 ISP, MAA の初期化 259 メモリ初期化 260 sta_ker (startup.c) コール 261 そして,target_initialize (target_config.c) にてクロック設定が行われる. 262 263 その後,dispatcher (task.c) を実行する前に CPUロック状態かつ割込みロック解除状態に 264 しておく必要があるため,start_dispatch (prc_support.asm)において 265 PSW レジスタの ISP 及び IEビットを,以下の値にセットする. 266 267 (a) TMIN_INTPRI が -1 以下かつ -3 以上の場合 268 IPL=-(TMIN_INTPRI)+3 かつ,IEビット=1 269 270 (b) TMIN_INTPRI==-4の場合 271 IPL=3 かつ,IEビット=0 272 273 さらに,dispatcher は無限ループでリターンしないため,ジャンプ前に 274 start_dispatch でスタックの初期化を行っている. 275 276 277 (4-7) システム終了手順 278 279 システム終了時は call_exit_kernel (prc_support.asm) でスタックを初期化し, 280 exit_kernel (startup.c) を呼び出す. 281 282 その後,target_exit (target_config.c) でターゲット依存の終了を行う. 283 規定では無限ループさせるのみで特に何もしていない. 284 もし,ターゲット固有の終了処理を行う必要がある場合,target_exit もしくは 285 そこから呼び出される関数で処理を実施する. 286 287 288 (5) タイマドライバ関連の情報 289 290 最小セットカーネルの拡張機能として周期ハンドラ及びアラームハンドラが 291 用意されている.これらを使用するためにはタイムティックを供給する 292 タイマドライバをターゲットで用意する必要がある. 293 294 295 (6) 制限事項 296 297 ・カーネルのコンフィギュレーション 298 コンフィギュレーションのパス3(ビルド後の構成チェック)は行っていない。 299 そのため,タスク,割込みハンドラ,割込みサービスルーチン,CPU例外ハンドラ, 300 初期化処理ルーチン,終了処理ルーチン,周期ハンドラ,アラームハンドラが 301 不正である場合を E_PAR エラーとして検出することができない. 302 従ってアプリケーション開発時にテストすることでこれらの異常を検出する必要がある. 303 304 ・文字コード,改行コードについて 305 RL78プロセッサ依存部は Windows上で動作する開発環境 CubeSuite+ を用いて 306 開発することを前提としている.TOPPERSプロジェクトから公開されるソースパッケージは 307 文字コードはSJIS, 改行コードは CR+LF として公開している. 308 309 310 (7) サポートプロセッサの追加 311 312 (7-1) プロセッサ毎の定義事項 313 314 プロセッサ毎に異なる事項としては以下の事項がある. 315 ・有効な割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の範囲 316 ・割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の割り当て 317 318 従って,サポートするプロセッサを追加する場合には,まずプロセッサ名に基づく 319 次のファイルを用意する.例えば RL78/G13 の場合, 325 320 rl78g13.h 326 ÝÔCÝnhÔCCPUáOnhÔÌè`321 割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の定義 327 322 rl78g13_config.h 328 ÝÔÌÅål(INTNO_MAX), LøÈÝÔ323 割込み番号の最大値(INTNO_MAX), 有効な割込み番号 329 324 rl78g13.tf 330 ECFG_INT, DEF_INH, ATT_ISR, DEF_EXC ÈÇÅwèÂ\Èp[^lÌè`331 ELøÈÝÔCÝnhÔCCPUáOnhÔÌÍÍÌè`325 ・CFG_INT, DEF_INH, ATT_ISR, DEF_EXC などで指定可能なパラメータ値の定義 326 ・有効な割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の範囲の定義 332 327 $INTNO_VALID 333 328 $INHNO_VALID 334 329 $EXCNO_VALID 335 EÝÔCÝnhÔCCPUáOnhÔÌÍÍ(³ølàÜÞ)330 ・割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の範囲(無効値も含む) 336 331 $INTNO_RANGE 337 332 $INHNO_RANGE 338 333 $EXCNO_RANGE 339 334 340 »µÄ±êçªCrhßöÅgp³êéæ¤ÉC^[Qbg˶Ìt@C©ç 341 ±êçðCN[h·éD 342 rl78g13_config.h ÌêCtarget_config.h ©ç343 rl78g13.h ÌêC<^[Qbg¼Ì>.h ©ç344 rl78g13.tf ÌêC^[Qbg˶ÌCFGpev[gt@C(target.tf) ©ç345 Etarget.tf ÅÍCprc.tf ðCN[h·éOÉCgp·é^[QbgvZbTÌ346 @CFGpev[gt@C(±ÌêCrl78g13.tf)ðCN[h·é±ÆD347 348 ܽC±êçÌt@C©çC»ê¼êÌt@CÉηé¤ÊªÌ 349 t@CðCN[h·é 350 rl78g13_config.h ÌêCprc_config.h ð351 rl78g13.tf ÌêCprc.tf (M16Ct@~ÌSvZbTɤÊÌtf)ð352 353 ãLÈOÉCprc_ Åè`³êÄ¢éÌÉC±êÜÅÆÍÙÈéè`Ìdûð 354 µÈ¯êÎÈçÈ¢à̪oÄé©àµêÈ¢D»ÌêÍCè`Ìzuð 355 ÏX·éKvª é½ßCT|[g[OXgÖñ¸¯êÎK¢Å éD 356 ñ¸¢½êCÈ~Ìo[WAbvÉÄηé\èÅ éD 357 358 359 ÏXð 360 2014/8/21 EVKì¬361 2014/9/05 ETMIN_INTPRI ª -4 ÌêÉàε½½ßCÖAÓðÇLD362 2014/10/14 ETMIN_INTPRI ª -4 Ìê̽dÝÉ¢ÄÓðÇL(4-2-2,4-2-8)D363 ETMIN_INTPRI ð -4 ɵ½êÉAZuÌIvVðÏX·é364 @KvªÈÈÁ½½ßCêLÚðíD(4-4-1)365 EVXeú»èÅÌàeÉ墀 TMIN_INTPRI ª -4 ÌêðÇÁ(4-6)D366 2014/10/15 E½dÝÌÓÉ¢ÄêC³(4-2-8)D367 2015/6/2 ESSP-1.3.0Î368 Èã 335 そしてこれらが,ビルド過程で使用されるように,ターゲット依存部のファイルから 336 これらをインクルードする. 337 rl78g13_config.h の場合,target_config.h から 338 rl78g13.h の場合,<ターゲット名称>.h から 339 rl78g13.tf の場合,ターゲット依存部のCFG用テンプレートファイル(target.tf) から 340 ・target.tf では,prc.tf をインクルードする前に,使用するターゲットプロセッサの 341 CFG用テンプレートファイル(この場合,rl78g13.tf)をインクルードすること. 342 343 また,これらのファイルから,それぞれのファイルに対応する共通部分の 344 ファイルをインクルードする 345 rl78g13_config.h の場合,prc_config.h を 346 rl78g13.tf の場合,prc.tf (M16Cファミリの全プロセッサに共通のtf)を 347 348 上記以外に,prc_ で定義されている事項の中に,これまでとは異なる定義の仕方を 349 しなければならないものが出てくるかもしれない.その場合は,定義の配置を 350 変更する必要があるため,サポートメーリングリストへ報告頂ければ幸いである. 351 報告頂いた場合,以降のバージョンアップにて対応する予定である. 352 353 354 ○変更履歴 355 2014/8/21 ・新規作成 356 2014/9/05 ・TMIN_INTPRI が -4 の場合にも対応したため,関連箇所を追記. 357 2014/10/14 ・TMIN_INTPRI が -4 の場合の多重割込みについて注意事項を追記(4-2-2,4-2-8). 358 ・TMIN_INTPRI を -4 にした場合にアセンブラのオプションを変更する 359 必要がなくなったため,一部記載を削除.(4-4-1) 360 ・システム初期化手順での処理内容について TMIN_INTPRI が -4 の場合を追加(4-6). 361 2014/10/15 ・多重割込みの注意事項について一部修正(4-2-8). 362 2015/6/2 ・SSP-1.3.0対応 363 以上 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/rl78g13.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 * Nagoya Municipal Industrial Research Institute, JAPAN 8 8 * 9 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 11 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 14 * R[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 16 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gipÒ} 18 * j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 20 * ØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 22 * Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌì 26 * \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 28 * ·é±ÆD 29 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 30 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 31 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 32 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 9 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 11 * 再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 13 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース 14 * コード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 16 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 17 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 18 * 証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 20 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 22 * 権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 24 * 告すること. 25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 26 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 27 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 28 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 33 29 * 34 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ35 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη36 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp37 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð38 * íÈ¢D30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 31 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 32 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 33 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 34 * わない. 39 35 * 40 36 */ 41 37 42 38 /* 43 * RL78/G13 É˶·éè`39 * RL78/G13に依存する定義 44 40 */ 45 41 … … 49 45 50 46 /* 51 * CPU áOnhÔÌè`52 */ 53 #define EXCNO_BRK 0 /* \tgEFAxN^ݽß*/54 55 /* 56 * ÝÔÌè`(ftHgvCIeBÌlðÝÔÆ·é)57 */ 58 #define INTNO_INTWDTI 0 /* EHb`hbOE^C}*/59 #define INTNO_INTLV1 1 /* d³o*/60 #define INTNO_INTP0 2 /* [qüÍGbWo*/61 #define INTNO_INTP1 3 /* [qüÍGbWo*/62 #define INTNO_INTP2 4 /* [qüÍGbWo*/63 #define INTNO_INTP3 5 /* [qüÍGbWo*/64 #define INTNO_INTP4 6 /* [qüÍGbWo*/65 #define INTNO_INTP5 7 /* [qüÍGbWo*/66 67 #define INTNO_INTST2 8 /* UART2 MÌ]®¹Cobt@ó«Ý*/68 #define INTNO_INTCSI20 8 /* CSI20 Ì]®¹Cobt@ó«Ý*/69 #define INTNO_IIC20 8 /* IIC20 Ì]®¹*/70 71 #define INTNO_INTSR2 9 /* UART2 óMÌ]®¹*/72 #define INTNO_INTSCI21 9 /* CSI21 Ì]®¹*/73 #define INTNO_INTIIC21 9 /* IIC21 Ì]®¹*/74 75 #define INTNO_SRE2 10 /* UART2 óMÌÊMG[¶*/76 #define INTNO_INTTM11H 10 /* ^C}E`l11ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */77 78 #define INTNO_INTDMA0 11 /* DMA0 Ì]®¹*/79 #define INTNO_INTDMA1 12 /* DMA1 Ì]®¹*/80 81 #define INTNO_INTST0 13 /* UART0 MÌ]®¹Cobt@ó«Ý*/82 #define INTNO_INTCSI00 13 /* CSI00 Ì]®¹, obt@ó«Ý*/83 #define INTNO_INTIIC00 13 /* IIC00 Ì]®¹*/84 85 #define INTNO_INTSR0 14 /* UART0 óMÌ]®¹Cobt@ó«Ý*/86 #define INTNO_INTCSI01 14 /* CSI01 Ì]®¹, obt@ó«Ý*/87 #define INTNO_INTIIC01 14 /* IIC01 Ì]®¹*/88 89 #define INTNO_SRE0 15 /* UART0 óMÌÊMG[¶*/90 #define INTNO_INTTM01H 15 /* ^C}E`l01ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */91 92 #define INTNO_INTST1 16 /* UART1 MÌ]®¹Cobt@ó«Ý*/93 #define INTNO_INTCSI10 16 /* CSI10 Ì]®¹, obt@ó«Ý*/94 #define INTNO_INTIIC10 16 /* IIC10 Ì]®¹*/95 96 #define INTNO_INTSR1 17 /* UART1 óMÌ]®¹Cobt@ó«Ý*/97 #define INTNO_INTCSI11 17 /* CSI11 Ì]®¹, obt@ó«Ý*/98 #define INTNO_INTIIC11 17 /* IIC11 Ì]®¹*/99 100 #define INTNO_SRE1 18 /* UART1 óMÌÊMG[¶*/101 #define INTNO_INTTM03H 18 /* ^C}E`l03ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */102 103 #define INTNO_INTIICA0 19 /* IICA0 ÊM®¹*/104 #define INTNO_INTTM00 20 /* ^C}E`l00ÌJEg®¹Ü½ÍLv`®¹*/105 #define INTNO_INTTM01 21 /* ^C}E`l01ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */106 #define INTNO_INTTM02 22 /* ^C}E`l02ÌJEg®¹Ü½ÍLv`®¹*/107 #define INTNO_INTTM03 23 /* ^C}E`l03ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */108 #define INTNO_INTAD 24 /* A/D Ï·®¹*/109 #define INTNO_INTRTC 25 /* A^CENbNÌèüúM/A[êvo*/110 #define INTNO_INTIT 26 /* 12 rbgEC^[oE^C}ÌC^[oMo*/111 #define INTNO_INTKR 27 /* L[E^[EMo*/112 113 #define INTNO_INTST3 28 /* UART3 MÌ]®¹Cobt@ó«Ý*/114 #define INTNO_INTCSI30 28 /* CSI30 Ì]®¹, obt@ó«Ý*/115 #define INTNO_INTIIC30 28 /* IIC30 Ì]®¹*/116 117 #define INTNO_INTSR3 29 /* UART3 óMÌ]®¹Cobt@ó«Ý*/118 #define INTNO_INTCSI31 29 /* CSI31 Ì]®¹, obt@ó«Ý*/119 #define INTNO_INTIIC31 29 /* IIC31 Ì]®¹*/120 121 #define INTNO_INTTM13 30 /* ^C}E`l13ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */122 #define INTNO_INTTM04 31 /* ^C}E`l04ÌJEg®¹Ü½ÍLv`®¹*/123 #define INTNO_INTTM05 32 /* ^C}E`l05ÌJEg®¹Ü½ÍLv`®¹*/124 #define INTNO_INTTM06 33 /* ^C}E`l06ÌJEg®¹Ü½ÍLv`®¹*/125 #define INTNO_INTTM07 34 /* ^C}E`l07ÌJEg®¹Ü½ÍLv`®¹*/126 127 #define INTNO_INTP6 35 /* [qüÍGbWo*/128 #define INTNO_INTP7 36 /* [qüÍGbWo*/129 #define INTNO_INTP8 37 /* [qüÍGbWo*/130 #define INTNO_INTP9 38 /* [qüÍGbWo*/131 #define INTNO_INTP10 39 /* [qüÍGbWo*/132 #define INTNO_INTP11 40 /* [qüÍGbWo*/133 134 #define INTNO_INTTM10 41 /* ^C}E`l10ÌJEg®¹Ü½ÍLv`®¹*/135 #define INTNO_INTTM11 42 /* ^C}E`l11ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */136 #define INTNO_INTTM12 43 /* ^C}E`l12ÌJEg®¹Ü½ÍLv`®¹*/137 138 #define INTNO_SRE3 44 /* UART3 óMÌÊMG[¶*/139 #define INTNO_INTTM13H 44 /* ^C}E`l13ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */140 141 #define INTNO_INTMD 45 /* Z½ßI¹/ÏaZÊÌI[o[t[¶*/142 #define INTNO_INTIICA1 46 /* IICA1 ÊM®¹*/143 #define INTNO_INTFL 47 /* \ñ*/144 #define INTNO_INTDMA2 48 /* DMA2 Ì]®¹*/145 #define INTNO_INTDMA3 49 /* DMA3 Ì]®¹*/146 #define INTNO_INTTM14 50 /* ^C}E`l14ÌJEg®¹Ü½ÍLv`®¹*/147 #define INTNO_INTTM15 51 /* ^C}E`l15ÌJEg®¹Ü½ÍLv`®¹*/148 #define INTNO_INTTM16 52 /* ^C}E`l16ÌJEg®¹Ü½ÍLv`®¹*/149 #define INTNO_INTTM17 53 /* ^C}E`l17ÌJEg®¹Ü½ÍLv`®¹*/150 151 152 /* 153 * ÝnhÔÌè`154 */ 155 #define INHNO_INTWDTI INTNO_INTWDTI /* EHb`hbOE^C}*/156 #define INHNO_INTLV1 INTNO_INTLV1 /* d³o*/157 #define INHNO_INTP0 INTNO_INTP0 /* [qüÍGbWo*/158 #define INHNO_INTP1 INTNO_INTP1 /* [qüÍGbWo*/159 #define INHNO_INTP2 INTNO_INTP2 /* [qüÍGbWo*/160 #define INHNO_INTP3 INTNO_INTP3 /* [qüÍGbWo*/161 #define INHNO_INTP4 INTNO_INTP4 /* [qüÍGbWo*/162 #define INHNO_INTP5 INTNO_INTP5 /* [qüÍGbWo*/163 164 #define INHNO_INTST2 INTNO_INTST2 /* UART2 MÌ]®¹Cobt@ó«Ý*/165 #define INHNO_INTCSI20 INTNO_INTCSI20 /* CSI20 Ì]®¹Cobt@ó«Ý*/166 #define INHNO_IIC20 INTNO_IIC20 /* IIC20 Ì]®¹*/167 168 #define INHNO_INTSR2 INTNO_INTSR2 /* UART2 óMÌ]®¹*/169 #define INHNO_INTSCI21 INTNO_INTSCI21 /* CSI21 Ì]®¹*/170 #define INHNO_INTIIC21 INTNO_INTIIC21 /* IIC21 Ì]®¹*/171 172 #define INHNO_SRE2 INTNO_SRE2 /* UART2 óMÌÊMG[¶*/173 #define INHNO_INTTM11H INTNO_INTTM11H /* ^C}E`l11ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */174 175 #define INHNO_INTDMA0 INTNO_INTDMA0 /* DMA0 Ì]®¹*/176 #define INHNO_INTDMA1 INTNO_INTDMA1 /* DMA1 Ì]®¹*/177 178 #define INHNO_INTST0 INTNO_INTST0 /* UART0 MÌ]®¹Cobt@ó«Ý*/179 #define INHNO_INTCSI00 INTNO_INTCSI00 /* CSI00 Ì]®¹, obt@ó«Ý*/180 #define INHNO_INTIIC00 INTNO_INTIIC00 /* IIC00 Ì]®¹*/181 182 #define INHNO_INTSR0 INTNO_INTSR0 /* UART0 óMÌ]®¹Cobt@ó«Ý*/183 #define INHNO_INTCSI01 INTNO_INTCSI01 /* CSI01 Ì]®¹, obt@ó«Ý*/184 #define INHNO_INTIIC01 INTNO_INTIIC01 /* IIC01 Ì]®¹*/185 186 #define INHNO_SRE0 INTNO_SRE0 /* UART0 óMÌÊMG[¶*/187 #define INHNO_INTTM01H INTNO_INTTM01H /* ^C}E`l01ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */188 189 #define INHNO_INTST1 INTNO_INTST1 /* UART1 MÌ]®¹Cobt@ó«Ý*/190 #define INHNO_INTCSI10 INTNO_INTCSI10 /* CSI10 Ì]®¹, obt@ó«Ý*/191 #define INHNO_INTIIC10 INTNO_INTIIC10 /* IIC10 Ì]®¹*/192 193 #define INHNO_INTSR1 INTNO_INTSR1 /* UART1 óMÌ]®¹Cobt@ó«Ý*/194 #define INHNO_INTCSI11 INTNO_INTCSI11 /* CSI11 Ì]®¹, obt@ó«Ý*/195 #define INHNO_INTIIC11 INTNO_INTIIC11 /* IIC11 Ì]®¹*/196 197 #define INHNO_SRE1 INTNO_SRE1 /* UART1 óMÌÊMG[¶*/198 #define INHNO_INTTM03H INTNO_INTTM03H /* ^C}E`l03ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */199 200 #define INHNO_INTIICA0 INTNO_INTIICA0 /* IICA0 ÊM®¹*/201 #define INHNO_INTTM00 INTNO_INTTM00 /* ^C}E`l00ÌJEg®¹Ü½ÍLv`®¹*/202 #define INHNO_INTTM01 INTNO_INTTM01 /* ^C}E`l01ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */203 #define INHNO_INTTM02 INTNO_INTTM02 /* ^C}E`l02ÌJEg®¹Ü½ÍLv`®¹*/204 #define INHNO_INTTM03 INTNO_INTTM03 /* ^C}E`l03ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */205 #define INHNO_INTAD INTNO_INTAD /* A/D Ï·®¹*/206 #define INHNO_INTRTC INTNO_INTRTC /* A^CENbNÌèüúM/A[êvo*/207 #define INHNO_INTIT INTNO_INTIT /* 12 rbgEC^[oE^C}ÌC^[oMo*/208 #define INHNO_INTKR INTNO_INTKR /* L[E^[EMo*/209 210 #define INHNO_INTST3 INTNO_INTST3 /* UART3 MÌ]®¹Cobt@ó«Ý*/211 #define INHNO_INTCSI30 INTNO_INTCSI30 /* CSI30 Ì]®¹, obt@ó«Ý*/212 #define INHNO_INTIIC30 INTNO_INTIIC30 /* IIC30 Ì]®¹*/213 214 #define INHNO_INTSR3 INTNO_INTSR3 /* UART3 óMÌ]®¹Cobt@ó«Ý*/215 #define INHNO_INTCSI31 INTNO_INTCSI31 /* CSI31 Ì]®¹, obt@ó«Ý*/216 #define INHNO_INTIIC31 INTNO_INTIIC31 /* IIC31 Ì]®¹*/217 218 #define INHNO_INTTM13 INTNO_INTTM13 /* ^C}E`l13ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */219 #define INHNO_INTTM04 INTNO_INTTM04 /* ^C}E`l04ÌJEg®¹Ü½ÍLv`®¹*/220 #define INHNO_INTTM05 INTNO_INTTM05 /* ^C}E`l05ÌJEg®¹Ü½ÍLv`®¹*/221 #define INHNO_INTTM06 INTNO_INTTM06 /* ^C}E`l06ÌJEg®¹Ü½ÍLv`®¹*/222 #define INHNO_INTTM07 INTNO_INTTM07 /* ^C}E`l07ÌJEg®¹Ü½ÍLv`®¹*/223 224 #define INHNO_INTP6 INTNO_INTP6 /* [qüÍGbWo*/225 #define INHNO_INTP7 INTNO_INTP7 /* [qüÍGbWo*/226 #define INHNO_INTP8 INTNO_INTP8 /* [qüÍGbWo*/227 #define INHNO_INTP9 INTNO_INTP9 /* [qüÍGbWo*/228 #define INHNO_INTP10 INTNO_INTP10 /* [qüÍGbWo*/229 #define INHNO_INTP11 INTNO_INTP11 /* [qüÍGbWo*/230 231 #define INHNO_INTTM10 INTNO_INTTM10 /* ^C}E`l10ÌJEg®¹Ü½ÍLv`®¹*/232 #define INHNO_INTTM11 INTNO_INTTM11 /* ^C}E`l11ÌJEg®¹Ü½ÍLv`®¹(16rbg/ºÊ8rbg^C}®ì) */233 #define INHNO_INTTM12 INTNO_INTTM12 /* ^C}E`l12ÌJEg®¹Ü½ÍLv`®¹*/234 235 #define INHNO_SRE3 INTNO_SRE3 /* UART3 óMÌÊMG[¶*/236 #define INHNO_INTTM13H INTNO_INTTM13H /* ^C}E`l13ÌJEg®¹Ü½ÍLv`®¹(8rbg^C}®ì) */237 238 #define INHNO_INTMD INTNO_INTMD /* Z½ßI¹/ÏaZÊÌI[o[t[¶*/239 #define INHNO_INTIICA1 INTNO_INTIICA1 /* IICA1 ÊM®¹*/240 #define INHNO_INTFL INTNO_INTFL /* \ñ*/241 #define INHNO_INTDMA2 INTNO_INTDMA2 /* DMA2 Ì]®¹*/242 #define INHNO_INTDMA3 INTNO_INTDMA3 /* DMA3 Ì]®¹*/243 #define INHNO_INTTM14 INTNO_INTTM14 /* ^C}E`l14ÌJEg®¹Ü½ÍLv`®¹*/244 #define INHNO_INTTM15 INTNO_INTTM15 /* ^C}E`l15ÌJEg®¹Ü½ÍLv`®¹*/245 #define INHNO_INTTM16 INTNO_INTTM16 /* ^C}E`l16ÌJEg®¹Ü½ÍLv`®¹*/246 #define INHNO_INTTM17 INTNO_INTTM17 /* ^C}E`l17ÌJEg®¹Ü½ÍLv`®¹*/247 248 249 /* 250 * ݧäWX^è`251 */ 252 #define TADR_IF0L 0xfffe0 // ÝvtOEWX^253 #define TADR_IF2L 0xfffd0 // ÝvtOEWX^254 #define TADR_MK0L 0xfffe4 // Ý}XNEtOEWX^255 #define TADR_MK2L 0xfffd4 // Ý}XNEtOEWX^256 #define TADR_PR00L 0xfffe8 // DæÊwètOEWX^257 #define TADR_PR02L 0xfffd8 // DæÊwètOEWX^258 #define TADR_EGP0 0xfff38 // Oݧ¿ãªèGbWÂWX^259 #define TADR_EGP1 0xfff3a // Oݧ¿ãªèGbWÂWX^260 261 262 #define TADR_PER0 0xf00f0 // üÓCl[uWX^0263 264 #define TBIT_PER0_TAU0EN UINT8_C(0x01) // ^C}EACEjbg0ÌüÍNbN§ä265 #define TBIT_PER0_SAU0EN UINT8_C(0x04) // VAEACEjbg0ÌüÍNbN§ä266 267 /* 268 * NbN¶ñH269 */ 270 #define TADR_CMC 0xfffa0 // NbN®ì[h§äWX^271 #define TADR_CKC 0xfffa4 // NbN®ì[h§äWX^272 #define TADR_CSC 0xfffa1 // NbN®ìXe[^X§äWX^273 #define TADR_OSTC 0xfffa2 // UÀèÔJE^óÔWX^274 275 /* 276 * ^C}EACÖAWX^(VXeeBbNp)277 */ 278 #define TADR_TPS0 0xf01b6 // ^C}ENbNIðWX^0279 #define TADR_TMR00 0xf0190 // ^C}E[hEWX^00280 #define TADR_TDR00 0xfff18 // ^C}Ef[^EWX^00281 #define TADR_TS0 0xf01b2 // ^C}E`lâ~WX^0282 #define TADR_TT0 0xf01b4 // ^C}E`lâ~WX^047 * CPU例外ハンドラ番号の定義 48 */ 49 #define EXCNO_BRK 0 /* ソフトウェアベクタ割込み命令 */ 50 51 /* 52 * 割込み番号の定義(デフォルトプライオリティの値を割込み番号とする) 53 */ 54 #define INTNO_INTWDTI 0 /* ウォッチドッグ・タイマ */ 55 #define INTNO_INTLV1 1 /* 電圧検出 */ 56 #define INTNO_INTP0 2 /* 端子入力エッジ検出 */ 57 #define INTNO_INTP1 3 /* 端子入力エッジ検出 */ 58 #define INTNO_INTP2 4 /* 端子入力エッジ検出 */ 59 #define INTNO_INTP3 5 /* 端子入力エッジ検出 */ 60 #define INTNO_INTP4 6 /* 端子入力エッジ検出 */ 61 #define INTNO_INTP5 7 /* 端子入力エッジ検出 */ 62 63 #define INTNO_INTST2 8 /* UART2 送信の転送完了,バッファ空き割込み */ 64 #define INTNO_INTCSI20 8 /* CSI20 の転送完了,バッファ空き割込み */ 65 #define INTNO_IIC20 8 /* IIC20 の転送完了 */ 66 67 #define INTNO_INTSR2 9 /* UART2 受信の転送完了 */ 68 #define INTNO_INTSCI21 9 /* CSI21 の転送完了 */ 69 #define INTNO_INTIIC21 9 /* IIC21 の転送完了 */ 70 71 #define INTNO_SRE2 10 /* UART2 受信の通信エラー発生 */ 72 #define INTNO_INTTM11H 10 /* タイマ・チャネル11のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 73 74 #define INTNO_INTDMA0 11 /* DMA0 の転送完了 */ 75 #define INTNO_INTDMA1 12 /* DMA1 の転送完了 */ 76 77 #define INTNO_INTST0 13 /* UART0 送信の転送完了,バッファ空き割込み */ 78 #define INTNO_INTCSI00 13 /* CSI00 の転送完了, バッファ空き割込み */ 79 #define INTNO_INTIIC00 13 /* IIC00 の転送完了 */ 80 81 #define INTNO_INTSR0 14 /* UART0 受信の転送完了,バッファ空き割込み */ 82 #define INTNO_INTCSI01 14 /* CSI01 の転送完了, バッファ空き割込み */ 83 #define INTNO_INTIIC01 14 /* IIC01 の転送完了 */ 84 85 #define INTNO_SRE0 15 /* UART0 受信の通信エラー発生 */ 86 #define INTNO_INTTM01H 15 /* タイマ・チャネル01のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 87 88 #define INTNO_INTST1 16 /* UART1 送信の転送完了,バッファ空き割込み */ 89 #define INTNO_INTCSI10 16 /* CSI10 の転送完了, バッファ空き割込み */ 90 #define INTNO_INTIIC10 16 /* IIC10 の転送完了 */ 91 92 #define INTNO_INTSR1 17 /* UART1 受信の転送完了,バッファ空き割込み */ 93 #define INTNO_INTCSI11 17 /* CSI11 の転送完了, バッファ空き割込み */ 94 #define INTNO_INTIIC11 17 /* IIC11 の転送完了 */ 95 96 #define INTNO_SRE1 18 /* UART1 受信の通信エラー発生 */ 97 #define INTNO_INTTM03H 18 /* タイマ・チャネル03のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 98 99 #define INTNO_INTIICA0 19 /* IICA0 通信完了 */ 100 #define INTNO_INTTM00 20 /* タイマ・チャネル00のカウント完了またはキャプチャ完了 */ 101 #define INTNO_INTTM01 21 /* タイマ・チャネル01のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 102 #define INTNO_INTTM02 22 /* タイマ・チャネル02のカウント完了またはキャプチャ完了 */ 103 #define INTNO_INTTM03 23 /* タイマ・チャネル03のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 104 #define INTNO_INTAD 24 /* A/D変換完了 */ 105 #define INTNO_INTRTC 25 /* リアルタイム・クロックの定周期信号/アラーム一致検出 */ 106 #define INTNO_INTIT 26 /* 12ビット・インターバル・タイマのインターバル信号検出 */ 107 #define INTNO_INTKR 27 /* キー・リターン・信号検出 */ 108 109 #define INTNO_INTST3 28 /* UART3 送信の転送完了,バッファ空き割込み */ 110 #define INTNO_INTCSI30 28 /* CSI30 の転送完了, バッファ空き割込み */ 111 #define INTNO_INTIIC30 28 /* IIC30 の転送完了 */ 112 113 #define INTNO_INTSR3 29 /* UART3 受信の転送完了,バッファ空き割込み */ 114 #define INTNO_INTCSI31 29 /* CSI31 の転送完了, バッファ空き割込み */ 115 #define INTNO_INTIIC31 29 /* IIC31 の転送完了 */ 116 117 #define INTNO_INTTM13 30 /* タイマ・チャネル13のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 118 #define INTNO_INTTM04 31 /* タイマ・チャネル04のカウント完了またはキャプチャ完了 */ 119 #define INTNO_INTTM05 32 /* タイマ・チャネル05のカウント完了またはキャプチャ完了 */ 120 #define INTNO_INTTM06 33 /* タイマ・チャネル06のカウント完了またはキャプチャ完了 */ 121 #define INTNO_INTTM07 34 /* タイマ・チャネル07のカウント完了またはキャプチャ完了 */ 122 123 #define INTNO_INTP6 35 /* 端子入力エッジ検出 */ 124 #define INTNO_INTP7 36 /* 端子入力エッジ検出 */ 125 #define INTNO_INTP8 37 /* 端子入力エッジ検出 */ 126 #define INTNO_INTP9 38 /* 端子入力エッジ検出 */ 127 #define INTNO_INTP10 39 /* 端子入力エッジ検出 */ 128 #define INTNO_INTP11 40 /* 端子入力エッジ検出 */ 129 130 #define INTNO_INTTM10 41 /* タイマ・チャネル10のカウント完了またはキャプチャ完了 */ 131 #define INTNO_INTTM11 42 /* タイマ・チャネル11のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 132 #define INTNO_INTTM12 43 /* タイマ・チャネル12のカウント完了またはキャプチャ完了 */ 133 134 #define INTNO_SRE3 44 /* UART3 受信の通信エラー発生 */ 135 #define INTNO_INTTM13H 44 /* タイマ・チャネル13のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 136 137 #define INTNO_INTMD 45 /* 除算命令終了/積和演算結果のオーバーフロー発生 */ 138 #define INTNO_INTIICA1 46 /* IICA1 通信完了 */ 139 #define INTNO_INTFL 47 /* 予約 */ 140 #define INTNO_INTDMA2 48 /* DMA2の転送完了 */ 141 #define INTNO_INTDMA3 49 /* DMA3の転送完了 */ 142 #define INTNO_INTTM14 50 /* タイマ・チャネル14のカウント完了またはキャプチャ完了 */ 143 #define INTNO_INTTM15 51 /* タイマ・チャネル15のカウント完了またはキャプチャ完了 */ 144 #define INTNO_INTTM16 52 /* タイマ・チャネル16のカウント完了またはキャプチャ完了 */ 145 #define INTNO_INTTM17 53 /* タイマ・チャネル17のカウント完了またはキャプチャ完了 */ 146 147 148 /* 149 * 割込みハンドラ番号の定義 150 */ 151 #define INHNO_INTWDTI INTNO_INTWDTI /* ウォッチドッグ・タイマ */ 152 #define INHNO_INTLV1 INTNO_INTLV1 /* 電圧検出 */ 153 #define INHNO_INTP0 INTNO_INTP0 /* 端子入力エッジ検出 */ 154 #define INHNO_INTP1 INTNO_INTP1 /* 端子入力エッジ検出 */ 155 #define INHNO_INTP2 INTNO_INTP2 /* 端子入力エッジ検出 */ 156 #define INHNO_INTP3 INTNO_INTP3 /* 端子入力エッジ検出 */ 157 #define INHNO_INTP4 INTNO_INTP4 /* 端子入力エッジ検出 */ 158 #define INHNO_INTP5 INTNO_INTP5 /* 端子入力エッジ検出 */ 159 160 #define INHNO_INTST2 INTNO_INTST2 /* UART2 送信の転送完了,バッファ空き割込み */ 161 #define INHNO_INTCSI20 INTNO_INTCSI20 /* CSI20 の転送完了,バッファ空き割込み */ 162 #define INHNO_IIC20 INTNO_IIC20 /* IIC20 の転送完了 */ 163 164 #define INHNO_INTSR2 INTNO_INTSR2 /* UART2 受信の転送完了 */ 165 #define INHNO_INTSCI21 INTNO_INTSCI21 /* CSI21 の転送完了 */ 166 #define INHNO_INTIIC21 INTNO_INTIIC21 /* IIC21 の転送完了 */ 167 168 #define INHNO_SRE2 INTNO_SRE2 /* UART2 受信の通信エラー発生 */ 169 #define INHNO_INTTM11H INTNO_INTTM11H /* タイマ・チャネル11のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 170 171 #define INHNO_INTDMA0 INTNO_INTDMA0 /* DMA0 の転送完了 */ 172 #define INHNO_INTDMA1 INTNO_INTDMA1 /* DMA1 の転送完了 */ 173 174 #define INHNO_INTST0 INTNO_INTST0 /* UART0 送信の転送完了,バッファ空き割込み */ 175 #define INHNO_INTCSI00 INTNO_INTCSI00 /* CSI00 の転送完了, バッファ空き割込み */ 176 #define INHNO_INTIIC00 INTNO_INTIIC00 /* IIC00 の転送完了 */ 177 178 #define INHNO_INTSR0 INTNO_INTSR0 /* UART0 受信の転送完了,バッファ空き割込み */ 179 #define INHNO_INTCSI01 INTNO_INTCSI01 /* CSI01 の転送完了, バッファ空き割込み */ 180 #define INHNO_INTIIC01 INTNO_INTIIC01 /* IIC01 の転送完了 */ 181 182 #define INHNO_SRE0 INTNO_SRE0 /* UART0 受信の通信エラー発生 */ 183 #define INHNO_INTTM01H INTNO_INTTM01H /* タイマ・チャネル01のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 184 185 #define INHNO_INTST1 INTNO_INTST1 /* UART1 送信の転送完了,バッファ空き割込み */ 186 #define INHNO_INTCSI10 INTNO_INTCSI10 /* CSI10 の転送完了, バッファ空き割込み */ 187 #define INHNO_INTIIC10 INTNO_INTIIC10 /* IIC10 の転送完了 */ 188 189 #define INHNO_INTSR1 INTNO_INTSR1 /* UART1 受信の転送完了,バッファ空き割込み */ 190 #define INHNO_INTCSI11 INTNO_INTCSI11 /* CSI11 の転送完了, バッファ空き割込み */ 191 #define INHNO_INTIIC11 INTNO_INTIIC11 /* IIC11 の転送完了 */ 192 193 #define INHNO_SRE1 INTNO_SRE1 /* UART1 受信の通信エラー発生 */ 194 #define INHNO_INTTM03H INTNO_INTTM03H /* タイマ・チャネル03のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 195 196 #define INHNO_INTIICA0 INTNO_INTIICA0 /* IICA0 通信完了 */ 197 #define INHNO_INTTM00 INTNO_INTTM00 /* タイマ・チャネル00のカウント完了またはキャプチャ完了 */ 198 #define INHNO_INTTM01 INTNO_INTTM01 /* タイマ・チャネル01のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 199 #define INHNO_INTTM02 INTNO_INTTM02 /* タイマ・チャネル02のカウント完了またはキャプチャ完了 */ 200 #define INHNO_INTTM03 INTNO_INTTM03 /* タイマ・チャネル03のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 201 #define INHNO_INTAD INTNO_INTAD /* A/D変換完了 */ 202 #define INHNO_INTRTC INTNO_INTRTC /* リアルタイム・クロックの定周期信号/アラーム一致検出 */ 203 #define INHNO_INTIT INTNO_INTIT /* 12ビット・インターバル・タイマのインターバル信号検出 */ 204 #define INHNO_INTKR INTNO_INTKR /* キー・リターン・信号検出 */ 205 206 #define INHNO_INTST3 INTNO_INTST3 /* UART3 送信の転送完了,バッファ空き割込み */ 207 #define INHNO_INTCSI30 INTNO_INTCSI30 /* CSI30 の転送完了, バッファ空き割込み */ 208 #define INHNO_INTIIC30 INTNO_INTIIC30 /* IIC30 の転送完了 */ 209 210 #define INHNO_INTSR3 INTNO_INTSR3 /* UART3 受信の転送完了,バッファ空き割込み */ 211 #define INHNO_INTCSI31 INTNO_INTCSI31 /* CSI31 の転送完了, バッファ空き割込み */ 212 #define INHNO_INTIIC31 INTNO_INTIIC31 /* IIC31 の転送完了 */ 213 214 #define INHNO_INTTM13 INTNO_INTTM13 /* タイマ・チャネル13のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 215 #define INHNO_INTTM04 INTNO_INTTM04 /* タイマ・チャネル04のカウント完了またはキャプチャ完了 */ 216 #define INHNO_INTTM05 INTNO_INTTM05 /* タイマ・チャネル05のカウント完了またはキャプチャ完了 */ 217 #define INHNO_INTTM06 INTNO_INTTM06 /* タイマ・チャネル06のカウント完了またはキャプチャ完了 */ 218 #define INHNO_INTTM07 INTNO_INTTM07 /* タイマ・チャネル07のカウント完了またはキャプチャ完了 */ 219 220 #define INHNO_INTP6 INTNO_INTP6 /* 端子入力エッジ検出 */ 221 #define INHNO_INTP7 INTNO_INTP7 /* 端子入力エッジ検出 */ 222 #define INHNO_INTP8 INTNO_INTP8 /* 端子入力エッジ検出 */ 223 #define INHNO_INTP9 INTNO_INTP9 /* 端子入力エッジ検出 */ 224 #define INHNO_INTP10 INTNO_INTP10 /* 端子入力エッジ検出 */ 225 #define INHNO_INTP11 INTNO_INTP11 /* 端子入力エッジ検出 */ 226 227 #define INHNO_INTTM10 INTNO_INTTM10 /* タイマ・チャネル10のカウント完了またはキャプチャ完了 */ 228 #define INHNO_INTTM11 INTNO_INTTM11 /* タイマ・チャネル11のカウント完了またはキャプチャ完了(16ビット/下位8ビットタイマ動作時) */ 229 #define INHNO_INTTM12 INTNO_INTTM12 /* タイマ・チャネル12のカウント完了またはキャプチャ完了 */ 230 231 #define INHNO_SRE3 INTNO_SRE3 /* UART3 受信の通信エラー発生 */ 232 #define INHNO_INTTM13H INTNO_INTTM13H /* タイマ・チャネル13のカウント完了またはキャプチャ完了(8ビットタイマ動作時) */ 233 234 #define INHNO_INTMD INTNO_INTMD /* 除算命令終了/積和演算結果のオーバーフロー発生 */ 235 #define INHNO_INTIICA1 INTNO_INTIICA1 /* IICA1 通信完了 */ 236 #define INHNO_INTFL INTNO_INTFL /* 予約 */ 237 #define INHNO_INTDMA2 INTNO_INTDMA2 /* DMA2の転送完了 */ 238 #define INHNO_INTDMA3 INTNO_INTDMA3 /* DMA3の転送完了 */ 239 #define INHNO_INTTM14 INTNO_INTTM14 /* タイマ・チャネル14のカウント完了またはキャプチャ完了 */ 240 #define INHNO_INTTM15 INTNO_INTTM15 /* タイマ・チャネル15のカウント完了またはキャプチャ完了 */ 241 #define INHNO_INTTM16 INTNO_INTTM16 /* タイマ・チャネル16のカウント完了またはキャプチャ完了 */ 242 #define INHNO_INTTM17 INTNO_INTTM17 /* タイマ・チャネル17のカウント完了またはキャプチャ完了 */ 243 244 245 /* 246 * 割込み制御レジスタ定義 247 */ 248 #define TADR_IF0L 0xfffe0 // 割込み要求フラグ・レジスタ 249 #define TADR_IF2L 0xfffd0 // 割込み要求フラグ・レジスタ 250 #define TADR_MK0L 0xfffe4 // 割込みマスク・フラグ・レジスタ 251 #define TADR_MK2L 0xfffd4 // 割込みマスク・フラグ・レジスタ 252 #define TADR_PR00L 0xfffe8 // 優先順位指定フラグ・レジスタ 253 #define TADR_PR02L 0xfffd8 // 優先順位指定フラグ・レジスタ 254 #define TADR_EGP0 0xfff38 // 外部割込み立ち上がりエッジ許可レジスタ 255 #define TADR_EGP1 0xfff3a // 外部割込み立ち上がりエッジ許可レジスタ 256 257 258 #define TADR_PER0 0xf00f0 // 周辺イネーブルレジスタ0 259 260 #define TBIT_PER0_TAU0EN UINT8_C(0x01) // タイマ・アレイ・ユニット0の入力クロック制御 261 #define TBIT_PER0_SAU0EN UINT8_C(0x04) // シリアル・アレイ・ユニット0の入力クロック制御 262 263 /* 264 * クロック発生回路 265 */ 266 #define TADR_CMC 0xfffa0 // クロック動作モード制御レジスタ 267 #define TADR_CKC 0xfffa4 // クロック動作モード制御レジスタ 268 #define TADR_CSC 0xfffa1 // クロック動作ステータス制御レジスタ 269 #define TADR_OSTC 0xfffa2 // 発振安定時間カウンタ状態レジスタ 270 271 /* 272 * タイマ・アレイ関連レジスタ(システムティック用) 273 */ 274 #define TADR_TPS0 0xf01b6 // タイマ・クロック選択レジスタ0 275 #define TADR_TMR00 0xf0190 // タイマ・モード・レジスタ00 276 #define TADR_TDR00 0xfff18 // タイマ・データ・レジスタ00 277 #define TADR_TS0 0xf01b2 // タイマ・チャネル停止レジスタ0 278 #define TADR_TT0 0xf01b4 // タイマ・チャネル停止レジスタ0 283 279 284 280 #define TBIT_TTm_TTm0 UINT16_C(0x0001) … … 288 284 289 285 /* 290 * VAEACÖAWX^291 */ 292 #define TADR_SPS0 0xf0126 // VANbNIðWX^293 #define TADR_SMR00 0xf0110 // VA[hWX^294 #define TADR_SMR01 0xf0112 // VA[hWX^295 296 #define TADR_SCR00 0xf0118 // VAÊM®ìÝèWX^297 #define TADR_SCR01 0xf011a // VAÊM®ìÝèWX^298 299 #define TADR_SDR00 0xfff10 // VAf[^WX^0300 #define TADR_SDR01 0xfff12 // VAf[^WX^0301 302 #define TADR_SOL0 0xf0134 // VAoÍxWX^0303 #define TADR_SO0 0xf0128 // VAoÍWX^0304 #define TADR_SOE0 0xf012a // VAoÍÂWX^0305 #define TADR_SSR00 0xf0100 // VAXe[^XWX^00306 #define TADR_SSR01 0xf0102 // VAXe[^XWX^01307 308 #define TADR_SS0 0xf0122 // VA`lJnWX^0309 #define TADR_ST0 0xf0124 // VA`lâ~WX^0310 311 #define TADR_SIR01 0xf010a // VAEtOENAEgKEWX^01312 313 #define TADR_NFEN0 0xf0070 // mCYEtB^ÂWX^0314 315 #define TBIT_SSRmn_BFF UINT16_C(0x0020) // `lnÌobt@WX^óÔ\¦tO316 #define TBIT_SSRmn_TSF UINT16_C(0x0040) // `lnÌÊMóÔ\¦tO317 #define TBIT_SSRmnL_BFF UINT8_C(0x20) // `lnÌobt@WX^óÔ\¦tO318 #define TBIT_SSRmnL_TSF UINT8_C(0x40) // `lnÌÊMóÔ\¦tO319 320 #define TBIT_SCRmn_TXEmn UINT16_C(0x8000) // `lnÌ®ì[h(M)321 #define TBIT_SCRmn_RXEmn UINT16_C(0x4000) // `lnÌ®ì[h(óM)322 323 /* 324 * I/O |[g286 * シリアル・アレイ関連レジスタ 287 */ 288 #define TADR_SPS0 0xf0126 // シリアルクロック選択レジスタ 289 #define TADR_SMR00 0xf0110 // シリアルモードレジスタ 290 #define TADR_SMR01 0xf0112 // シリアルモードレジスタ 291 292 #define TADR_SCR00 0xf0118 // シリアル通信動作設定レジスタ 293 #define TADR_SCR01 0xf011a // シリアル通信動作設定レジスタ 294 295 #define TADR_SDR00 0xfff10 // シリアルデータレジスタ0 296 #define TADR_SDR01 0xfff12 // シリアルデータレジスタ0 297 298 #define TADR_SOL0 0xf0134 // シリアル出力レベルレジスタ0 299 #define TADR_SO0 0xf0128 // シリアル出力レジスタ0 300 #define TADR_SOE0 0xf012a // シリアル出力許可レジスタ0 301 #define TADR_SSR00 0xf0100 // シリアルステータスレジスタ00 302 #define TADR_SSR01 0xf0102 // シリアルステータスレジスタ01 303 304 #define TADR_SS0 0xf0122 // シリアルチャネル開始レジスタ0 305 #define TADR_ST0 0xf0124 // シリアルチャネル停止レジスタ0 306 307 #define TADR_SIR01 0xf010a // シリアル・フラグ・クリア・トリガ・レジスタ01 308 309 #define TADR_NFEN0 0xf0070 // ノイズ・フィルタ許可レジスタ0 310 311 #define TBIT_SSRmn_BFF UINT16_C(0x0020) // チャネルnのバッファレジスタ状態表示フラグ 312 #define TBIT_SSRmn_TSF UINT16_C(0x0040) // チャネルnの通信状態表示フラグ 313 #define TBIT_SSRmnL_BFF UINT8_C(0x20) // チャネルnのバッファレジスタ状態表示フラグ 314 #define TBIT_SSRmnL_TSF UINT8_C(0x40) // チャネルnの通信状態表示フラグ 315 316 #define TBIT_SCRmn_TXEmn UINT16_C(0x8000) // チャネルnの動作モード(送信) 317 #define TBIT_SCRmn_RXEmn UINT16_C(0x4000) // チャネルnの動作モード(受信) 318 319 /* 320 * I/Oポート 325 321 */ 326 322 #define TADR_PU0 0xf0030 … … 338 334 339 335 /* 340 * Äp|[gWX^336 * 汎用ポートレジスタ 341 337 */ 342 338 #define TBIT_BIT0 0x01 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/rl78g13.tf
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 $ 2 $ `bv˶ev[giRL78/G13pj2 $ チップ依存テンプレート(RL78/G13用) 3 3 $ 4 4 5 5 $ 6 $ ÝÔÆÝnhÔÌè`6 $ 割込み番号と割込みハンドラ番号の定義 7 7 $ 8 $ RL78 ÅÍÝÔÆÝnhÔª1Î1ÅηéD9 $ ftHgvCIeBðÂ}XJuݪÎÛÆÈéD10 $ ftHgvCIeBÌÔðÝÔÆ·éD8 $ RL78では割込み番号と割込みハンドラ番号が1対1で対応する. 9 $ デフォルトプライオリティを持つマスカブル割込みが対象となる. 10 $ デフォルトプライオリティの番号を割込み番号とする. 11 11 $ 12 12 … … 16 16 17 17 $ 18 $ áOÔÌè`18 $ 例外番号の定義 19 19 $ 20 $ áOÆµÄ BRK ÝÌÝÆ·éD20 $ 例外として BRK 割込みのみとする. 21 21 $ 22 22 … … 24 24 25 25 $ 26 $ INT ÝÌÔ27 $ INTP0--INTP11 ( [qüÍGbWoÝ)ªY26 $ INT割込みの番号 27 $ INTP0--INTP11 (端子入力エッジ検出割込み)が該当 28 28 $ 29 29 … … 31 31 32 32 $ 33 $ ÝÔCÝnhÔCáOÔÌÍÍ33 $ 割込み番号,割込みハンドラ番号,例外番号の範囲 34 34 $ 35 35 … … 39 39 40 40 $ 41 $ vZbT˶Ìev[gt@C41 $ プロセッサ依存のテンプレートファイル 42 42 $ 43 43 $INCLUDE"rl78_ca78k0r/prc.tf"$ -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/rl78g13_config.h
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 7 7 * Nagoya Municipal Industrial Research Institute, JAPAN 8 8 * 9 * ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 11 * ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 14 * R[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 16 * Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gipÒ} 18 * j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 20 * ØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 22 * Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌì 26 * \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 28 * ·é±ÆD 29 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 30 * ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 31 * {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 32 * ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 9 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 11 * 再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 13 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース 14 * コード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 16 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 17 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 18 * 証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 20 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 22 * 権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 24 * 告すること. 25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 26 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 27 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 28 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 33 29 * 34 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ35 * ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη36 * éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp37 * Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð38 * íÈ¢D30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 31 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 32 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 33 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 34 * わない. 39 35 * 40 36 */ 41 37 42 38 /* 43 * vZbT˶W 44 [iRL78/G13pj 39 * プロセッサ依存モジュール(RL78/G13用) 45 40 * 46 * ±ÌCN[ht@CÍCtarget_config.h ÌÝ©çCN[h³êéD47 * ¼Ìt@C©ç¼ÚCN[hµÄÍÈçÈ¢D41 * このインクルードファイルは,target_config.h のみからインクルードされる. 42 * 他のファイルから直接インクルードしてはならない. 48 43 */ 49 44 … … 53 48 54 49 /* 55 * ÝÔÌÅål50 * 割込み番号の最大値 56 51 */ 57 52 #define INTNO_MAX UINT_C(53) 58 53 59 54 /* 60 * wèÝÔªLøÈÝÔÌÍÍÉ é©Ç¤©Ì»è55 * 指定割込み番号が有効な割込み番号の範囲にあるかどうかの判定 61 56 */ 62 57 #define VALID_INTNO(intno) \ -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/segment_e.asm
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 ; 2 ; ZOgè`3 ; ZOgöAhXðè`·é½ßCNðêÔÅãÉ·é2 ; セグメント定義 3 ; セグメント末尾アドレスを定義するため,リンク順序を一番最後にする 4 4 ; 5 5 -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/segment_s.asm
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 1 1 ; 2 ; ZOgè`3 ; ZOgæªAhXðè`·é½ßCNðêÔÅÉ·é2 ; セグメント定義 3 ; セグメント先頭アドレスを定義するため,リンク順序を一番最初にする 4 4 ; 5 5 6 6 ; 7 ; O[oV{7 ; グローバルシンボル 8 8 ; 9 9 extrn _start … … 14 14 15 15 ; 16 ; ZOgè`16 ; セグメント定義 17 17 ; 18 18 VECTOR CSEG … … 23 23 ;OCDWORK CSEG 24 24 25 ; IvVoCgÝè25 ; オプションバイト設定 26 26 OPT CSEG OPT_BYTE 27 db 06eh ; WDT: C^[oÝðgpµÈ¢CJE^®ìÖ~ 28 db 0ffh ; LVD: It 29 db 0efh ; HS[hCI`bvIV[^ 1MHz 30 db 085h ; I`bvfobOÂ, FظsÉtbV 31 ÁµÈ¢ 27 db 06eh ; WDT: インターバル割込みを使用しない,カウンタ動作禁止 28 db 0ffh ; LVD: オフ 29 db 0efh ; HSモード,オンチップオシレータ 1MHz 30 db 085h ; オンチップデバッグ許可, 認証失敗時にフラッシュ消去しない 32 31 33 32 ; ROM -
Property svn:mime-type
set to
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/start.asm
-
Property svn:mime-type
set to
text/plain; charset=shift_jis
r93 r95 6 6 ; Nagoya Municipal Industrial Research Institute, JAPAN 7 7 ; 8 ; ãLì ÒÍCÈºÌ (1)`(4) Ìðð½·êÉÀèC{\tgEF 9 ; Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏE 10 ; ÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 ; (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 ; \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[X 13 ; R[hÉÜÜêÄ¢é±ÆD 14 ; (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉgp 15 ; Å«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gipÒ} 17 ; j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺLÌ³Û 19 ; ØKèðfÚ·é±ÆD 20 ; (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉgp 21 ; Å«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±ÆD 22 ; (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌì 25 ; \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 26 ; (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉñ 27 ; ·é±ÆD 28 ; (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹Q 29 ; ©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆDܽC 30 ; {\tgEFAÌ[UܽÍGh[U©çÌ¢©ÈéRÉîà 31 ; ¿©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 ; 33 ; {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨æ 34 ; ÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚIÉη 35 ; éK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌp 36 ; Éæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCð 37 ; íÈ¢D 38 ; 39 ; 40 41 ; 42 ; X^[gAbv[` 43 ; vZbTÍS2RAC~fBAfðÎÛÆ·é 44 ; 45 46 ; 47 ; O[oV{ 48 ; 49 ; ZOgæªAhX(segment_s.asm) 8 ; 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 9 ; ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 10 ; 再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 ; (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 12 ; 表示,この利用条件および下記の無保証規定が,そのままの形でソース 13 ; コード中に含まれていること. 14 ; (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 15 ; できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 16 ; ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 17 ; 証規定を掲載すること. 18 ; (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 19 ; できない形で再配布する場合には,次のいずれかの条件を満たすこと. 20 ; (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 21 ; 権表示,この利用条件および下記の無保証規定を掲載すること. 22 ; (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 23 ; 告すること. 24 ; (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 25 ; からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 26 ; 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 27 ; く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 ; 29 ; 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 30 ; びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 31 ; る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 32 ; により直接的または間接的に生じたいかなる損害に関しても,その責任を負 33 ; わない. 34 ; 35 ; 36 37 ; 38 ; スタートアップルーチン 39 ; プロセッサはS2コア,ミディアムモデルを対象とする 40 ; 41 42 ; 43 ; グローバルシンボル 44 ; 45 ; セグメント先頭アドレス(segment_s.asm) 50 46 extrn _@R_INIT, _@R_INIS, _@RLINIT 51 47 extrn _@INIT, _@DATA, _@INIS, _@DATS, _@INITL, _@DATAL 52 48 53 ; ZOgöAhX(segment_e.asm)49 ; セグメント末尾アドレス(segment_e.asm) 54 50 extrn _?R_INIT, _?R_INIS, _?RLINIT 55 51 extrn _?INIT, _?DATA, _?INIS, _?DATS, _?INITL, _?DATAL 56 52 57 ; X^bN|C^Ìúl(kernel_cfg.c)53 ; スタックポインタの初期値(kernel_cfg.c) 58 54 extrn __kernel_istkpt 59 55 60 ; J[lJn(kernel/startup.c)56 ; カーネル開始処理(kernel/startup.c) 61 57 extrn _sta_ker 62 58 63 ; saddr ÌæÌæªAhXCTCYiJÅè`j59 ; saddr領域の先頭アドレス,サイズ(リンカで定義) 64 60 extrn _@SADBEG, _@SADSIZ 65 61 66 ; Gg|Cg62 ; エントリポイント 67 63 public _start 68 64 69 65 70 66 ; 71 ; èè`72 ; 73 ; MAA(PMC Ìrbg0): 0 ܽÍ174 ; 0 ÌêC00000H--0FFFFH ð F0000H--FFFFFHÖ~[75 ; 1 ÌêC10000H--1FFFFH ð F0000H--FFFFFHÖ~[67 ; 定数定義 68 ; 69 ; MAA(PMCのビット0): 0 または 1 70 ; 0の場合,00000H--0FFFFH を F0000H--FFFFFHへミラー 71 ; 1の場合,10000H--1FFFFH を F0000H--FFFFFHへミラー 76 72 INIT_MAA EQU 0 77 73 78 74 ; 79 ; }Nè`80 ; 81 ; ZOgÔÌf[^Rs[(farÌROM©çnearÌRAMÖCsrcÌTCYª)75 ; マクロ定義 76 ; 77 ; セグメント間のデータコピー(farのROMからnearのRAMへ,srcのサイズ分) 82 78 copy_seg macro src, dst 83 79 local _1, _2 … … 97 93 endm 98 94 99 ; ZOgÔÌf[^Rs[(farÌROM©çfarÌRAMÖCsrcÌTCYª)95 ; セグメント間のデータコピー(farのROMからfarのRAMへ,srcのサイズ分) 100 96 copy_fseg MACRO src, dst 101 97 local _1, _2 … … 116 112 endm 117 113 118 ; ZOgÌf[^NA(near RAM)114 ; セグメントのデータクリア(near RAM) 119 115 clear_seg MACRO dst 120 116 local _1, _2 … … 131 127 endm 132 128 133 ; ZOgÌf[^NA(far RAM)129 ; セグメントのデータクリア(far RAM) 134 130 clear_fseg MACRO dst 135 131 local _1, _2 … … 147 143 148 144 ; 149 ; VXeJn145 ; システム開始 150 146 ; 151 147 @@CODE CSEG BASE … … 153 149 154 150 ; 155 ; PSW ÌÝè156 ; 157 di ; ÝÖ~(ÝbNÌÝÖ~)158 sel rb0 ; WX^oN(RB0)159 160 ; 161 ; ~[ÌæÌÝè151 ; PSWの設定 152 ; 153 di ; 割込み禁止(割込みロック相当の割込み禁止) 154 sel rb0 ; レジスタバンク(RB0) 155 156 ; 157 ; ミラー領域の設定 162 158 ; 163 159 mov a, #INIT_MAA … … 166 162 167 163 ; 168 ; X^bN|C^ÌÝè164 ; スタックポインタの設定 169 165 ; 170 166 movw de, #__kernel_istkpt … … 174 170 175 171 ; 176 ; _hardware_init_hook ÌÄÑoµ(ൠêÎ)172 ; _hardware_init_hook の呼び出し(もしあれば) 177 173 ; 178 174 ;call !!_hardware_init_hook 179 175 180 176 ; 181 ; ú»177 ; メモリ初期化 182 178 ; 183 179 copy_seg R_INIS, INIS … … 189 185 clear_fseg DATAL 190 186 191 ; saddr ÌæÌú»187 ; saddr領域の初期化 192 188 mov b,#_@SADSIZ 193 189 clrw ax … … 199 195 200 196 ; 201 ; _sofrware_init_hook ÌÄÑoµ(ൠêÎ)197 ; _sofrware_init_hook の呼び出し(もしあれば) 202 198 ; 203 199 ;call !!_software_init_hook 204 200 205 201 ; 206 ; sta_ker (kernel/startup.c) ÌÄÑoµ202 ; sta_ker (kernel/startup.c) の呼び出し 207 203 ; 208 204 br !!_sta_ker -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.