Changeset 95 for ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc.tf
- Timestamp:
- Jun 2, 2015, 3:39:53 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc.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
Note:
See TracChangeset
for help on using the changeset viewer.