Ignore:
Timestamp:
Jun 2, 2015, 3:39:53 PM (9 years ago)
Author:
nmir-saito
Message:

ファイルの mime-type 変更

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
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc.tf

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    77$             Nagoya Municipal Industrial Research Institute, JAPAN
    88$
    9 $  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10 $  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    11 $  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12 $  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    13 $      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    14 $      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    16 $      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—pŽÒƒ}
    18 $      ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    20 $      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21 $  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    22 $      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    23 $    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    26 $        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27 $    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    28 $        ‚·‚邱‚ƁD
    29 $  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    30 $      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    31 $      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    32 $      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33 $
    34 $  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    35 $  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    36 $  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    37 $  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    38 $  ‚í‚È‚¢D
    39 $
    40 
    41 $
    42 $  ƒvƒƒZƒbƒTˆË‘¶ƒeƒ“ƒvƒŒ[ƒg
    43 $
    44 
    45 $
    46 $  ATT_ISR‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚Æ‚»‚ê‚ɑΉž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†
     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で使用できる割込み番号とそれに対応する割込みハンドラ番号
    4743$
    4844
     
    5147
    5248$
    53 $  DEF_INH^DEF_EXC‚ÅŽg—p‚Å‚«‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†^CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†
     49$  DEF_INH/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
    5450$
    5551
     
    5854
    5955$
    60 $  CFG_INT‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚ÆŠ„ž‚Ý—Dæ“x
     56$  CFG_INTで使用できる割込み番号と割込み優先度
    6157$
    6258
    6359$INTNO_CFGINT_VALID = INTNO_VALID$
    6460
    65 $ // INTPRI_CFGINT_VALID ‚̓vƒƒZƒbƒT‚ɃZƒbƒg‰Â”\‚È—Dæ“x‚Ì”ÍˆÍ‚ðŽ¦‚µC
    66 $ // ƒJ[ƒlƒ‹ŠÇ—(ŠO)‚©‚Ç‚¤‚©‚Ì‹æ•Ê‚ð‚µ‚Ä‚¢‚È‚¢D
    67 $ // ƒJ[ƒlƒ‹ŠÇ—‚ƂȂ銄ž‚Ý—Dæ“x‚͈̔͂ð•ÏX‚·‚éê‡C
    68 $ // TMIN_INTPRI (prc_kernel.h) ‚Ì’l‚ð•K—v‚ɉž‚¶‚ĕύX‚·‚éD
     61$ // INTPRI_CFGINT_VALID はプロセッサにセット可能な優先度の範囲を示し,
     62$ // カーネル管理(外)かどうかの区別をしていない.
     63$ // カーネル管理となる割込み優先度の範囲を変更する場合,
     64$ // TMIN_INTPRI (prc_kernel.h) の値を必要に応じて変更する.
    6965$INTPRI_CFGINT_VALID = { -4,-3,-2,-1 }$
    7066
    7167$
    72 ƒXƒ^ƒbƒNƒTƒCƒY‚̃`ƒFƒbƒN•û–@Žw’è
    73 $
    74 ƒAƒ‰ƒCƒƒ“ƒg‚ÉŠÖŒW‚È‚­“¯‚¶‘¬“x‚ŃAƒNƒZƒX‚Å‚«‚é
     68スタックサイズのチェック方法指定
     69$
     70アライメントに関係なく同じ速度でアクセスできる
    7571$
    7672
     
    7975
    8076$
    81 ’萔’è‹`
     77定数定義
    8278$
    8379$TA_POSEDGE = TA_EDGE$
    8480
    8581$
    86 $ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚Ý‘®«‚Ì’è‹`
     82$ ターゲット依存の割込み属性の定義
    8783$
    8884
     
    9086
    9187$
    92 •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     88標準テンプレートファイルのインクルード
    9389$
    9490$INCLUDE "kernel.tf"$
     
    9692
    9793$
    98 $   CFG_INT‚̃^[ƒQƒbƒgˆË‘¶‚̃Gƒ‰[ƒ`ƒFƒbƒN
     94$   CFG_INTのターゲット依存のエラーチェック
    9995$
    10096$
     
    10298
    10399$FOREACH intno INT.ORDER_LIST$
    104 $       // INTŠ„ž‚݂ɑ΂·‚銄ž‚ݔԍ†‚©‚Ç‚¤‚©
     100$       // INT割込みに対する割込み番号かどうか
    105101        $IF (LENGTH(FIND(INTNO_INT , INT.INTNO[intno])) != 0)$
    106 $               // TA_POSEDGE ‚Ü‚½‚Í TA_NEGEDGE ‚Ü‚½‚Í TA_BOTHEDGE ‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚È‚¢‚©‚Ç‚¤‚©
     102$               // TA_POSEDGE または TA_NEGEDGE または TA_BOTHEDGE が同時に設定されてないかどうか
    107103                $IF
    108104                (   ((INT.INTATR[intno] & (TA_POSEDGE|TA_NEGEDGE|TA_BOTHEDGE)) != (TA_POSEDGE))
     
    113109                $END$
    114110        $ELSE$
    115 $               // INTŠ„ž‚݈ȊO‚ÌŠ„ž‚݂ɑ΂µ‚Ä TA_ENAINT ‹y‚Ñ TA_EDGE ˆÈŠO‚ÌŠ„ž‚Ý‘®«‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚©‚Ç‚¤‚©
     111$               // INT割込み以外の割込みに対して TA_ENAINT 及び TA_EDGE 以外の割込み属性が指定されていないかどうか
    116112                $IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE)) != 0$
    117113                        $ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
     
    122118
    123119$
    124 $ Š„ž‚ݔԍ†‚©‚犄ž‚Ý—Dæ“x‚ðŽæ‚èo‚·ƒe[ƒuƒ‹
     120$ 割込み番号から割込み優先度を取り出すテーブル
    125121$
    126122
     
    141137
    142138$
    143 ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiƒAƒZƒ“ƒuƒ‰ŒÅ—L•”•ªj
    144 $
    145 
    146 $
    147 ƒAƒZƒ“ƒuƒ‰o—̓tƒ@ƒCƒ‹ (‹¤’Ê•”•ª)
     139アーキテクチャ依存テンプレート(アセンブラ固有部分)
     140$
     141
     142$
     143アセンブラ出力ファイル (共通部分)
    148144$
    149145
     
    151147
    152148;$NL$
    153 ;  RL78ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶o—̓tƒ@ƒCƒ‹$NL$
    154 ;$NL$
    155 Š„ž‚݃nƒ“ƒhƒ‰“üŒûˆ—‚Ì’è‹`$NL$
     149;  RL78アーキテクチャ依存出力ファイル$NL$
     150;$NL$
     151割込みハンドラ入口処理の定義$NL$
    156152;$NL$
    157153$NL$$NL$
     
    159155
    160156$
    161 Š„ž‚Ý“üŒûˆ—
    162 $
    163 
    164 $
    165 ƒOƒ[ƒoƒ‹ƒVƒ“ƒ{ƒ‹
     157割込み入口処理
     158$
     159
     160$
     161グローバルシンボル
    166162$
    167163
     
    169165$TAB$extrn __kernel_int_return$NL$$NL$
    170166
    171 $TAB$; ƒRƒ“ƒpƒCƒ‰‚ªŽg—p‚·‚é saddr—̈æ‚̃ŒƒWƒXƒ^$NL$
     167$TAB$; コンパイラが使用する saddr領域のレジスタ$NL$
    172168$TAB$extrn      _@RTARG0,_@RTARG2,_@RTARG4,_@RTARG6,_@SEGAX,_@SEGDE$NL$
    173169$TAB$extrn      _@NRARG0,_@NRARG1,_@NRARG2,_@NRARG3$NL$
     
    176172
    177173; $NL$
    178 ; ƒRƒ“ƒpƒCƒ‰‚ªŽg—p‚·‚ésaddr—̈æ‚Ì‘Þ”ð $NL$
     174; コンパイラが使用するsaddr領域の退避 $NL$
    179175; $NL$
    180176save_saddr_regs         macro$NL$
     
    191187        $TAB$movw       ax, _@SEGDE  $NL$
    192188        $TAB$push       ax           $NL$
    193         $TAB$$$if (ALLOC_REGVAR_TO_SADDR) ; -qr ƒIƒvƒVƒ‡ƒ“‚ðŽg—p‚·‚éê‡ $NL$
     189        $TAB$$$if (ALLOC_REGVAR_TO_SADDR) ; -qr オプションを使用する場合 $NL$
    194190        $TAB$movw       ax, _@NRARG0 $NL$
    195191        $TAB$push       ax           $NL$
     
    215211
    216212$
    217 Š„ž‚݃nƒ“ƒhƒ‰“üŒûˆ—
     213割込みハンドラ入口処理
    218214$
    219215
     
    223219                $TAB$public     __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry  $NL$
    224220                __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry:                         $NL$
    225                 $TAB$push       ax       ; ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
     221                $TAB$push       ax       ; レジスタをタスクスタックへ退避 $NL$
    226222                $TAB$push       bc $NL$
    227223                $TAB$push       de $NL$
    228224                $TAB$push       hl $NL$
    229                 $TAB$mov        a,es            ; ES, CS ‚Ì‘Þ”ð $NL$
     225                $TAB$mov        a,es            ; ES, CS の退避 $NL$
    230226                $TAB$mov        x,a  $NL$
    231227                $TAB$mov        a,cs $NL$
    232228                $TAB$push       ax   $NL$
    233229                $TAB$save_saddr_regs$NL$
    234                 $TAB$movw       bc, #_$INH.INTHDR[inhno]$ ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ð bc ‚Ö $NL$
     230                $TAB$movw       bc, #_$INH.INTHDR[inhno]$ ; ハンドラのアドレスを bc へ $NL$
    235231
    236232                $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
    237                         $TAB$br         __kernel_interrupt_entry        ; ‹¤’Ê‚Ì“üŒûˆ—‚Ö $NL$
     233                        $TAB$br         __kernel_interrupt_entry        ; 共通の入口処理へ $NL$
    238234                        $NL$$NL$
    239235                $ELSE$
    240                         $TAB$;ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݂̏ꍇCƒnƒ“ƒhƒ‰ŽÀs‚µ‚Ä‚»‚̂܂܃Šƒ^[ƒ“ $NL$
    241                         $TAB$call       bc                              ; Š„ž‚݃nƒ“ƒhƒ‰ŒÄ‚яo‚µ$NL$
    242                         $TAB$br         __kernel_int_return             ; ƒŒƒWƒXƒ^•œ‹A & Š„ž‚Ý‚©‚烊ƒ^[ƒ“(prc_support.asm) $NL$
     236                        $TAB$;カーネル管理外の割込みの場合,ハンドラ実行してそのままリターン $NL$
     237                        $TAB$call       bc                              ; 割込みハンドラ呼び出し$NL$
     238                        $TAB$br         __kernel_int_return             ; レジスタ復帰 & 割込みからリターン(prc_support.asm) $NL$
    243239                $END$
    244240        $END$
     
    247243
    248244$
    249 $  CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
     245$  CPU例外ハンドラ入口処理
    250246$
    251247
     
    255251                $TAB$public     __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry  $NL$
    256252                __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry:                         $NL$
    257                 $TAB$push       ax              ; ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
     253                $TAB$push       ax              ; レジスタをタスクスタックへ退避 $NL$
    258254                $TAB$push       bc $NL$
    259255                $TAB$push       de $NL$
    260256                $TAB$push       hl $NL$
    261                 $TAB$mov        a,es            ; ES, CS ‚Ì‘Þ”ð $NL$
     257                $TAB$mov        a,es            ; ES, CS の退避 $NL$
    262258                $TAB$mov        x,a  $NL$
    263259                $TAB$mov        a,cs $NL$
    264260                $TAB$push       ax   $NL$
    265261                $TAB$save_saddr_regs $NL$
    266                 $TAB$movw       ax, sp          ; SP(ƒnƒ“ƒhƒ‰‚̈ø”‚Æ‚È‚é)‚ð ax ‚Ö $NL$
    267                 $TAB$movw       bc, #_$EXC.EXCHDR[excno]$ ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ð 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$
    269265                $NL$$NL$
    270266        $END$
     
    273269
    274270$
    275 ƒxƒNƒ^ƒe[ƒuƒ‹
    276 $
    277 
    278 ;$NL$
    279 ƒxƒNƒ^ƒe[ƒuƒ‹$NL$
     271ベクタテーブル
     272$
     273
     274;$NL$
     275ベクタテーブル$NL$
    280276;$NL$
    281277$NL$
     
    308304
    309305$
    310 $  prc_support.asm —pƒ}ƒNƒ’è‹`ƒtƒ@ƒCƒ‹
     306$  prc_support.asm 用マクロ定義ファイル
    311307$
    312308
  • 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  
    11/*
    2  *              cfg1_out.c‚̃Šƒ“ƒN‚É•K—v‚ȃXƒ^ƒu‚Ì’è‹`
     2 *              cfg1_out.cのリンクに必要なスタブの定義
    33 */
    44
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_config.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *             Nagoya Municipal Industrial Research Institute, JAPAN
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚Ɓ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プロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    48 [ƒ‹iRL78j
     43 *              プロセッサ依存モジュール(RL78)
    4944 */
    5045#pragma EI
     
    5348
    5449/*
    55  *  Š„ž‚Ý”­¶‰ñ”‚ð•Û‘¶‚·‚é•Ï”
     50 *  割込み発生回数を保存する変数
    5651 */
    5752uint8_t intnest;
     
    5954
    6055/*
    61  *  (1) ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ‚·‚é’è‹`
    62  */
    63 
    64 
    65 /*
    66  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
     56 *  (1) コンテキストに関する定義
     57 */
     58
     59
     60/*
     61 *  コンテキストの参照
    6762 */
    6863bool_t
    6964sense_context(void)
    7065{
    71         /*  ƒlƒXƒgƒJƒEƒ“ƒ^0‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg  */
     66        /*  ネストカウンタ0より大なら非タスクコンテキスト  */
    7267        return (intnest > 0);
    7368}
     
    7570
    7671/*
    77  *  (2) ƒVƒXƒeƒ€ó‘Ô‚ÉŠÖ‚·‚é’è‹`
    78  */
    79 
    80 /*
    81  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”
    82  */
    83 bool_t          lock_flag;              /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l‚ð•ÛŽ‚·‚é•Ï” */
     72 *  (2) システム状態に関する定義
     73 */
     74
     75/*
     76 *  CPUロックフラグ実現のための変数
     77 */
     78bool_t          lock_flag;              /* CPUロックフラグの値を保持する変数 */
    8479#if TMIN_INTPRI != -4
    85 uint8_t         saved_psw;              /* Š„ž‚Ý—Dæ“xƒŒƒxƒ‹‚ð•Û‘¶‚·‚é•Ï” */
     80uint8_t         saved_psw;              /* 割込み優先度レベルを保存する変数 */
    8681#endif
    8782
    8883/*
    89  *  CPU ƒƒbƒNó‘Ԃւ̈ڍs
    90  *      ‚±‚̊֐”‚́CCPU ƒƒbƒNó‘Ô‚Ì‚Æ‚«‚ɌĂт¾‚³‚ê‚È‚¢‚±‚Æ‚ð‘O’ñ‚Æ‚·‚éD
     84 *  CPU ロック状態への移行
     85 *      この関数は,CPU ロック状態のときに呼びだされないことを前提とする.
    9186 */
    9287void
     
    9691        DI();
    9792#else
    98         /* ƒ^ƒXƒN‚Å‚ÍŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚Ì’l‚Í 0 ‚Ì‚Í‚¸‚È‚Ì‚Å•Û‘¶‚·‚é•K—v‚ª‚È‚¢ */
     93        /* タスクでは割込み優先度マスクの値は 0 のはずなので保存する必要がない */
    9994        set_psw(PSW_SET_ISP(get_psw(), ISP_LOCK));
    10095#endif
     
    111106
    112107        /*
    113          *  get_psw() ‚Ì•Ô‚è’l‚ð’¼Ú saved_isp ‚É•Û‘¶‚¹‚¸CˆêŽž•Ï”
    114          *  psw ‚Ö•Û‘¶‚·‚é‚̂́Cget_psw() ‚̌Ăт¾‚µ’¼Œã‚ÉŠ„ž‚Ý‚ª”­¶‚µC
    115          *  ‹N“®‚³‚ꂽŠ„ž‚ݏˆ—‚Å saved_isp ‚ª•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚邽‚߁D
     108         *  get_psw() の返り値を直接 saved_isp に保存せず,一時変数
     109         *  psw へ保存するのは,get_psw() の呼びだし直後に割込みが発生し,
     110         *  起動された割込み処理で saved_isp が変更される可能性があるため.
    116111         */
    117112        psw = get_psw();
     
    125120
    126121/*
    127  *  CPUƒƒbƒNó‘Ԃ̉ðœ
    128  *      ‚±‚̊֐”‚́CCPU ƒƒbƒNó‘Ô‚Ì‚Æ‚«‚ɂ̂݌Ăт¾‚³‚ê‚邱‚Æ‚ð‘O’ñ‚Æ‚·‚éD
     122 *  CPUロック状態の解除
     123 *      この関数は,CPU ロック状態のときにのみ呼びだされることを前提とする.
    129124 */
    130125void
     
    135130        EI();
    136131#else
    137         /* ƒ^ƒXƒNŽÀsŽž‚ÍŠ„ž‚݃}ƒXƒN‘S‰ðœó‘Ô‚Ì‚Í‚¸‚Ȃ̂ŁC‘S‰ðœ‚É‚µ‚Ä‚¨‚­ */
     132        /* タスク実行時は割込みマスク全解除状態のはずなので,全解除にしておく */
    138133        set_psw(PSW_SET_ISP(get_psw(), ISP_ENAALL));
    139134#endif
     
    152147
    153148/*
    154  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     149 *  CPUロック状態の参照
    155150 */
    156151bool_t
     
    161156
    162157/*
    163  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN(IPM) ‚̐ݒè
    164  *    Žw’肵‚½Š„ž‚Ý—Dæ“x(-1, -2, ..., TMIN_INTPRI) ‚ðŒ³‚É
    165  *    ƒvƒƒZƒbƒT‚ÌŠ„ž‚Ý—Dæ“xƒŒƒxƒ‹ (IPL) ‚ðÝ’è‚·‚éD
     158 *  割込み優先度マスク(IPM) の設定
     159 *    指定した割込み優先度(-1, -2, ..., TMIN_INTPRI) を元に
     160 *    プロセッサの割込み優先度レベル (IPL) を設定する.
    166161 */
    167162void
     
    180175
    181176/*
    182  *  (7) dispacher ‚Å‚ÌŠ„ž‚Ý‘Ò‚¿
     177 *  (7) dispacher での割込み待ち
    183178 */
    184179void
     
    191186
    192187/*
    193  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     188 *  プロセッサ依存の初期化
    194189 */
    195190void
     
    199194
    200195/*
    201  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹ˆ—
     196 *  プロセッサ依存の終了処理
    202197 */
    203198void
    204199prc_terminate(void)
    205200{
    206         /* “Á‚É•K—v‚ȏˆ—‚Í‚È‚¢ */
    207 }
    208 
    209 /*
    210  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃Zƒbƒg
     201        /* 特に必要な処理はない */
     202}
     203
     204/*
     205 *  割込み要求禁止フラグのセット
    211206 */
    212207bool_t
     
    215210        volatile uint8_t *reg_addr;
    216211       
    217         /* ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢ */
     212        /* レベル定義が0である場合はCFG_INTされていない */
    218213        if(intpri_table[intno] == 0U)
    219214        {
    220215                return (false);
    221216        }
    222         // Š„ž‚݃}ƒXƒNEƒtƒ‰ƒOEƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð1‚ɃZƒbƒg
     217        // 割込みマスク・フラグ・レジスタの該当ビットを1にセット
    223218        if(intno < 32) {
    224219                reg_addr = (volatile uint8_t *)TADR_MK0L;
     
    235230
    236231/*
    237  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃NƒŠƒA
     232 *  割込み要求禁止フラグのクリア
    238233 */
    239234bool_t
     
    242237        volatile uint8_t *reg_addr;
    243238
    244         /* ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢ */
     239        /* レベル定義が0である場合はCFG_INTされていない */
    245240        if(intpri_table[intno] == 0u)
    246241        {
    247242                return (false);
    248243        }
    249         // Š„ž‚݃}ƒXƒNEƒtƒ‰ƒOEƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð0‚ɃZƒbƒg
     244        // 割込みマスク・フラグ・レジスタの該当ビットを0にセット
    250245        if(intno < 32) {
    251246                reg_addr = (volatile uint8_t *)TADR_MK0L;
     
    262257
    263258/*
    264  *  Š„ž‚Ý—v‹‚̃NƒŠƒA
     259 *  割込み要求のクリア
    265260 */
    266261void
     
    269264        volatile uint8_t *reg_addr;
    270265
    271         // Š„ž‚Ý—v‹ƒtƒ‰ƒOEƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð0‚ɃZƒbƒg
     266        // 割込み要求フラグ・レジスタの該当ビットを0にセット
    272267        if(intno < 32) {
    273268                reg_addr = (volatile uint8_t *)TADR_IF0L;
     
    282277
    283278/*
    284  *  Š„ž‚Ý—v‹‚̃`ƒFƒbƒN
     279 *  割込み要求のチェック
    285280 */
    286281bool_t
     
    289284        volatile uint8_t *reg_addr;
    290285
    291         // Š„ž‚Ý—v‹ƒtƒ‰ƒOEƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ª 1 ‚È‚ç true
     286        // 割込み要求フラグ・レジスタの該当ビットが 1 なら true
    292287        if(intno < 32) {
    293288                reg_addr = (volatile uint8_t *)TADR_IF0L;
     
    303298
    304299/*
    305  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè
     300 *  割込み要求ラインの属性の設定
    306301 */
    307302void
     
    315310
    316311        /*
    317          *  Š„ž‚݂̃}ƒXƒN
     312         *  割込みのマスク
    318313         *
    319          *  Š„ž‚Ý‚ðŽó‚¯•t‚¯‚½‚܂܁CƒŒƒxƒ‹ƒgƒŠƒK^ƒGƒbƒWƒgƒŠƒK‚̐ݒè‚âCŠ„
    320          *  ž‚Ý—Dæ“x‚̐ݒè‚ðs‚¤‚̂͊댯‚È‚½‚߁CŠ„ž‚Ý‘®«‚É‚©‚©‚í‚炸C
    321          *  ˆê’Uƒ}ƒXƒN‚·‚éD
     314         *  割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割
     315         *  込み優先度の設定を行うのは危険なため,割込み属性にかかわらず,
     316         *  一旦マスクする.
    322317         */
    323318        (void) x_disable_int(intno);
    324319
    325320        /*
    326          * —Dæ“x‚̐ݒè
     321         * 優先度の設定
    327322         */
    328         // —Dæ‡ˆÊŽw’èƒtƒ‰ƒOEƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚É’l‚ðƒZƒbƒg
     323        // 優先順位指定フラグ・レジスタの該当ビットに値をセット
    329324        if(intno < 32) {
    330325                reg_addr = (volatile uint8_t *)TADR_PR00L;
     
    335330                reg_addr += ((intno-32) / 8);
    336331        }
    337         // —Dæ‡ˆÊƒŒƒxƒ‹‚̐ݒè(’áˆÊƒrƒbƒg)
     332        // 優先順位レベルの設定(低位ビット)
    338333        if((IPM2ILVL(intpri) & 0x01) != 0) {
    339334                *reg_addr |= (uint8_t)(1 << (intno % 8));
     
    342337                *reg_addr &= (uint8_t)~(1 << (intno % 8));
    343338        }
    344         // —Dæ‡ˆÊƒŒƒxƒ‹‚̐ݒè(‚ˆÊƒrƒbƒg)
     339        // 優先順位レベルの設定(高位ビット)
    345340        if((IPM2ILVL(intpri) & 0x02) != 0) {
    346341                *(reg_addr+4) |= (uint8_t)(1 << (intno % 8));
     
    351346       
    352347        /*
    353          * ƒgƒŠƒK‚̐ݒè
     348         * トリガの設定
    354349         */
    355350        if(intno <= 7) {
     
    362357        }
    363358       
    364         /* INT’[Žq‚̏ꍇ‚ÍŠ„ž‚ÝŒŸ’m•û–@‚ðÝ’è‚·‚é */
     359        /* INT端子の場合は割込み検知方法を設定する */
    365360        if((intatr & TA_POSEDGE) != 0U)
    366361        {
    367                 // ŠO•”Š„ž‚Ý—§‚¿ã‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð1‚ɃZƒbƒg
     362                // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを1にセット
    368363                *reg_addr |= (uint8_t)(1 << (portno % 8));
    369                 // ŠO•”Š„ž‚Ý—§‚¿‰º‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð0‚ɃZƒbƒg
     364                // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを0にセット
    370365                *(reg_addr+1) &= (uint8_t)~(1 << (portno % 8));
    371366        }
    372367        else if((intatr & TA_NEGEDGE) != 0U)
    373368        {
    374                 // ŠO•”Š„ž‚Ý—§‚¿ã‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð0‚ɃZƒbƒg
     369                // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを0にセット
    375370                *reg_addr &= (uint8_t)~(1 << (portno % 8));
    376                 // ŠO•”Š„ž‚Ý—§‚¿‰º‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð1‚ɃZƒbƒg
     371                // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを1にセット
    377372                *(reg_addr+1) |= (uint8_t)(1 << (portno % 8));
    378373        }
    379374        else if((intatr & TA_BOTHEDGE) != 0U)
    380375        {
    381                 // ŠO•”Š„ž‚Ý—§‚¿ã‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð1‚ɃZƒbƒg
     376                // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを1にセット
    382377                *reg_addr |= (uint8_t)(1 << (portno % 8));
    383                 // ŠO•”Š„ž‚Ý—§‚¿‰º‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð1‚ɃZƒbƒg
     378                // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを1にセット
    384379                *(reg_addr+1) |= (uint8_t)(1 << (portno % 8));
    385380        }
    386         else {  // ‚Ç‚¿‚ç‚Å‚à‚È‚¢ê‡‚̓GƒbƒWŒŸo‚ð‹ÖŽ~
    387                 // ŠO•”Š„ž‚Ý—§‚¿ã‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð0‚ɃZƒbƒg
     381        else {  // どちらでもない場合はエッジ検出を禁止
     382                // 外部割込み立ち上がりエッジ許可レジスタの該当ビットを0にセット
    388383                *reg_addr &= (uint8_t)~(1 << (portno % 8));
    389                 // ŠO•”Š„ž‚Ý—§‚¿‰º‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^‚ÌŠY“–ƒrƒbƒg‚ð0‚ɃZƒbƒg
     384                // 外部割込み立ち下がりエッジ許可レジスタの該当ビットを0にセット
    390385                *(reg_addr+1) &= (uint8_t)~(1 << (portno % 8));
    391386        }
    392387
    393388        /*
    394          *  Š„ž‚݂̃}ƒXƒN‰ðœ(—Dæ“xÝ’è)
     389         *  割込みのマスク解除(優先度設定)
    395390         */
    396391        if ((intatr & TA_ENAINT) != 0U) {
     
    400395
    401396/*
    402  *  NMI‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý‚Ì‹ÖŽ~
     397 *  NMIを除くすべての割込みの禁止
    403398 */
    404399uint8_t
     
    413408
    414409/*
    415  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒNi“à•”•\Œ»j‚ÌŒ»Ý’l‚̐ݒè
     410 *  割込み優先度マスク(内部表現)の現在値の設定
    416411 */
    417412void
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_config.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    1111 *             Nagoya Municipal Industrial Research Institute, JAPAN
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    15  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    17  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    18  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—pŽÒƒ}
    22  *      ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    24  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    26  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    27  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    28 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    29 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    30  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    31  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    32  *        ‚·‚邱‚ƁD
    33  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    34  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    35  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    36  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚Ɓ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プロジェクトを免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    39  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    40  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    41  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    42  *  ‚í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     35 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     36 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     37 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     38 *  わない.
    4339 *
    4440 */
    4541
    4642/*
    47  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    48 [ƒ‹iRL78j
    49  *
    50  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́C"<ƒvƒƒZƒbƒTŒ^”Ô>_config.h" ‚Ì‚Ý‚©‚ç
    51  *  ƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     43 *              プロセッサ依存モジュール(RL78)
     44 *
     45 *  このインクルードファイルは,"<プロセッサ型番>_config.h" のみから
     46 *  インクルードされる.他のファイルから直接インクルードしてはならない.
    5247 */
    5348
     
    5651
    5752/*
    58  *  (1) ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ‚·‚é’è‹`
    59  */
    60 
    61 /* ‹¤—LƒXƒ^ƒbƒN—̈æ‚Ì‚½‚߂̃Xƒ^ƒbƒNƒ|ƒCƒ“ƒ^‰Šú’l‚𐶐¬‚·‚éƒ}ƒNƒ */
     53 *  (1) コンテキストに関する定義
     54 */
     55
     56/* 共有スタック領域のためのスタックポインタ初期値を生成するマクロ */
    6257#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
    6358
    6459/*
    65  *  (2) ƒVƒXƒeƒ€ó‘Ô‚ÉŠÖ‚·‚é’è‹`
    66  */
    67 
    68 /*
    69  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN(IPM)‚Ì’l
    70  *    TIPM_LOCK‚́CCPUƒƒbƒNó‘Ô‚ð•\Œ»‚·‚銄ž‚Ý—Dæ“xƒ}ƒXƒN(IPM)‚Ì’l‚ðŽ¦‚·D
    71  *    ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚݂ɑ΂·‚銄ž‚Ý—Dæ“x‚̍ŏ¬’l(TMIN_INTPRI)‚É“™‚µ‚¢D
     60 *  (2) システム状態に関する定義
     61 */
     62
     63/*
     64 *  CPUロック状態での割込み優先度マスク(IPM)の値
     65 *    TIPM_LOCKは,CPUロック状態を表現する割込み優先度マスク(IPM)の値を示す.
     66 *    カーネル管理の割込みに対する割込み優先度の最小値(TMIN_INTPRI)に等しい.
    7267 */
    7368#ifndef TIPM_LOCK
     
    7671
    7772/*
    78  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN(IPM) ‚ƃvƒƒZƒbƒT‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN(ISP) ‚Ì•ÏŠ·
    79  *
    80  *  RL78 ‚ł́CPSWƒŒƒWƒXƒ^‚̉ºˆÊ‚©‚琔‚¦‚ărƒbƒg1‚¨‚æ‚Ñ 2 ‚Ì 2 ƒrƒbƒg‚É
    81  *  ƒCƒ“ƒT[ƒrƒXEƒvƒ‰ƒCƒIƒŠƒeƒBEƒtƒ‰ƒO(ISP) ‚Ì’l‚ªŠi”[‚³‚ê‚éD
    82  *
    83  *  ƒJ[ƒlƒ‹‚ÌŠÇ—‚·‚éIPM (-1‚©‚ç˜A‘±‚µ‚½•‰‚Ì’l) ‚ðŽg‚Á‚Ä
    84  *  ƒvƒƒZƒbƒT‚Ì ISP ‚𐧌䂷‚邽‚ß‚É•ÏŠ·‚ª•K—v‚Æ‚È‚éD
    85  *
    86  *  Žw’肵‚½ƒŒƒxƒ‹ˆÈ‰º‚ÌŠ„ž‚Ý‚ðƒ}ƒXƒN‚·‚éê‡‚́CISP‚̐ݒè’l‚ð
    87  *  –Ú“I‚̃Œƒxƒ‹‚æ‚èˆê‚‚‚¢—Dæ“x(’l‚Æ‚µ‚Ă͏¬‚³‚¢)’l‚É‚·‚é•K—v‚ª‚ ‚éD
     73 *  割込み優先度マスク(IPM) とプロセッサの割込み優先度マスク(ISP) の変換
     74 *
     75 *  RL78 では,PSWレジスタの下位から数えてビット1および 2 の 2 ビットに
     76 *  インサービス・プライオリティ・フラグ(ISP) の値が格納される.
     77 *
     78 *  カーネルの管理するIPM (-1から連続した負の値) を使って
     79 *  プロセッサの ISP を制御するために変換が必要となる.
     80 *
     81 *  指定したレベル以下の割込みをマスクする場合は,ISPの設定値を
     82 *  目的のレベルより一つ高い優先度(値としては小さい)値にする必要がある.
    8883 */
    8984#define IPM2ISP(ipm)    (((uint8_t)(4-1+(ipm))) << 1U)  /* IPM-->ISP(ipm=-3,-2,-1,0) */
     
    9287
    9388/*
    94  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚Ì“Á•Ê‚È’l‚ɑ΂·‚é“à•”•\Œ»
    95  */
    96 #define ISP_LOCK        (IPM2ISP(TIPM_LOCK))    /* CPUƒƒbƒNó‘Ô‚Å‚Ì ISP */
    97 #define ISP_ENAALL      (IPM2ISP(TIPM_ENAALL))  /* TIPM_ENAALL ‚Å‚Ì ISP */
    98 
    99 
    100 
    101 /*
    102  *  (3) Š„ž‚ݏˆ—ƒ‚ƒfƒ‹(Š„ž‚Ý—v‹ƒ‰ƒCƒ“)
    103  */
    104 
    105 /*
    106  * intno‚ªCdis_int^ena_int‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Ä
    107  * —LŒø‚È’l‚Å‚ ‚éê‡‚ÉtrueC‚»‚¤‚Å‚È‚¢ê‡‚Éfalse‚ð•Ô‚·ƒ}ƒNƒ
     89 *  割込み優先度マスクの特別な値に対する内部表現
     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を返すマクロ
    108103 */
    109104#define VALID_INTNO_DISINT(intno)       VALID_INTNO(intno)
     
    111106
    112107/*
    113  *  IPM ‚©‚犄ž‚ݐ§ŒäƒŒƒWƒXƒ^‚Å‚Ì•\Œ»‚É•ÏŠ·‚·‚éƒ}ƒNƒ
     108 *  IPM から割込み制御レジスタでの表現に変換するマクロ
    114109 */
    115110#define IPM2ILVL(ipm)   ((ipm)+4)       // ipm=-1,-2,-3,-4
     
    117112
    118113/*
    119  *  (4) Š„ž‚ݏˆ—ƒ‚ƒfƒ‹(Š„ž‚݃nƒ“ƒhƒ‰)
    120  */
    121 
    122 /*
    123  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     114 *  (4) 割込み処理モデル(割込みハンドラ)
     115 */
     116
     117/*
     118 *  割込みハンドラの入口処理の生成マクロ
    124119 */
    125120#define _INT_ENTRY(inhno, inthdr)                               _kernel_##inthdr##_##inhno##_entry
     
    131126
    132127/*
    133  *  (5) CPU—áŠOˆ—ƒ‚ƒfƒ‹
    134  */
    135 
    136 /*
    137  *  CPU—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     128 *  (5) CPU例外処理モデル
     129 */
     130
     131/*
     132 *  CPU例外ハンドラの入口処理の生成マクロ
    138133 */
    139134#define _EXC_ENTRY(excno , exchdr)      _kernel_##exchdr##_##excno##_entry
     
    145140
    146141/*
    147  *  (6) ‰Šú‰»EI—¹ˆ—
    148  */
    149 
    150 // ’è‹`‚È‚µ
     142 *  (6) 初期化・終了処理
     143 */
     144
     145// 定義なし
    151146
    152147#ifndef TOPPERS_MACRO_ONLY
    153148
    154149/*
    155  *  (1) ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ‚·‚é’è‹`
    156  */
    157 
    158 /*
    159  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
     150 *  (1) コンテキストに関する定義
     151 */
     152
     153/*
     154 *  コンテキストの参照
    160155 */
    161156extern bool_t sense_context(void);
    162157
    163158/*
    164  *  (2) ƒVƒXƒeƒ€ó‘Ô‚ÉŠÖ‚·‚é’è‹`
    165  */
    166 
    167 /*
    168  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ” (prc_config.c)
    169  */
    170 extern bool_t   lock_flag;      /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l */
    171 extern uint8_t  saved_psw;      /* CPUƒƒbƒNó‘Ԉڍs‘O‚ÌŠ„ž‚Ý—Dæ“xƒŒƒxƒ‹ */
    172 
    173 /*
    174  *  CPU ƒƒbƒNó‘Ԃւ̈ڍs
    175  *      ‚±‚̊֐”‚́CCPU ƒƒbƒNó‘Ô‚Ì‚Æ‚«‚ɌĂт¾‚³‚ê‚È‚¢‚±‚Æ‚ð‘O’ñ‚Æ‚·‚éD
     159 *  (2) システム状態に関する定義
     160 */
     161
     162/*
     163 *  CPUロックフラグ実現のための変数 (prc_config.c)
     164 */
     165extern bool_t   lock_flag;      /* CPUロックフラグの値 */
     166extern uint8_t  saved_psw;      /* CPUロック状態移行前の割込み優先度レベル */
     167
     168/*
     169 *  CPU ロック状態への移行
     170 *      この関数は,CPU ロック状態のときに呼びだされないことを前提とする.
    176171 */
    177172extern void t_lock_cpu(void);
     
    179174
    180175/*
    181  *  CPUƒƒbƒNó‘Ԃ̉ðœ
    182  *      ‚±‚̊֐”‚́CCPU ƒƒbƒNó‘Ô‚Ì‚Æ‚«‚ɂ̂݌Ăт¾‚³‚ê‚邱‚Æ‚ð‘O’ñ‚Æ‚·‚éD
     176 *  CPUロック状態の解除
     177 *      この関数は,CPU ロック状態のときにのみ呼びだされることを前提とする.
    183178 */
    184179extern void t_unlock_cpu(void);
     
    187182
    188183/*
    189  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     184 *  CPUロック状態の参照
    190185 */
    191186extern bool_t x_sense_lock(void);
     
    195190
    196191/*
    197  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN(IPM) ‚̐ݒè
    198  *    Žw’肵‚½Š„ž‚Ý—Dæ“x(-1, -2, ..., TMIN_INTPRI) ‚ðŒ³‚É
    199  *    ƒvƒƒZƒbƒT‚ÌŠ„ž‚Ý—Dæ“xƒŒƒxƒ‹ (IPL) ‚ðÝ’è‚·‚éD
     192 *  割込み優先度マスク(IPM) の設定
     193 *    指定した割込み優先度(-1, -2, ..., TMIN_INTPRI) を元に
     194 *    プロセッサの割込み優先度レベル (IPL) を設定する.
    200195 */
    201196extern void x_set_ipm(PRI intpri);
     
    210205
    211206/*
    212  *  (3) Š„ž‚ݏˆ—ƒ‚ƒfƒ‹(Š„ž‚Ý—v‹ƒ‰ƒCƒ“)
    213  */
    214 
    215 /*
    216  *  Š„ž‚Ý—vˆö–ˆ‚̃Œƒxƒ‹’è‹`ƒe[ƒuƒ‹ (kernel_cfg.c ‚É‚æ‚éo—Í)
    217  *    Š„ž‚ݔԍ†(INTNO) ‚©‚犄ž‚Ý—Dæ“x‚ðŽæ“¾‚·‚邽‚ß‚ÉŽg—pD
     207 *  (3) 割込み処理モデル(割込み要求ライン)
     208 */
     209
     210/*
     211 *  割込み要因毎のレベル定義テーブル (kernel_cfg.c による出力)
     212 *    割込み番号(INTNO) から割込み優先度を取得するために使用.
    218213 */
    219214extern const PRI intpri_table[];
    220215
    221216/*
    222  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃Zƒbƒg(prc_config.c)
    223  *    Žw’肵‚½Š„ž‚ݔԍ†‚ɑΉž‚·‚銄ž‚Ý—v‹ƒ‰ƒCƒ“‚ÌŠ„ž‚Ý—v‹ƒtƒ‰ƒO‚ðƒZƒbƒg‚·‚éD
    224  *    Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ÌŠ„ž‚ݔԍ†‚ðŽw’肵‚½
    225  *    ê‡‚́C’P‚É FALSE ‚ð•Ô‚·D
     217 *  割込み要求禁止フラグのセット(prc_config.c)
     218 *    指定した割込み番号に対応する割込み要求ラインの割込み要求フラグをセットする.
     219 *    割込み属性が設定されていない割込み要求ラインの割込み番号を指定した
     220 *    場合は,単に FALSE を返す.
    226221 */
    227222extern bool_t x_disable_int(INTNO intno);
     
    231226
    232227/*
    233  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃NƒŠƒA(prc_config.c)
    234  *    Žw’肵‚½Š„ž‚ݔԍ†‚ɑΉž‚·‚銄ž‚Ý—v‹ƒ‰ƒCƒ“‚ÌŠ„ž‚Ý—v‹ƒtƒ‰ƒO‚ðƒNƒŠƒA‚·‚éD
    235  *    Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ÌŠ„ž‚ݔԍ†‚ðŽw’肵‚½
    236  *    ê‡‚́C’P‚É FALSE ‚ð•Ô‚·D
     228 *  割込み要求禁止フラグのクリア(prc_config.c)
     229 *    指定した割込み番号に対応する割込み要求ラインの割込み要求フラグをクリアする.
     230 *    割込み属性が設定されていない割込み要求ラインの割込み番号を指定した
     231 *    場合は,単に FALSE を返す.
    237232 */
    238233extern bool_t x_enable_int(INTNO intno);
     
    243238
    244239/*
    245  *  Š„ž‚Ý—v‹‚̃NƒŠƒA(prc_config.c)
     240 *  割込み要求のクリア(prc_config.c)
    246241 */
    247242extern void x_clear_int(INTNO intno);
     
    252247
    253248/*
    254  *  Š„ž‚Ý—v‹‚̃`ƒFƒbƒN(prc_config.c)
     249 *  割込み要求のチェック(prc_config.c)
    255250 */
    256251extern bool_t x_probe_int(INTNO intno);
     
    260255
    261256/*
    262  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè (prc_config.c)
     257 *  割込み要求ラインの属性の設定 (prc_config.c)
    263258 */
    264259extern void     x_config_int(INTNO intno, ATR intatr, PRI intpri);
    265260
    266261/*
    267  *  (4) Š„ž‚ݏˆ—ƒ‚ƒfƒ‹(Š„ž‚݃nƒ“ƒhƒ‰)
    268  */
    269 
    270 /*
    271  *  Š„ž‚݃nƒ“ƒhƒ‰‚̐ݒè
    272  *
    273  *  RL78‚ÍROM‚ÉŠ„ž‚݃xƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹ó‚É’è‹`‚·‚éD
     262 *  (4) 割込み処理モデル(割込みハンドラ)
     263 */
     264
     265/*
     266 *  割込みハンドラの設定
     267 *
     268 *  RL78はROMに割込みベクタを配置するため,本関数は空に定義する.
    274269 */
    275270#define x_define_inh(inhno, inthdr)
    276271
    277272/*
    278  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒû‚Å•K—v‚ȏˆ—
    279  */
    280 #define i_begin_int(intno)              /* “Á‚ɍs‚¤‚ׂ«ˆ—‚Í‚È‚¢ */
    281 
    282 /*
    283  *  Š„ž‚݃nƒ“ƒhƒ‰‚̏oŒû‚Å•K—v‚ȏˆ—
    284  */
    285 #define i_end_int(intno)                /* “Á‚ɍs‚¤‚ׂ«ˆ—‚Í‚È‚¢ */
    286 
    287 /*
    288  *  (5) CPU—áŠOˆ—ƒ‚ƒfƒ‹
    289  */
    290 
    291 /*
    292  *  CPU—áŠOƒnƒ“ƒhƒ‰‚̐ݒè
    293  *    RL78 ‚Í ROM ‚ɃxƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹ó‚É’è‹`‚·‚éD
     273 *  割込みハンドラの入口で必要な処理
     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 にベクタを配置するため,本関数は空に定義する.
    294289 */
    295290#define x_define_exc(excno, exchdr)
    296291
    297292/*
    298  *  (6) ‰Šú‰»EI—¹ˆ—
    299  */
    300 
    301 /*
    302  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»(prc_config.c)
     293 *  (6) 初期化・終了処理
     294 */
     295
     296/*
     297 *  プロセッサ依存の初期化(prc_config.c)
    303298 */
    304299extern void     prc_initialize(void);
    305300
    306301/*
    307  *  dispatcher ŒÄ‚яo‚µ‘O‚Ƀ^[ƒQƒbƒgˆË‘¶‚Å•K—v‚ȏˆ—‚ðs‚¤‚½‚߂̊֐”
     302 *  dispatcher 呼び出し前にターゲット依存で必要な処理を行うための関数
    308303 *    (prc_support.asm)
    309304 */
     
    311306
    312307/*
    313  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µiprc_support.asmj
    314  *
    315  *  call_exit_kernel‚́CƒJ[ƒlƒ‹‚̏I—¹Žž‚ɌĂяo‚³‚êCƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ð
    316  *  ‰Šú‰»‚µCƒJ[ƒlƒ‹‚̏I—¹ˆ—iexit_kernelj‚ðŒÄ‚яo‚·D
     308 *  カーネルの終了処理の呼出し(prc_support.asm)
     309 *
     310 *  call_exit_kernelは,カーネルの終了時に呼び出され,スタックポインタを
     311 *  初期化し,カーネルの終了処理(exit_kernel)を呼び出す.
    317312 */
    318313extern void call_exit_kernel(void);
    319314
    320315/*
    321  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹Žžˆ—(prc_config.c)
     316 *  プロセッサ依存の終了時処理(prc_config.c)
    322317 */
    323318extern void     prc_terminate(void);
    324319
    325320/*
    326  *  (7) dispacher ‚Å‚ÌŠ„ž‚Ý‘Ò‚¿
     321 *  (7) dispacher での割込み待ち
    327322 */
    328323extern void idle_loop(void);
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_def.csv

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_kernel.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    77 *             Nagoya Municipal Industrial Research Institute, JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    11  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    13  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    14  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    16  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—pŽÒƒ}
    18  *      ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    20  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    22  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    26  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    28  *        ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    30  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    31  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    32  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚Ɓ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プロジェクトを免責すること.
    3329 *
    34  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    35  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    36  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    37  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    38  *  ‚í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     31 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     32 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     33 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     34 *  わない.
    3935 *
    4036 */
    4137
    4238/*
    43  *              kernel.h ƒvƒƒZƒbƒTˆË‘¶•”iRL78j
     39 *              kernel.h プロセッサ依存部(RL78)
    4440 *
    45  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_kernel.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    46  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    47  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     41 *  このインクルードファイルは,target_kernel.h(または,そこからインク
     42 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     43 *  直接インクルードしてはならない.
    4844 */
    4945
     
    5248
    5349/*
    54  *  ƒJ[ƒlƒ‹–{‘Ì‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚߂̃}ƒNƒ’è‹`
     50 *  カーネル本体をコンパイルするためのマクロ定義
    5551 *
    56  *  –{ŠÂ‹«‚Å‚Í1ŠÖ”‚ð1ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ɃRƒ“ƒpƒCƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚½‚߁C
    57  *  ALLFUNCƒ}ƒNƒ‚ð’è‹`‚·‚éD
     52 *  本環境では1関数を1オブジェクトファイルにコンパイルすることができないため,
     53 *  ALLFUNCマクロを定義する.
    5854 */
    5955
     
    6157
    6258/*
    63  *  ƒTƒ|[ƒg‚·‚é‹@”\‚Ì’è‹`
     59 *  サポートする機能の定義
    6460 */
    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をサポートする */
    6763
    6864/*
    69  *  ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚Ý—Dæ“x‚͈̔Í
     65 *  カーネル管理の割込み優先度の範囲
    7066 *
    71  *  ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚Ý—Dæ“x‚̍őå’l‹y‚эŏ¬’l‚Ì’è‹`D
    72  *  Å‘å’l‚Í -1 ŒÅ’è‚ŁC‚±‚ê‚Í“‡Žd—l‘‚É‚ ‚é‚悤‚ɑΏ̐«‚ÌŠÏ“_‚Å—pˆÓ‚³‚ê‚Ä‚¢‚éD
    73  *  Å¬’l TMIN_INTPRI ‚ɐݒè‰Â”\‚È’l‚͈̔͂́C-3, -2, -1 ‚Å‚ ‚éD
     67 *  カーネル管理の割込み優先度の最大値及び最小値の定義.
     68 *  最大値は -1 固定で,これは統合仕様書にあるように対称性の観点で用意されている.
     69 *  最小値 TMIN_INTPRI に設定可能な値の範囲は,-3, -2, -1 である.
    7470 *
    75  *  —Ⴆ‚Î TMIN_INTPRI ‚ð -2 ‚ɐݒ肷‚é‚ƁCNMI ‚ɉÁ‚¦Š„ž‚Ý—Dæ“x‚ª
    76  *  -4 ‹y‚Ñ -3 ‚ɐݒ肳‚ê‚Ä‚¢‚銄ž‚Ý—v‹ƒ‰ƒCƒ“‚©‚ç‚ÌŠ„ž‚Ý‚ª
    77  *  ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚Æ‚È‚éD
    78  *  ‚Ü‚½CTMIN_INTPRI ‚ð -4 ‚ɐݒ肷‚邱‚Æ‚Í‚Å‚«‚¸CNMI ‚¨‚æ‚Ñ -4 ‚͏í‚É
    79  *  ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚Æ‚È‚éD
     71 *  例えば TMIN_INTPRI を -2 に設定すると,NMI に加え割込み優先度が
     72 *  -4 及び -3 に設定されている割込み要求ラインからの割込みが
     73 *  カーネル管理外の割込みとなる.
     74 *  また,TMIN_INTPRI を -4 に設定することはできず,NMI および -4 は常に
     75 *  カーネル管理外の割込みとなる.
    8076 */
    8177#ifndef TMIN_INTPRI
    82 #define TMIN_INTPRI             (-3)            /* Š„ž‚Ý—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
     78#define TMIN_INTPRI             (-3)            /* 割込み優先度の最小値(最高値)*/
    8379#endif /* TMIN_INTPRI */
    84 #define TMAX_INTPRI             (-1)            /* Š„ž‚Ý—Dæ“x‚̍őå’liÅ’á’lj */
     80#define TMAX_INTPRI             (-1)            /* 割込み優先度の最大値(最低値) */
    8581
    8682/*
    87  *  Š„‚荞‚Ý‘®«
     83 *  割り込み属性
    8884 */
    89 #define TA_POSEDGE              TA_EDGE                 /* ƒ|ƒWƒeƒBƒuƒGƒbƒWƒgƒŠƒK */
    90 #define TA_NEGEDGE              UINT_C(0x04)    /* ƒlƒKƒeƒBƒuƒGƒbƒWƒgƒŠƒK */
    91 #define TA_BOTHEDGE             UINT_C(0x08)    /* —¼ƒGƒbƒWƒgƒŠƒK */
     85#define TA_POSEDGE              TA_EDGE                 /* ポジティブエッジトリガ */
     86#define TA_NEGEDGE              UINT_C(0x04)    /* ネガティブエッジトリガ */
     87#define TA_BOTHEDGE             UINT_C(0x08)    /* 両エッジトリガ */
    9288
    9389
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_rename.def

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_rename.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_sil.asm

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    66;             Nagoya Municipal Industrial Research Institute, JAPAN
    77;
    8 ;  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 ;  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    10 ;  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 ;  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    12 ;      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    13 ;      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 ;  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    15 ;      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—pŽÒƒ}
    17 ;      ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    19 ;      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 ;  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    21 ;      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    22 ;    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    25 ;        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26 ;    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    27 ;        ‚·‚邱‚ƁD
    28 ;  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    29 ;      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    30 ;      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    31 ;      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚Ɓ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プロジェクトを免責すること.
    3228;
    33 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    34 ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    35 ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    36 ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    37 ‚í‚È‚¢D
     29本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     30びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     31る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     32により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     33わない.
    3834;
    3935;
    4036
    4137;
    42 ;  SIL‚̃AƒZƒ“ƒuƒ‰‹Lq•”•ª
     38;  SILのアセンブラ記述部分
    4339;
    4440
     
    5046;
    5147; uint8_t get_psw(void)
    52 ;   PSW‚Ì’l‚ðŽæ“¾
     48;   PSWの値を取得
    5349;
    5450_get_psw:
    5551        push    ax
    56         mov     a, psw          ; PSW ‚Ì’l‚ðŽæ“¾
     52        mov     a, psw          ; PSW の値を取得
    5753        mov     c, a
    5854        clrb    b
     
    6258;
    6359; void set_psw(uint8_t psw)
    64 ;   PSW‚Ì’l‚ðÝ’è
     60;   PSWの値を設定
    6561;
    6662_set_psw:
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_sil.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    77 *             Nagoya Municipal Industrial Research Institute, JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    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 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 */
    4339
    4440/*
    45  *              sil.h ƒvƒƒZƒbƒTˆË‘¶•”(RL78ƒtƒ@ƒ~ƒŠ‹¤’Ê•”•ª)
     41 *              sil.h プロセッサ依存部(RL78ファミリ共通部分)
    4642 */
    4743
     
    5046
    5147/*
    52  *  ƒRƒ“ƒpƒCƒ‰‚ª Inline ‚ðƒTƒ|[ƒg‚µ‚È‚¢‚½‚ß
    53  *  •W€‚̃ƒ‚ƒŠ‹óŠÔƒAƒNƒZƒXŠÖ”‚ðŽg—p‚µ‚È‚¢
     48 *  コンパイラが Inline をサポートしないため
     49 *  標準のメモリ空間アクセス関数を使用しない
    5450 */
    5551#define TOPPERS_OMIT_SIL_ACCESS
    5652
    5753/*
    58  * PSW ƒŒƒWƒXƒ^
     54 * PSW レジスタ
    5955 */
    6056#define PSW_IE_MASK     (0x80)
    6157#define PSW_ISP_MASK    (0x06)
    6258
    63 // psw ‚Ì ISP{0,1} •”•ª‚¾‚¯‚ðŽæ‚èo‚·
     59// psw の ISP{0,1} 部分だけを取り出す
    6460#define PSW2ISP(psw)    ((uint8_t)((psw) & PSW_ISP_MASK))
    65 // psw ‚Ì ISP{0,1} ‚̃rƒbƒgˆÊ’u‚É isp ‚ðƒZƒbƒg‚µ‚½ƒpƒ^[ƒ“‚ðì‚é
     61// psw の ISP{0,1} のビット位置に isp をセットしたパターンを作る
    6662#define PSW_SET_ISP(psw, isp)   ((uint8_t)((uint8_t)(psw & ~PSW_ISP_MASK) | isp))
    6763
     
    6965#ifndef TOPPERS_MACRO_ONLY
    7066
    71 // PSW‚̎擾EÝ’è
     67// PSWの取得・設定
    7268extern uint8_t get_psw(void);
    7369extern void set_psw(uint8_t psw);
    7470
    7571/*
    76  *  NMI‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý‚Ì‹ÖŽ~(prc_config.c)
     72 *  NMIを除くすべての割込みの禁止(prc_config.c)
    7773 */
    7874extern uint8_t TOPPERS_disint(void);
    7975
    8076/*
    81  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒNi“à•”•\Œ»j‚ÌŒ»Ý’l‚̐ݒè(prc_config.c)
     77 *  割込み優先度マスク(内部表現)の現在値の設定(prc_config.c)
    8278 */
    8379extern void TOPPERS_enaint(uint8_t TOPPERS_psw);
    8480
    8581/*
    86  *  ‘SŠ„ž‚݃ƒbƒNó‘Ԃ̐§Œä
     82 *  全割込みロック状態の制御
    8783 */
    8884#define SIL_PRE_LOC             uint8_t TOPPERS_ie_psw;
     
    9187
    9288/*
    93  *  ”÷­ŽžŠÔ‘Ò‚¿(target_support.asm, not yet)
     89 *  微少時間待ち(target_support.asm, not yet)
    9490 */
    9591extern void sil_dly_nse(ulong_t dlytim);
     
    9894
    9995/*
    100  *  ƒvƒƒZƒbƒT‚̃Gƒ“ƒfƒBƒAƒ“
     96 *  プロセッサのエンディアン
    10197 */
    102 #define SIL_ENDIAN_LITTLE                       /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ */
     98#define SIL_ENDIAN_LITTLE                       /* リトルエンディアン */
    10399
    104100#endif /* TOPPERS_PRC_SIL_H */
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_stddef.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    77 *             Nagoya Municipal Industrial Research Institute, JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    11  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    13  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    14  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    16  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—p
    18  *      ŽÒƒ}ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    20  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    22  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    23  *      ‚ƁD
    24  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    25 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    26 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    27  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    28  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    29  *        •ñ‚·‚邱‚ƁD
    30  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    31  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    33  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    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 *      免責すること.
    3531 *
    36  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    37  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    38  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    39  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    40  *  ‚̐ӔC‚𕉂í‚È‚¢D
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    4137 *
    4238 */
    4339
    4440/*
    45  *              t_stddef.h‚̃vƒƒZƒbƒTˆË‘¶•”iRL78ƒtƒ@ƒ~ƒŠ‹¤’Ê•”•ªj
     41 *              t_stddef.hのプロセッサ依存部(RL78ファミリ共通部分)
    4642 *
    47  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_stddef.h ‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD
    48  *  ‘¼‚̃tƒ@ƒCƒ‹‚©‚ç’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     43 *  このインクルードファイルは,target_stddef.h のみからインクルードされる.
     44 *  他のファイルから直接インクルードしてはならない.
    4945 */
    5046
     
    5349
    5450/*
    55  *  ƒ^[ƒQƒbƒg‚ðŽ¯•Ê‚·‚邽‚߂̃}ƒNƒ‚Ì’è‹`
     51 *  ターゲットを識別するためのマクロの定義
    5652 */
    57 #define TOPPERS_RL78                            /* ƒvƒƒZƒbƒT—ªÌ */
     53#define TOPPERS_RL78                            /* プロセッサ略称 */
    5854
    5955#endif /* TOPPERS_PRC_STDDEF_H */
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_support.asm

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    66;             Nagoya Municipal Industrial Research Institute, JAPAN
    77;
    8 ;  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 ;  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    10 ;  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 ;  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    12 ;      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    13 ;      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 ;  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    15 ;      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—pŽÒƒ}
    17 ;      ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    19 ;      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 ;  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    21 ;      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    22 ;    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    25 ;        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26 ;    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    27 ;        ‚·‚邱‚ƁD
    28 ;  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    29 ;      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    30 ;      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    31 ;      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32 ;
    33 ;  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    34 ;  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    35 ;  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    36 ;  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    37 ;  ‚í‚È‚¢D
    38 ;
    39 ;
    40 
    41 ;
    42 ;  ƒJ[ƒlƒ‹ŽÀ‘•‚̃vƒƒZƒbƒTˆË‘¶•”•ª
    43 ;
    44 
    45 ;
    46 ;  ƒ}ƒNƒ’è‹`‚̃Cƒ“ƒNƒ‹[ƒ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;  マクロ定義のインクルード
    4743;
    4844$INCLUDE(prc_support_def.inc)
    4945
    5046;
    51 ƒOƒ[ƒoƒ‹ƒVƒ“ƒ{ƒ‹
    52 ;
    53         ; ƒRƒ“ƒpƒCƒ‰‚ªŽg—p‚·‚é saddr—̈æ‚̃ŒƒWƒXƒ^
     47グローバルシンボル
     48;
     49        ; コンパイラが使用する saddr領域のレジスタ
    5450        extrn   _@RTARG0,_@RTARG2,_@RTARG4,_@RTARG6,_@SEGAX,_@SEGDE
    5551        extrn   _@NRARG0,_@NRARG1,_@NRARG2,_@NRARG3
    5652        extrn   _@NRAT00,_@NRAT02,_@NRAT04,_@NRAT06
    5753        ; kernel_cfg.c
    58         extrn   __kernel_istkpt         ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̏‰Šú’l
     54        extrn   __kernel_istkpt         ; スタックポインタの初期値
    5955        ; prc_config.c
    60         extrn   _t_lock_cpu             ; CPUƒƒbƒNó‘Ԃւ̈ڍs
    61         extrn   __kernel_intnest        ; Š„ž‚݂̃lƒXƒgƒJƒEƒ“ƒ^
    62         extrn   __kernel_lock_flag      ; CPUƒƒbƒNƒtƒ‰ƒO
     56        extrn   _t_lock_cpu             ; CPUロック状態への移行
     57        extrn   __kernel_intnest        ; 割込みのネストカウンタ
     58        extrn   __kernel_lock_flag      ; CPUロックフラグ
    6359        ; task.c
    64         extrn   __kernel_dispatcher     ; ƒfƒBƒXƒpƒbƒ`ƒƒ
    65         extrn   __kernel_reqflg         ; ƒfƒBƒXƒpƒbƒ`—v‹ƒtƒ‰ƒO
    66         extrn   __kernel_disdsp         ; ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô
    67         extrn   __kernel_search_schedtsk        ; Å‚—Dæ“x‚̃T[ƒ`
    68         extrn   __kernel_run_task       ; ƒ^ƒXƒN‚ÌŠJŽn
     60        extrn   __kernel_dispatcher     ; ディスパッチャ
     61        extrn   __kernel_reqflg         ; ディスパッチ要求フラグ
     62        extrn   __kernel_disdsp         ; ディスパッチ禁止状態
     63        extrn   __kernel_search_schedtsk        ; 最高優先度のサーチ
     64        extrn   __kernel_run_task       ; タスクの開始
    6965        ; startup.c
    70         extrn   __kernel_exit_kernel    ; ƒJ[ƒlƒ‹‚̏I—¹ˆ—
     66        extrn   __kernel_exit_kernel    ; カーネルの終了処理
    7167
    7268        ; prc_support.asm
    73         public  __kernel_start_dispatch         ; ƒfƒBƒXƒpƒbƒ`‚ÌŠJŽnˆ—
    74         public  __kernel_call_exit_kernel       ; I—¹ˆ—‚̃R[ƒ‹
    75         public  __kernel_interrupt_entry        ; Š„ž‚Ý‚Ì“üŒûˆ—(‹¤’Ê•”)
    76         public  __kernel_int_return             ; ƒŒƒWƒXƒ^‚𕜋A‚µ‚ÄŠ„ž‚Ý”­¶Œ³‚ÖƒŠƒ^[ƒ“
    77         public  _unused_interrupt               ; –¢Žg—pŠ„ž‚݂̏ˆ—
    78 
    79 ;
    80 ; ƒRƒ“ƒpƒCƒ‰‚ÅŽg—p‚·‚ésaddr—̈æ‚̃ŒƒWƒXƒ^‚ð•Û‘¶
     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領域のレジスタを保存
    8177;
    8278restore_saddr_regs      macro
    83 $if (ALLOC_REGVAR_TO_SADDR) ; -qr ƒIƒvƒVƒ‡ƒ“‚ðŽg—p‚·‚éê‡
    84         pop     ax              ; ƒŒƒWƒXƒ^•œ‹A
     79$if (ALLOC_REGVAR_TO_SADDR) ; -qr オプションを使用する場合
     80        pop     ax              ; レジスタ復帰
    8581        movw    _@NRAT06, ax    ;
    8682        pop     ax              ;
     
    9995        movw    _@NRARG0, ax    ;
    10096$endif
    101         pop     ax              ; ƒŒƒWƒXƒ^•œ‹A
     97        pop     ax              ; レジスタ復帰
    10298        movw    _@SEGDE, ax     ;
    10399        pop     ax              ;
     
    114110
    115111;
    116 ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ð‰Šú‰»
     112スタックポインタを初期化
    117113;
    118114reset_sp        macro
     
    124120       
    125121;
    126 ;  PSW ‚Ì ISP1 = 1, ISP0 = 1 ‚É‚µ‚ÄŠ„ž‚݂̃}ƒXƒN‚ð‰ðœ‚·‚é
     122;  PSW の ISP1 = 1, ISP0 = 1 にして割込みのマスクを解除する
    127123;
    128124clear_pswisp_mask       macro
     
    136132
    137133;
    138 ƒJ[ƒlƒ‹‚Ì“®ìŠJŽn‚É•K—v‚Æ‚³‚ê‚éŒãŽn––‚ðs‚¤‚½‚߂̊֐”
    139 ;  sta_ker(startup.c) ‚©‚çŒÄ‚яo‚³‚ê‚éD
     134カーネルの動作開始に必要とされる後始末を行うための関数
     135;  sta_ker(startup.c) から呼び出される.
    140136;
    141137__kernel_start_dispatch:
    142138        ;
    143         ;  CPUƒƒbƒNó‘Ô‚Æ‘SŠ„ž‚݃ƒbƒNó‘Ô‚Æ‚ð‹æ•Ê‚·‚é•K—v‚ª‚ ‚éê‡C
    144         ;  CPUƒƒbƒNó‘Ô‚É‚µC‘SŠ„ž‚݃ƒbƒN‘Š“–‚̏ó‘Ô‚ð‰ðœ‚·‚éD
     139        ;  CPUロック状態と全割込みロック状態とを区別する必要がある場合,
     140        ;  CPUロック状態にし,全割込みロック相当の状態を解除する.
    145141        ;
    146142        call !!_t_lock_cpu
     
    151147$ENDIF
    152148        ;
    153         ;  ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ð‰Šú‰»‚·‚é
    154         ;  sta_ker ‚©‚ç start_dispatch ‚̊֐”ƒR[ƒ‹‚É‚æ‚éƒXƒ^ƒbƒNÁ”‚ð
    155         ;  ƒNƒŠƒA‚·‚邽‚߁CƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ð‰Šú‰»‚·‚éD
     149        ;  スタックポインタを初期化する
     150        ;  sta_ker から start_dispatch の関数コールによるスタック消費分を
     151        ;  クリアするため,スタックポインタを初期化する.
    156152        ;
    157153        reset_sp
    158154
    159155        ;
    160         ;  dispatcher (task.c) ‚ÖƒWƒƒƒ“ƒv‚·‚é
    161         ;  ŠÖ”ƒR[ƒ‹‚É‚µ‚È‚¢‚̂̓Xƒ^ƒbƒN‚ðß–ñ‚·‚邽‚߁D
    162         ;
    163         ; dispatcher (kernel/task.c) ‚̌Ăяo‚µ
     156        ;  dispatcher (task.c) へジャンプする
     157        ;  関数コールにしないのはスタックを節約するため.
     158        ;
     159        ; dispatcher (kernel/task.c) の呼び出し
    164160        br      !!__kernel_dispatcher
    165161
    166162
    167163;
    168 I—¹ˆ—‚̌Ăяo‚µ
    169 ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ð‰Šú‰»‚µCexit_kernel ‚ðŒÄ‚яo‚·D
     164終了処理の呼び出し
     165スタックポインタを初期化し,exit_kernel を呼び出す.
    170166;
    171167 __kernel_call_exit_kernel:
     
    177173
    178174;
    179 Š„ž‚Ý/CPU—áŠO‚̏o“üŒûˆ—(‹¤’Ê•”)
    180 ;    ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚Ý‚Ü‚½‚ÍCPU—áŠO‚̏ꍇ‚ɃŒƒWƒXƒ^•Û‘¶ŒãCŒÄ‚яo‚³‚ê‚éD
    181 ;
    182 ;   ‘O’ñðŒ
    183 ;       EPSWƒŒƒWƒXƒ^‚ÌIEƒrƒbƒg=0, ISP‚ÍŽó•t‚¯‚½Š„ž‚Ý‚ÌISP.
    184 ;       Eƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ª bc ‚ÉŠi”[‚³‚ê‚Ä‚¢‚é.
    185 ;   ECPU—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒû‚©‚ç—ˆ‚½ê‡CƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚Ì
    186 ;     æ“ª”Ô’n(p_excinf)‚ª ax ‚ÉŠi”[‚³‚ê‚Ä‚¨‚èC
    187 ;     ‚±‚ê‚ÍCPU—áŠOƒnƒ“ƒhƒ‰‚̈ø”(p_excinf)‚Æ‚µ‚Ä‚»‚Ì‚Ü‚Ü“n‚³‚ê‚éD
    188 ;
    189 ;       ƒŒƒWƒXƒ^‚ªƒXƒ^ƒbƒNã‚ɂǂ̂悤‚É•Û‘¶‚³‚ê‚Ä‚¢‚é‚©‚ðˆÈ‰º‚ÉŽ¦‚·.
    190 ;       }‚Í•À‚я‡‚Ì‚Ý‚ð•\Œ»‚µ‚½‚à‚Ì‚Å‚ ‚èCƒTƒCƒY‚ðl—¶‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚·‚éD
    191 ;       ³Šm‚ɂ̓f[ƒ^ƒV[ƒg‚ðŽQÆ‚Ì‚±‚ƁD
    192 ;       ‚±‚̐}‚ł͏オ’áˆÊ, ‰º‚ª‚ˆÊ‚̃AƒhƒŒƒX‚Å, ƒXƒ^ƒbƒN‚͐}‚̉º‘¤‚©‚ç
    193 ;       ã•ûŒü‚ÉŒü‚©‚Á‚Đςݏグ‚ç‚ê‚é‚à‚Ì‚Æ‚·‚é.
    194 ;
    195 ;       ¦1 saddr—̈æ‚̃[ƒNƒGƒŠƒA‚̓Rƒ“ƒpƒCƒ‰ƒIƒvƒVƒ‡ƒ“ -qr ‚ðŽw’è‚·‚éê‡‚É
    196 ;       •Û‘¶‚ª•K—v‚Å‚ ‚èC’ʏí‚Í•Û‘¶‚µ‚È‚¢D•Û‘¶‚·‚éê‡‚̓AƒZƒ“ƒuƒ‰ƒIƒvƒVƒ‡ƒ“
    197 ;       ‚ɂāuALLOC_REGVAR_TO_SADDRv‚ð’è‹`‚·‚邱‚ƁD
    198 ;
    199 ;       ¦2 CPU—áŠO‚Ì“üŒû‚ðŒo—R‚µ‚½ê‡‚Ì‚Ý•Û‘¶‚³‚ê‚é
    200 ;
    201 ;
    202 ;       ---------------<-- p_excinf(¦)
    203 ;       |  saddr—Ìˆæ   |
    204 ;       |ƒ[ƒN—pƒGƒŠƒA|
    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 |
    206202;       ---------------<-- p_excinf
    207 ;       |  saddr—Ìˆæ   |
    208 ;       |ƒZƒOƒƒ“ƒgî•ñ|
    209 ;       | Ši”[—pƒGƒŠƒA |
     203;       |  saddr領域   |
     204;       |セグメント情報|
     205;       | 格納用エリア |
    210206;       |   (4byte)    |
    211207;       ---------------
    212 ;       |  saddr—Ìˆæ   |
    213 ;       |  ƒ‰ƒ“ƒ^ƒCƒ€  |
    214 ;       |  ˆø”ƒGƒŠƒA  |
     208;       |  saddr領域   |
     209;       |  ランタイム  |
     210;       |  引数エリア  |
    215211;       |   (8byte)    |
    216212;       ---------------
     
    230226;       ---------------
    231227;
    232 ;       ƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚µ‚½Œã‚Í, ‘½dŠ„ž‚Ý‚Å‚È‚­, ‚©‚C
    233 ;       reqflg ‚ª TRUEC‚©‚Cdisdsp ‚ª FALSE ‚ÌŽž‚ɁCinterrupt_dispatch ‚Ö•ªŠò‚·‚éD
    234 ;
    235 ;       ‘½dŠ„ž‚Ý‚©‚Ç‚¤‚©‚ÍŠ„ž‚݃lƒXƒgƒJƒEƒ“ƒ^‚Ì’l‚Å”»’è‚·‚é.
    236 ;       intnest > 0 ‚È‚ç‚Α½dŠ„ž‚Ý‚Å‚ ‚é‚Æ”»’è‚·‚é.
     228;       ハンドラからリターンした後は, 多重割込みでなく, かつ,
     229;       reqflg が TRUE,かつ,disdsp が FALSE の時に,interrupt_dispatch へ分岐する.
     230;
     231;       多重割込みかどうかは割込みネストカウンタの値で判定する.
     232;       intnest > 0 ならば多重割込みであると判定する.
    237233;
    238234
    239235__kernel_interrupt_entry:
    240         inc     !__kernel_intnest       ; ƒlƒXƒgƒJƒEƒ“ƒ^‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
    241         ei                              ; Š„ž‚Ý‹–‰Â(IPL‚͎󂯕t‚¯‚ç‚ꂽŠ„ž‚݂̃Œƒxƒ‹)
    242         call    bc                      ; Š„ž‚݃nƒ“ƒhƒ‰ŒÄ‚яo‚µ
    243         di                              ; Š„ž‚Ý‹ÖŽ~
    244         dec     !__kernel_intnest       ; ƒlƒXƒgƒJƒEƒ“ƒ^‚ðƒfƒNƒŠƒƒ“ƒg
    245         bnz     $__kernel_int_return    ; –ß‚èæ‚ª”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg(”ñƒ[ƒ)‚È‚ç’P‚ɃŠƒ^[ƒ“
    246         movw    ax,!__kernel_reqflg     ; ƒfƒBƒXƒpƒbƒ`—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     ; ディスパッチ要求があるかどうか
    247243        cmpw    ax, #0
    248         bz      $__kernel_int_return    ; ‚È‚¯‚ê‚΁C’P‚ɃŠƒ^[ƒ“
     244        bz      $__kernel_int_return    ; なければ,単にリターン
    249245        movw    ax, #0
    250         movw    !__kernel_reqflg, ax    ; reqflg = FALSE ‚É–ß‚µ‚Ä‚¨‚­
    251         movw    ax, !__kernel_disdsp    ; ƒfƒBƒXƒpƒbƒ`‹ÖŽ~‚©‚Ç‚¤‚©
     246        movw    !__kernel_reqflg, ax    ; reqflg = FALSE に戻しておく
     247        movw    ax, !__kernel_disdsp    ; ディスパッチ禁止かどうか
    252248        cmpw    ax, #0
    253         bnz     $__kernel_int_return    ; ‹ÖŽ~‚È‚çC’P‚ɃŠƒ^[ƒ“
    254 
    255 ;
    256 Š„ž‚݂̏oŒûˆ—(ƒfƒBƒXƒpƒbƒ`•t‚«)
    257 ;    CPU ƒƒbƒN‘Š“–‚̏ó‘ԂɈڍs‚µCV‹Kƒ^ƒXƒN‚ðŠJŽn‚·‚é
    258 ;
    259 ‘O’ñðŒF
    260 ;    PSWƒŒƒWƒXƒ^‚ÌIEƒtƒ‰ƒO = 0 (Š„ž‚Ý‹ÖŽ~)
    261 ;    PSWƒŒƒWƒXƒ^‚ÌISP{1,0} = Žó‚¯•t‚¯‚½Š„ž‚Ý‚ÌŠ„ž‚݃Œƒxƒ‹
     249        bnz     $__kernel_int_return    ; 禁止なら,単にリターン
     250
     251;
     252割込みの出口処理(ディスパッチ付き)
     253;    CPU ロック相当の状態に移行し,新規タスクを開始する
     254;
     255前提条件:
     256;    PSWレジスタのIEフラグ = 0 (割込み禁止)
     257;    PSWレジスタのISP{1,0} = 受け付けた割込みの割込みレベル
    262258;
    263259__kernel_interrupt_dispatch:
     
    272268        call    !!__kernel_run_task
    273269
    274         ; run_task ‚©‚ç‚̃Šƒ^[ƒ“Œã‚̏ó‘Ô: CPUƒƒbƒNó‘Ô
    275         ; __kernel_int_return ‚Ì reti ‚Å PSW ‚Ì IE, ISP ‚Í
    276         ; Š„ž‚Ý”­¶‘O‚̏ó‘Ԃɖ߂邽‚߁Clock_flag ‚¾‚¯Œ³‚É–ß‚·D
     270        ; run_task からのリターン後の状態: CPUロック状態
     271        ; __kernel_int_return の reti で PSW の IE, ISP は
     272        ; 割込み発生前の状態に戻るため,lock_flag だけ元に戻す.
    277273        movw    ax, #0
    278         movw    !__kernel_lock_flag, ax         ; lock_flag ‚ðƒNƒŠƒA
    279 
    280 ;
    281 ƒŒƒWƒXƒ^•œ‹A‚µ‚ÄŠ„ž‚Ý‚©‚烊ƒ^[ƒ“
     274        movw    !__kernel_lock_flag, ax         ; lock_flag をクリア
     275
     276;
     277レジスタ復帰して割込みからリターン
    282278;
    283279__kernel_int_return:
    284         restore_saddr_regs      ; saddr—̈æ‚̃ŒƒWƒXƒ^•œ‹A
    285         pop     ax          ; ES, CS ‚Ì•œ‹A
     280        restore_saddr_regs      ; saddr領域のレジスタ復帰
     281        pop     ax          ; ES, CS の復帰
    286282        mov     cs, a       ;
    287283        mov     a, x        ;
    288284        mov     es, a       ;
    289         pop     hl          ; ƒŒƒWƒXƒ^‚𕜋A
     285        pop     hl          ; レジスタを復帰
    290286        pop     de
    291287        pop     bc
     
    294290
    295291;
    296 –³ŒÀƒ‹[ƒv(”O‚Ì‚½‚ß)
     292無限ループ(念のため)
    297293;
    298294_loop:
     
    300296
    301297;
    302 –¢Žg—pŠ„ž‚Ý
     298未使用割込み
    303299;
    304300_unused_interrupt:
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_unrename.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/prc_user.txt

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    11=====================================================================
    2                          RL78ƒvƒƒZƒbƒTˆË‘¶•”
     2                         RL78プロセッサ依存部
    33                                  Last Modified: '15/6/2
    44=====================================================================
    55
    66
    7 (1) ‘Ήž‚µ‚Ä‚¢‚éƒ^[ƒQƒbƒgƒVƒXƒeƒ€‚ÌŽí—ށE\¬
    8 
    9 RL78ƒvƒƒZƒbƒTˆË‘¶•”(ˆÈ‰ºCRL78ˆË‘¶•”)‚́Cƒ‹ƒlƒTƒXƒGƒŒƒNƒgƒƒjƒNƒX» RL78ƒtƒ@ƒ~ƒŠ
    10 ‚̃vƒƒZƒbƒT‚ðŽå‚ȃ^[ƒQƒbƒg‚Æ‚·‚éDRL78ƒtƒ@ƒ~ƒŠ‚́C‚¢‚­‚‚©‚̃Oƒ‹[ƒvC
    11 ‚»‚µ‚Ä‚Ü‚½‚»‚̃Oƒ‹[ƒv‚Ì’†‚ɁC—lX‚ÈŒ^”Ô‚Å•\Œ»‚³‚ê‚éƒvƒƒZƒbƒT‚̃oƒŠƒG[ƒVƒ‡ƒ“‚ª
    12 ‘¶Ý‚µ‚Ä‚¢‚éD
    13 
    14 ‚½‚¾‚µC–{ƒvƒƒZƒbƒTˆË‘¶•”‚É‚¨‚¢‚āCŒ»ó‚ł́CƒTƒ|[ƒg‚·‚éƒ^[ƒQƒbƒgƒ{[ƒh‚Æ‚ÌŠÖŒW‚©‚çC
    15 RL78/G13 ‚ÉŠÖ‚·‚é’è‹`‚Ì‚Ý‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    16 
    17 
    18 (2) ƒvƒƒZƒbƒTˆË‘¶•”‚̃tƒ@ƒCƒ‹\¬
    19 
    20 ƒŠƒAƒ‹ƒ^ƒCƒ€OSƒJ[ƒlƒ‹‚̃vƒƒZƒbƒTˆË‘¶•”‚Æ‚µ‚ÄŽÀ‘•‚·‚é•”•ª‚Ì‚Ý‚ðl‚¦‚½ê‡C
    21 RL78ˆË‘¶•”‚Ì’è‹`‚́C‘å’ï‚̏ꍇC‘S‚ẴvƒƒZƒbƒT‚É‹¤’Ê‚·‚é•”•ª‚ƁC
    22 ƒvƒƒZƒbƒT‚ÌŒ^”ԂňقȂ镔•ª(¦1)‚ƂɃR[ƒh‚𐮗‚·‚邱‚Æ‚ª‰Â”\‚Å‚ ‚éD
    23 ˆÙ‚È‚é•”•ª‚ɂ‚¢‚Ă̓vƒƒZƒbƒTŒ^”Ô‚ÉŠî‚­ƒtƒ@ƒCƒ‹‚ð—pˆÓ‚µ‚Ä‚¢‚éD
    24 
    25 ¦1 Š„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†C‹y‚сCŠ„ž‚ݐ§ŒäƒŒƒWƒXƒ^‚Ì”z’u‚È‚Ç
    26 
    27 ˆÈã‚æ‚èCƒvƒƒZƒbƒTˆË‘¶•”‚̃R[ƒh‚́CˆÈ‰º‚Ì–½–¼‹K‘¥‚ɏ]‚Á‚Ä—pˆÓ‚³‚ꂽ
    28 ƒtƒ@ƒCƒ‹‚ցC‹¤’Ê•”•ª‚Ɖ•ϕ”•ª‚Æ‚É•ª—Þ‚µ‚Ä”z’u‚³‚ê‚Ä‚¢‚éD
    29 
    30 prc_*  F ‘S‚ẴvƒƒZƒbƒT‚É‹¤’Ê‚·‚é’è‹`
    31 rl78g13_* ‚ȂǁFƒvƒƒZƒbƒTŒ^”Ô–ˆ‚ɈقȂé’è‹`
    32 
    33 ’è‹`‚Ì”z’u‚̓Tƒ|[ƒg‚·‚éƒvƒƒZƒbƒT‚𑝂₷–ˆ‚ÉŒ©’¼‚µ‚ª•K—v‚Æ‚È‚é‚©‚à‚µ‚ê‚È‚¢D
    34 ‚à‚µŒ»ó‚̃R[ƒh”z’u‚Å•s“s‡‚ª¶‚¶‚éê‡‚ɂ̓Tƒ|[ƒgƒ[ƒŠƒ“ƒOƒŠƒXƒg‚Ü‚Å
    35 ‚²˜A—’¸‚¯‚é‚ƍK‚¢‚Å‚ ‚éD
    36 
    37 
    38 (3) Žg—p‚·‚éŠJ”­ŠÂ‹«‚Æ“®ìŒŸØ‚µ‚½ðŒ
    39 
    40 ƒRƒ“ƒpƒCƒ‹C‹y‚уrƒ‹ƒhŠÇ—‚ɂ̓‹ƒlƒTƒXƒGƒŒƒNƒgƒƒjƒNƒX»ƒc[ƒ‹‚ð—p‚¢‚éD
    41 “®ìŠm”F‚µ‚½ƒo[ƒWƒ‡ƒ“‚̓^[ƒQƒbƒgˆË‘¶•”‚̃hƒLƒ
    42 ƒƒ“ƒg‚É‹LÚ‚·‚éD
    43 
    44 
    45 (4) ƒ^[ƒQƒbƒg’è‹`Ž–€‚Ì‹K’è
    46 
    47 (4-1) ƒf[ƒ^Œ^‚ÉŠÖ‚·‚é‹K’è
    48 
    49 TOPPERS‹¤’ʃf[ƒ^Œ^‚Ì‚¤‚¿CTOPPERSV¢‘ãƒJ[ƒlƒ‹“‡Žd—l‘(ˆÈ‰ºC“‡Žd—l‘)‚Å
    50 ƒIƒvƒVƒ‡ƒ“ˆµ‚¢‚Æ‚³‚ê‚Ä‚¢‚éƒf[ƒ^Œ^‚ð‘ΏۂɁCƒ^[ƒQƒbƒgˆË‘¶•”‚ł̃Tƒ|[ƒgó‹µ‚ɂ‚¢‚Ä
    51 ‹Lq‚·‚éD‚±‚ê‚ç‚Ì’è‹`‚Í arch/ca78k0r/tool_stddef.h ‚Å’è‹`‚³‚ê‚Ä‚¢‚é
    52 
    53 y®”Œ^z
    54 
    55 EƒTƒ|[ƒg
    56         int8_t          •„†•t‚«8ƒrƒbƒg®”iƒIƒvƒVƒ‡ƒ“CC99€‹’j
    57         uint8_t         •„†–³‚µ8ƒrƒbƒg®”iƒIƒvƒVƒ‡ƒ“CC99€‹’j
    58         float32_t       IEEE754€‹’‚Ì32ƒrƒbƒg’P¸“x•‚“®¬”“_”iƒIƒvƒVƒ‡ƒ“j
    59 
    60         ‚±‚Ì‚¤‚¿Cfloat32_t ‚́CIEEE754€‹’‚Ì’P¸“x•‚“®¬”“_”‚Å‚ ‚éD
    61 
    62 E–¢ƒTƒ|[ƒg
    63         int64_t         •„†•t‚«64ƒrƒbƒg®”iƒIƒvƒVƒ‡ƒ“CC99€‹’j
    64         uint64_t        •„†–³‚µ64ƒrƒbƒg®”iƒIƒvƒVƒ‡ƒ“CC99€‹’j
    65         double64_t      IEEE754€‹’‚Ì64ƒrƒbƒg”{¸“x•‚“®¬”“_”iƒIƒvƒVƒ‡ƒ“j
    66         int128_t        •„†•t‚«128ƒrƒbƒg®”iƒIƒvƒVƒ‡ƒ“CC99€‹’j
    67         uint128_t       •„†–³‚µ128ƒrƒbƒg®”iƒIƒvƒVƒ‡ƒ“CC99€‹’j
    68 
    69 yÅ‘å’lCÅ¬’l‚̒萔z
    70 
    71 EƒTƒ|[ƒg
    72         INT8_MAX                        int8_t‚ÉŠi”[‚Å‚«‚éÅ‘å’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    73         INT8_MIN                        int8_t‚ÉŠi”[‚Å‚«‚éÅ¬’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    74         UINT8_MAX                       uint8_t‚ÉŠi”[‚Å‚«‚éÅ‘å’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    75         FLOAT32_MIN                     float32_t‚ÉŠi”[‚Å‚«‚éÅ¬‚̐³‹K‰»‚³‚ꂽ³‚Ì•‚“®¬”“_”iƒIƒvƒVƒ‡ƒ“j
    76         FLOAT32_MAX                     float32_t‚ÉŠi”[‚Å‚«‚é•\Œ»‰Â”\‚ȍőå‚Ì—LŒÀ•‚“®¬”“_”iƒIƒvƒVƒ‡ƒ“j
    77 
    78 E–¢ƒTƒ|[ƒg
    79         INT64_MAX                       int64_t‚ÉŠi”[‚Å‚«‚éÅ‘å’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    80         INT64_MIN                       int64_t‚ÉŠi”[‚Å‚«‚éÅ¬’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    81         UINT64_MAX                      uint64_t‚ÉŠi”[‚Å‚«‚éÅ‘å’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    82         DOUBLE64_MIN            double64_t‚ÉŠi”[‚Å‚«‚éÅ¬‚̐³‹K‰»‚³‚ꂽ³‚Ì•‚“®¬”“_”iƒIƒvƒVƒ‡ƒ“j
    83         DOUBLE64_MAX            double64_t‚ÉŠi”[‚Å‚«‚é•\Œ»‰Â”\‚ȍőå‚Ì—LŒÀ•‚“®¬”“_”iƒIƒvƒVƒ‡ƒ“j
    84         INT128_MAX                      int128_t‚ÉŠi”[‚Å‚«‚éÅ‘å’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    85         INT128_MIN                      int128_t‚ÉŠi”[‚Å‚«‚éÅ¬’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    86         UINT128_MAX                     uint128_t‚ÉŠi”[‚Å‚«‚éÅ‘å’liƒIƒvƒVƒ‡ƒ“CC99€‹’j
    87 
    88 (4-2) Š„ž‚ݏˆ—‚ÉŠÖ‚·‚é‹K’è
    89 
    90 (4-2-1) Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ÆŠ„ž‚ݔԍ†‚ÌŠ„“–‚āC—¼ŽÒ‚̑Ήž
    91 
    92 Š„ž‚݃nƒ“ƒhƒ‰”ԍ†(inhno)‚ÆŠ„ž‚ݔԍ†(intno)‚́C‹¤‚ɃfƒtƒHƒ‹ƒgƒvƒ‰ƒCƒIƒŠƒeƒB‚Ì’l‚ð—p‚¢‚éD
    93 —¼ŽÒ‚ÍŠî–{“I‚É“¯‚¶”ԍ†‚ª1‘Î1‚ɑΉž‚·‚éD]‚Á‚ÄŽg—p‰Â”\‚È‘S‚Ä‚ÌŠ„ž‚ݔԍ†‚ɑ΂µ‚Ä
    94 Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“(ISR)‚ð“o˜^‰Â”\‚Å‚ ‚éD
    95 Š„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Í <ƒvƒƒZƒbƒT–¼>.h ƒtƒ@ƒCƒ‹‚Å’è‹`‚µ‚Ä‚¢‚éD
    96 (—Ⴆ‚Î rl78g13.h ‚È‚Ç)
    97 
    98 (4-2-2) Š„ž‚Ý—Dæ“x‚Ì’iŠK”iTMIN_INTPRI‚Ì’ljC‚»‚̐ݒè•û–@
    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æ“xƒŒƒxƒ‹‚Ì’l‚͈̔͂ɑΉž‚µ‚Ä -1(=TMAX_INTPRI) ‚©‚ç -4 ‚Ü‚Å‚Ì
    103 ’l‚ðÝ’è‰Â”\‚Å‚ ‚é(¦2)(¦3)D‚½‚¾‚µCŒãq‚·‚é‚悤‚ɁCTMIN_INTPRI ‚Å’è‹`‚³‚ê‚é’l‚ɉž‚¶‚āC
    104 ƒJ[ƒlƒ‹ŠÇ—‹y‚уJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚ÉŽw’è‰Â”\‚È’l‚͈̔͂ª•Ï‰»‚·‚éD
    105 
    106 CFG_INT ‚Őݒ肳‚ꂽŠ„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɃJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚ð
    107 “o˜^‚·‚éê‡‚́CTMAX_INTPRI ˆÈ‰ºCTMIN_INTPRI ˆÈã‚Ì’l‚ðŽw’肵‚È‚¯‚ê‚΂Ȃç‚È‚¢D
    108 ‘¼•ûCƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚ð“o˜^‚·‚銄ž‚Ý—v‹ƒ‰ƒCƒ“‚ðÝ’è‚·‚éê‡‚́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 CPUƒƒbƒNó‘Ô‚É‚µ‚È‚¢ŒÀ‚艽d‚É‚à‘½dŠ„ž‚Ý‚ª‰Â”\‚ƂȂ邽‚߁C’ˆÓ‚ª•K—v‚Å‚ ‚éD
    116 
    117 (4-2-3) ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý
    118 
    119 RL78ˆË‘¶•”‚ł́CƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éD
    120 
    121 TMIN_INTPRI ‚æ‚荂‚¢(”’l‚Æ‚µ‚Ä‚Í‚æ‚菬‚³‚¢)Š„ž‚Ý—Dæ“x‚ɐݒ肳‚ꂽ
    122 Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ÌŠ„ž‚݂́CƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚Æ‚µ‚Ä—p‚¢‚邱‚Æ‚ª
    123 ‰Â”\‚Å‚ ‚éDƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ÍOSŽÀs’†‚à‹ÖŽ~‚ɂȂ邱‚Æ‚Í‚È‚­
    124 iŒµ–§‚É‚ÍŠ„ž‚݂̏oŒû‚Å‚²‚­’Z‚¢‹æŠÔ‹ÖŽ~‚³‚ê‚éjCŠ„ž‚Ý”­¶Žž‚́C
    125 ƒJ[ƒlƒ‹‚̃R[ƒh‚ðŒo—R‚¹‚¸‚ɌĂя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‚̓^[ƒQƒbƒgˆË‘¶•”‚ŏ㏑‚«‚ª‰Â”\‚Å‚ ‚éD
    130 
    131 (4-2-4) ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݂̐ݒè•û–@
    132 
    133 CFG_INT, DEF_INH ‚ð—p‚¢‚ăJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚ð“o˜^‚·‚éê‡‚̐§–ñ‚́C
    134 (1) DEF_INH ‚Å“o˜^‚·‚銄ž‚݃nƒ“ƒhƒ‰‚Ì‘®«‚Æ‚µ‚Ä TA_NONKERNEL ‚ðŽw’è‚·‚邱‚ƁC
    135 ‹y‚сC(2) ƒnƒ“ƒhƒ‰“o˜^æ‚ÌŠ„ž‚Ý—v‹ƒ‰ƒCƒ“‚ª‚à‚Š„ž‚Ý—Dæ“x‚́C
    136 CFG_INT ‚É‚æ‚è TMIN_INTPRI ‚æ‚荂‚­ (’l‚Æ‚µ‚Ă͏¬‚³‚¢’l)‚ɐݒ肷‚邱‚ƁC
    137 ‚Å‚ ‚éD
    138 
    139 (4-2-5) ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚Ì‹Lq•û–@
    140 
    141 ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚́CˆÈ‰º‚̂悤‚Ɉø”C–ß‚è’l‚ª‹¤‚É void ‚̊֐”
    142 ‚Æ‚µ‚ÄŽÀ‘•‚·‚邱‚ƁD
     7(1) 対応しているターゲットシステムの種類・構成
     8
     9RL78プロセッサ依存部(以下,RL78依存部)は,ルネサスエレクトロニクス製 RL78ファミリ
     10のプロセッサを主なターゲットとする.RL78ファミリは,いくつかのグループ,
     11そしてまたそのグループの中に,様々な型番で表現されるプロセッサのバリエーションが
     12存在している.
     13
     14ただし,本プロセッサ依存部において,現状では,サポートするターゲットボードとの関係から,
     15RL78/G13 に関する定義のみを用意している.
     16
     17
     18(2) プロセッサ依存部のファイル構成
     19
     20リアルタイムOSカーネルのプロセッサ依存部として実装する部分のみを考えた場合,
     21RL78依存部の定義は,大抵の場合,全てのプロセッサに共通する部分と,
     22プロセッサの型番で異なる部分(※1)とにコードを整理することが可能である.
     23異なる部分についてはプロセッサ型番に基づくファイルを用意している.
     24
     25※1 割込み番号,割込みハンドラ番号,及び,割込み制御レジスタの配置など
     26
     27以上より,プロセッサ依存部のコードは,以下の命名規則に従って用意された
     28ファイルへ,共通部分と可変部分とに分類して配置されている.
     29
     30prc_*  : 全てのプロセッサに共通する定義
     31rl78g13_* など:プロセッサ型番毎に異なる定義
     32
     33定義の配置はサポートするプロセッサを増やす毎に見直しが必要となるかもしれない.
     34もし現状のコード配置で不都合が生じる場合にはサポートメーリングリストまで
     35ご連絡頂けると幸いである.
     36
     37
     38(3) 使用する開発環境と動作検証した条件
     39
     40コンパイル,及びビルド管理にはルネサスエレクトロニクス製ツールを用いる.
     41動作確認したバージョンはターゲット依存部のドキュメントに記載する.
     42
     43
     44(4) ターゲット定義事項の規定
     45
     46(4-1) データ型に関する規定
     47
     48TOPPERS共通データ型のうち,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 のパラメータとして指定可能な割込み優先度の値は,
     101RL78 が持つ割込み優先度レベルの値の範囲に対応して -1(=TMAX_INTPRI) から -4 までの
     102値を設定可能である(※2)(※3).ただし,後述するように,TMIN_INTPRI で定義される値に応じて,
     103カーネル管理及びカーネル管理外の割込みハンドラに指定可能な値の範囲が変化する.
     104
     105CFG_INT で設定された割込み要求ラインにカーネル管理の割込みハンドラを
     106登録する場合は,TMAX_INTPRI 以下,TMIN_INTPRI 以上の値を指定しなければならない.
     107他方,カーネル管理外の割込みハンドラを登録する割込み要求ラインを設定する場合は,
     108TMIN_INTPRI より小さく,-4 以上の値を指定しなければならない.
     109
     110(※2) カーネルの割込み処理モデルの上では割込み優先度を -1 から始まる負数で
     111    表現することになっているため,負号がついている.
     112
     113(※3) TMIN_INTPRI を -4 にした場合,CFG_INT で優先度 -4 に設定した割込み要因は,
     114CPUロック状態にしない限り何重にも多重割込みが可能となるため,注意が必要である.
     115
     116(4-2-3) カーネル管理外の割込み
     117
     118RL78依存部では,カーネル管理外の割込みをサポートしている.
     119
     120TMIN_INTPRI より高い(数値としてはより小さい)割込み優先度に設定された
     121割込み要求ラインの割込みは,カーネル管理外の割込みとして用いることが
     122可能である.カーネル管理外の割込みはOS実行中も禁止になることはなく
     123(厳密には割込みの出口でごく短い区間禁止される),割込み発生時は,
     124カーネルのコードを経由せずに呼び出される.
     125
     126TMIN_INTPRI はカーネル管理の割込みに設定することのできる割込み優先度の最高値
     127(値としては最小値)を定義したマクロで,arch/m16c_ncxx/prc_kernel.h で
     128定義されている.既定では,-3となっている.この値はターゲット依存部で上書きが可能である.
     129
     130(4-2-4) カーネル管理外の割込みの設定方法
     131
     132CFG_INT, DEF_INH を用いてカーネル管理外の割込みハンドラを登録する場合の制約は,
     133(1) DEF_INH で登録する割込みハンドラの属性として TA_NONKERNEL を指定すること,
     134及び,(2) ハンドラ登録先の割込み要求ラインがもつ割込み優先度は,
     135CFG_INT により TMIN_INTPRI より高く (値としては小さい値)に設定すること,
     136である.
     137
     138(4-2-5) カーネル管理外の割込みハンドラの記述方法
     139
     140カーネル管理外の割込みハンドラは,以下のように引数,戻り値が共に void の関数
     141として実装すること.
    143142
    144143void
    145144interrupt_handler (void)
    146145{
    147         /* ƒnƒ“ƒhƒ‰‚Ì“à—e */
     146        /* ハンドラの内容 */
    148147}
    149148
    150 (4-2-6) CFG_INT ‚Ń^[ƒQƒbƒg“ÆŽ©‚ÉŽg—p‚Å‚«‚銄ž‚Ý‘®«
    151 
    152 INTŠ„ž‚Ý‚ÉŠÖ‚µ‚Ă̂݁CŠ„ž‚Ý—v‹ƒ‰ƒCƒ“‚̃gƒŠƒKƒ‚[ƒh‚̐ݒè‚ðƒTƒ|[ƒg‚·‚éD
    153 Ý’è‚Å‚«‚é‚̂́CˆÈ‰º‚Ì‚¢‚¸‚ê‚©‚Å‚ ‚éD
    154         Eƒ|ƒWƒeƒBƒuƒGƒbƒW(ƒgƒŠƒKŠ„ž‚Ý)FTA_POSEDGE
    155         EƒlƒKƒeƒBƒuƒGƒbƒW(ƒgƒŠƒKŠ„ž‚Ý)FTA_NEGEDGE
    156         E—¼ƒGƒbƒW(ƒgƒŠƒKŠ„ž‚Ý)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‹‹ÖŽ~ƒtƒ‰ƒO‚Í
    163 RL78ƒvƒƒZƒbƒT‚ÌŠ„ž‚݃}ƒXƒNEƒtƒ‰ƒOEƒŒƒWƒXƒ^‚ª‘Ήž‚·‚éD
    164 
    165 (4-2-8) ‘½dŠ„ž‚݂̃Tƒ|[ƒg
    166 
    167 ‘½dŠ„ž‚Ý‚ð‹–‰Â‚·‚éD‚½‚¾‚µCƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚݂̏ꍇCŠ„ž‚݃nƒ“ƒhƒ‰‚Ì’†‚Å
    168 PSWƒŒƒWƒXƒ^‚ÌIEƒrƒbƒg‚𖾎¦“I‚ɃZƒbƒg‚µCŠ„ž‚Ý‹–‰Â‚É‚µ‚È‚¯‚ê‚Α½dŠ„ž‚Ý‚ª
    169 —LŒø‚Æ‚È‚ç‚È‚¢‚½‚߁C’ˆÓ‚ª•K—v‚Å‚ ‚éD
    170 
    171 ‚Ü‚½ TMIN_INTPRI==-4 ‚̏ꍇCCFG_INT ‚Å -4 ‚ɐݒ肵‚½Š„ž‚݂́C
    172 CPUƒƒbƒN‰ðœó‘Ô‚É‚¨‚¢‚Ä“¯‚¶—Dæ“x -4 ‚ÌŠ„ž‚ݏˆ—‚ªŽÀs’†‚Å‚à
    173 ‘½d‚ÉŠ„ž‚Ý‚ªŽó‚¯•t‚¯‚ç‚ê‚éD‚±‚ê‚ÍRL78‚̃vƒƒZƒbƒT‚ÌŽd—l‚É‚æ‚é‚à‚̂ŁC
    174 PSW‚ÌIEƒrƒbƒg‚ª1‚Å‚ ‚éŒÀ‚èC(ƒvƒƒZƒbƒT“à•”•\Œ»‚É‚¨‚¯‚é)ƒŒƒxƒ‹0‚ÌŠ„ž‚Ý
    175 (Š„ž‚ݏˆ—ƒ‚ƒfƒ‹‚Å‚Í—Dæ“x-4‚ÌŠ„ž‚Ý)‚́CPSW‚ÌISP‚ðŽg—p‚µ‚½
    176 ƒŒƒxƒ‹‚É‚æ‚銄ž‚݂̃}ƒXƒN‚ðs‚¤‚±‚Æ‚ª‚Å‚«‚È‚¢D
    177 
    178 Š„ž‚Ý—Dæ“x-4 ‚̃J[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚ÍCPUƒƒbƒN‰ðœó‘Ô‚Å
    179 ‹N“®‚³‚ê‚邽‚߁C’ˆÓ‚ª•K—v‚Å‚ ‚éD
    180 
    181 (4-2-9) Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚àŠ„ž‚݃nƒ“ƒhƒ‰‚à“o˜^‚µ‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹
    182 
    183 ‚ ‚銄ž‚Ý—v‹ƒ‰ƒCƒ“‚ÅŠ„ž‚Ý—v‹‚ðŽó‚¯•t‚¯‚½‚ªC‚»‚̃‰ƒCƒ“‚ÉŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‹y‚Ñ
    184 Š„ž‚݃nƒ“ƒhƒ‰‚Ì‚Ç‚¿‚ç‚à“o˜^‚µ‚Ä‚¢‚È‚¢ê‡C_unused_interrupt (prc_support.asm) ‚Ö
    185 ƒWƒƒƒ“ƒv‚·‚é‚悤‚ɃRƒ“ƒtƒBƒMƒ
    186 ƒŒ[ƒ^‚ªŠ„ž‚݃xƒNƒ^‚𐶐¬‚·‚éD‚»‚µ‚āC
    187 ‚»‚±‚©‚瑦À‚ɃŠƒ^[ƒ“‚·‚é‚悤‚É‚È‚Á‚Ä‚¢‚éD
    188 
    189 
    190 (4-3) CPU—áŠOˆ—‚ÉŠÖ‚·‚é‹K’è
    191 
    192 (4-3-1) CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†
    193 
    194 RL78 ˆË‘¶•”‚Å‚ÍBRK–½—ß‚É‚æ‚éƒ\ƒtƒgƒEƒFƒAŠ„ž‚Ý‚ðCPU—áŠO‚Æ‚µ‚Ĉµ‚¤D
    195 CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Æ‚µ‚Ä0 ‚ðŠ„‚èU‚邱‚Æ‚É‚·‚éD
    196 
    197 ŠeCPU—áŠO‚ɑ΂·‚é CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚͈ȉº‚Ì’Ê‚èD
    198 ‚±‚ê‚ç‚Í <ƒvƒƒZƒbƒT–¼>.h ‚Å’è‹`‚³‚ê‚Ä‚¢‚éD
    199 
    200                 —áŠO        —áŠO”ԍ†
    201 #define EXCNO_BRK       0       /* ƒ\ƒtƒgƒEƒFƒAƒxƒNƒ^Š„ž‚Ý–½—ß */
    202 
    203 
    204 (4-3-2) ƒnƒ“ƒhƒ‰‚ð“o˜^‚µ‚Ä‚¢‚È‚¢CPU—áŠO‚ª”­¶‚µ‚½‚Æ‚«
    205 
    206 ”­¶‚µ‚½CPU—áŠO‚ɑ΂µ‚āCCPU—áŠOƒnƒ“ƒhƒ‰‚ª“o˜^‚³‚ê‚Ä‚¢‚È‚¢ê‡C
    207 _unused_interrupt (prc_support.asm) ‚ÖƒWƒƒƒ“ƒv‚·‚é‚悤‚ɃRƒ“ƒtƒBƒMƒ
    208 ƒŒ[ƒ^‚ª
    209 Š„ž‚݃xƒNƒ^‚𐶐¬‚·‚éD‚»‚µ‚āC‚»‚±‚©‚瑦À‚ɃŠƒ^[ƒ“‚·‚éD
    210 
    211 (4-3-3) ƒ\ƒtƒgƒEƒFƒAŠ„ž‚݂̈µ‚¢
    212 
    213 ƒ\ƒtƒgƒEƒFƒAŠ„ž‚݂ɑ΂·‚éƒnƒ“ƒhƒ‰‚Í DEF_EXC ‚ŌĂяo‚·‚±‚Æ‚Í‚Å‚«‚È‚¢D
    214 ˆê•ûCDEF_INH ‚ð—p‚¢‚Čďo‚µ‰Â”\‚Å‚ ‚邪Cƒ\ƒtƒgƒEƒFƒAŠ„ž‚Ý‚ÍŒµ–§‚É‚Í
    215 CPU—áŠO‚É‘®‚·‚é‚à‚Ì‚Å‚ ‚èC‚µ‚©‚àƒmƒ“ƒ}ƒXƒJƒuƒ‹‚Å‚ ‚邽‚߁C
    216 ƒVƒXƒeƒ€ƒR[ƒ‹‚ðŒÄ‚яo‚·‚Ȃǂ̒ʏí‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚Æ“¯—l‚ÌŽg—p‚Í”ð‚¯‚½
    217 •û‚ª–³“ï‚Å‚ ‚éD
    218 
    219 
    220 (4-4) CPUƒƒbƒNEŠ„ž‚݃ƒbƒN
    221 
    222 Š„ž‚݃ƒbƒNó‘Ԃ́CPSWƒŒƒWƒXƒ^‚ÌIEƒrƒbƒg‚É‚æ‚èŽÀŒ»‚µ‚Ä‚¢‚éD
    223 IEƒrƒbƒg‚ª0‚Ì‚Æ‚«Š„ž‚݃ƒbƒNó‘ԁC1‚Ì‚Æ‚«Š„ž‚݃ƒbƒN‰ðœó‘Ô‚Æ‚·‚éD
    224 
    225 ƒJ[ƒlƒ‹‚ÌCPUƒƒbƒNó‘Ԃ́CTMIN_INTPRI ‚Å’è‹`‚·‚é’l‚É‚æ‚èˆÙ‚È‚éD
    226 
    227 (4-4-1) TMIN_INTPRI ‚ª -4 ‚̏ꍇ
    228 
    229 CPUƒƒbƒNó‘Ԃ́CPSWƒŒƒWƒXƒ^‚ÌIEƒrƒbƒg‚É‚æ‚èŽÀŒ»‚·‚éD
    230 IEƒrƒbƒg‚ª0‚Ì‚Æ‚«CPUƒƒbƒNó‘ԁC1‚Ì‚Æ‚«CPUƒƒbƒN‰ðœó‘Ô‚Æ‚·‚éD
    231 ‚±‚̏ꍇCCPUƒƒbƒN‚ÆŠ„ž‚݃ƒbƒN‚Í“¯‚¶‚Å‚ ‚éD
    232 
    233 (4-4-2) TMIN_INTPRI ‚ª -1 ˆÈã -3 ˆÈ‰º‚̏ꍇ
    234 
    235 PSW‚̃Cƒ“ƒT[ƒrƒXEƒvƒ‰ƒCƒIƒŠƒeƒBƒtƒ‰ƒO(ISP{1,0})‚Ì’l‚ð
    236 (-TMIN_INTPRI+3) ‚ɐݒ肷‚邱‚Æ‚ÅŽÀŒ»‚·‚éD
    237 —Ⴆ‚Î -3 ‚̏ꍇCPSW ƒŒƒWƒXƒ^‚Ì ISP{1,0} ‚ª (0,0) ‚ɐݒ肳‚ê‚éD
    238 
    239 RL78 ‚ł́CISP{1,0} ‚ɐݒ肵‚½’luˆÈã(’l‚Æ‚µ‚Ă͏¬)v‚Ì—Dæ‡ˆÊ‚ðŽ‚ÂŠ„ž‚Ý‚ª
    240 u‹–‰Âv‚³‚ê‚éC‚Æ‚¢‚¤Žd—l‚É‚È‚Á‚Ä‚¢‚éD‚µ‚½‚ª‚Á‚āCƒ}ƒXƒN‚µ‚½‚¢ƒŒƒxƒ‹‚æ‚è
    241 ˆê’i‚‚¢’l‚ðƒZƒbƒg‚·‚é•K—v‚ª‚ ‚éD
    242 
    243 
    244 (4-5) «”\•]‰¿—pƒVƒXƒeƒ€Žž‚ÌŽQÆ‚ÉŠÖ‚·‚é‹K’è
    245 
    246 get_utm‚ðƒTƒ|[ƒg‚·‚é—\’è‚Å‚ ‚邪‚Ü‚¾ŽÀ‘•‚µ‚Ä‚¢‚È‚¢D
    247 
    248 
    249 (4-6) ƒVƒXƒeƒ€‰Šú‰»Žè‡‚Ì“à—e
    250 
    251 ƒXƒ^[ƒgƒAƒbƒvƒ‹[ƒ`ƒ“‚́CƒVƒXƒeƒ€ƒŠƒZƒbƒg’¼Œã‚ɌĂяo‚³‚êCŽÀs‚ðŠJŽn‚·‚éD
    252 ‚»‚̍ۂ̃vƒƒZƒbƒTó‘Ԃ͈ȉº‚ð‘O’ñ‚Æ‚µ‚Ä‚¢‚éD
    253         ESP, MAA ‚Í–¢‰Šú‰»
    254         EƒŒƒWƒXƒ^ƒoƒ“ƒN‚Í RB0
    255         EPSWƒŒƒWƒXƒ^‚ÌIEƒtƒ‰ƒO‚ª0 (Š„ž‚݃ƒbƒNó‘Ô‚Æ“¯“™‚̏ó‘Ô)
    256         EPSWƒŒƒWƒXƒ^‚ÌISP=(1,1)
    257         EƒVƒXƒeƒ€ƒNƒƒbƒN‚Í–¢‰Šú‰»(“à•”ƒIƒVƒŒ[ƒ^“®ì 1MHz)
    258         Eƒƒ‚ƒŠ–¢‰Šú‰»(‚à‚µƒ\ƒtƒgƒEƒFƒAƒŠƒZƒbƒg‚ð“ÆŽ©‚ÉŽÀ‘•‚µ‚Ä‚¢‚ê‚Εێ‚³‚ê‚Ä‚¢‚é)
    259 
    260 ‚Ü‚¸CƒXƒ^[ƒgƒAƒbƒvƒ‹[ƒ`ƒ“‚Ì start (start.asm) ‚ªˆÈ‰º‚̏ˆ—‚ðs‚¤D
    261         ISP, MAA ‚̏‰Šú‰»
    262         ƒƒ‚ƒŠ‰Šú‰»
    263         sta_ker (startup.c) ƒR[ƒ‹
    264 ‚»‚µ‚āCtarget_initialize (target_config.c) ‚ɂăNƒƒbƒNÝ’肪s‚í‚ê‚éD
    265 
    266 ‚»‚ÌŒãCdispatcher (task.c) ‚ðŽÀs‚·‚é‘O‚É CPUƒƒbƒNó‘Ô‚©‚Š„ž‚݃ƒbƒN‰ðœó‘Ô‚É
    267 ‚µ‚Ä‚¨‚­•K—v‚ª‚ ‚邽‚߁Cstart_dispatch (prc_support.asm)‚É‚¨‚¢‚Ä
    268 PSW ƒŒƒWƒXƒ^‚Ì ISP ‹y‚Ñ IEƒrƒbƒg‚ðCˆÈ‰º‚Ì’l‚ɃZƒbƒg‚·‚éD
    269 
    270 (a) TMIN_INTPRI ‚ª -1 ˆÈ‰º‚©‚ -3 ˆÈã‚̏ꍇ
    271         IPL=-(TMIN_INTPRI)+3 ‚©‚CIEƒrƒbƒg=1
    272 
    273 (b) TMIN_INTPRI==-4‚̏ꍇ
    274         IPL=3 ‚©‚CIEƒrƒbƒg=0
    275 
    276 ‚³‚ç‚ɁCdispatcher ‚Í–³ŒÀƒ‹[ƒv‚ŃŠƒ^[ƒ“‚µ‚È‚¢‚½‚߁CƒWƒƒƒ“ƒv‘O‚É
    277 start_dispatch ‚ŃXƒ^ƒbƒN‚̏‰Šú‰»‚ðs‚Á‚Ä‚¢‚éD
    278 
    279 
    280 (4-7) ƒVƒXƒeƒ€I—¹Žè‡
    281 
    282 ƒVƒXƒeƒ€I—¹Žž‚Í call_exit_kernel (prc_support.asm) ‚ŃXƒ^ƒbƒN‚ð‰Šú‰»‚µC
    283 exit_kernel (startup.c) ‚ðŒÄ‚яo‚·D
    284 
    285 ‚»‚ÌŒãCtarget_exit (target_config.c) ‚Ń^[ƒQƒbƒgˆË‘¶‚̏I—¹‚ðs‚¤D
    286 ‹K’è‚Å‚Í–³ŒÀƒ‹[ƒv‚³‚¹‚é‚Ì‚Ý‚Å“Á‚ɉ½‚à‚µ‚Ä‚¢‚È‚¢D
    287 ‚à‚µCƒ^[ƒQƒbƒgŒÅ—L‚̏I—¹ˆ—‚ðs‚¤•K—v‚ª‚ ‚éê‡Ctarget_exit ‚à‚µ‚­‚Í
    288 ‚»‚±‚©‚çŒÄ‚яo‚³‚ê‚éŠÖ”‚ŏˆ—‚ðŽÀŽ{‚·‚éD
    289 
    290 
    291 (5) ƒ^ƒCƒ}ƒhƒ‰ƒCƒoŠÖ˜A‚̏î•ñ
    292 
    293 Å¬ƒZƒbƒgƒJ[ƒlƒ‹‚ÌŠg’£‹@”\‚Æ‚µ‚ÄŽüŠúƒnƒ“ƒhƒ‰‹y‚уAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª
    294 —pˆÓ‚³‚ê‚Ä‚¢‚éD‚±‚ê‚ç‚ðŽg—p‚·‚邽‚߂ɂ̓^ƒCƒ€ƒeƒBƒbƒN‚ð‹Ÿ‹‹‚·‚é
    295 ƒ^ƒCƒ}ƒhƒ‰ƒCƒo‚ðƒ^[ƒQƒbƒg‚Å—pˆÓ‚·‚é•K—v‚ª‚ ‚éD
    296 
    297 
    298 (6) §ŒÀŽ–€
    299 
    300 EƒJ[ƒlƒ‹‚̃Rƒ“ƒtƒBƒMƒ
    301 ƒŒ[ƒVƒ‡ƒ“
    302         ƒRƒ“ƒtƒBƒMƒ
    303 ƒŒ[ƒVƒ‡ƒ“‚̃pƒX3iƒrƒ‹ƒhŒã‚̍\¬ƒ`ƒFƒbƒNj‚͍s‚Á‚Ä‚¢‚È‚¢B
    304         ‚»‚Ì‚½‚߁Cƒ^ƒXƒNCŠ„ž‚݃nƒ“ƒhƒ‰CŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“CCPU—áŠOƒnƒ“ƒhƒ‰C
    305         ‰Šú‰»ˆ—ƒ‹[ƒ`ƒ“CI—¹ˆ—ƒ‹[ƒ`ƒ“CŽüŠúƒnƒ“ƒhƒ‰CƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª
    306         •s³‚Å‚ ‚éê‡‚ð E_PAR ƒGƒ‰[‚Æ‚µ‚ÄŒŸo‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢D
    307         ]‚Á‚ăAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­Žž‚ɃeƒXƒg‚·‚邱‚Æ‚Å‚±‚ê‚ç‚ُ̈í‚ðŒŸo‚·‚é•K—v‚ª‚ ‚éD
    308 
    309 E•¶ŽšƒR[ƒhC‰üsƒR[ƒh‚ɂ‚¢‚Ä
    310         RL78ƒvƒƒZƒbƒTˆË‘¶•”‚Í Windowsã‚Å“®ì‚·‚éŠJ”­ŠÂ‹« CubeSuite+ ‚ð—p‚¢‚Ä
    311         ŠJ”­‚·‚邱‚Æ‚ð‘O’ñ‚Æ‚µ‚Ä‚¢‚éDTOPPERSƒvƒƒWƒFƒNƒg‚©‚çŒöŠJ‚³‚ê‚éƒ\[ƒXƒpƒbƒP[ƒW‚Í
    312         •¶ŽšƒR[ƒh‚ÍSJIS, ‰üsƒR[ƒh‚Í CR+LF ‚Æ‚µ‚ÄŒöŠJ‚µ‚Ä‚¢‚éD
    313 
    314 
    315 (7) ƒTƒ|[ƒgƒvƒƒZƒbƒT‚̒ljÁ
    316 
    317 (7-1) ƒvƒƒZƒbƒT–ˆ‚Ì’è‹`Ž–€
    318 
    319 ƒvƒƒZƒbƒT–ˆ‚ɈقȂ鎖€‚Æ‚µ‚Ă͈ȉº‚ÌŽ–€‚ª‚ ‚éD
    320         E—LŒø‚ÈŠ„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†CCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚͈̔Í
    321         EŠ„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†CCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ÌŠ„‚è“–‚Ä
    322 
    323 ]‚Á‚āCƒTƒ|[ƒg‚·‚éƒvƒƒZƒbƒT‚ð’ljÁ‚·‚éê‡‚ɂ́C‚Ü‚¸ƒvƒƒZƒbƒT–¼‚ÉŠî‚­
    324 ŽŸ‚̃tƒ@ƒCƒ‹‚ð—pˆÓ‚·‚éD—Ⴆ‚Î RL78/G13 ‚̏ꍇC
     149(4-2-6) CFG_INT でターゲット独自に使用できる割込み属性
     150
     151INT割込みに関してのみ,割込み要求ラインのトリガモードの設定をサポートする.
     152設定できるのは,以下のいずれかである.
     153        ・ポジティブエッジ(トリガ割込み):TA_POSEDGE
     154        ・ネガティブエッジ(トリガ割込み):TA_NEGEDGE
     155        ・両エッジ(トリガ割込み):TA_BOTHEDGE
     156
     157(4-2-7) dis_intとena_intのサポートの有無,その制限事項
     158
     159RL78依存部では dis_int 及び ena_int をサポートする.制限事項は特にない.
     160
     161TOPPERS割込み処理モデルにおける割込み要求禁止フラグは
     162RL78プロセッサの割込みマスク・フラグ・レジスタが対応する.
     163
     164(4-2-8) 多重割込みのサポート
     165
     166多重割込みを許可する.ただし,カーネル管理外の割込みの場合,割込みハンドラの中で
     167PSWレジスタのIEビットを明示的にセットし,割込み許可にしなければ多重割込みが
     168有効とならないため,注意が必要である.
     169
     170また TMIN_INTPRI==-4 の場合,CFG_INT で -4 に設定した割込みは,
     171CPUロック解除状態において同じ優先度 -4 の割込み処理が実行中でも
     172多重に割込みが受け付けられる.これはRL78のプロセッサの仕様によるもので,
     173PSWの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
     192RL78 依存部ではBRK命令によるソフトウェア割込みをCPU例外として扱う.
     193CPU例外ハンドラ番号として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 を用いて呼出し可能であるが,ソフトウェア割込みは厳密には
     212CPU例外に属するものであり,しかもノンマスカブルであるため,
     213システムコールを呼び出すなどの通常の割込みハンドラと同様の使用は避けた
     214方が無難である.
     215
     216
     217(4-4) CPUロック・割込みロック
     218
     219割込みロック状態は,PSWレジスタのIEビットにより実現している.
     220IEビットが0のとき割込みロック状態,1のとき割込みロック解除状態とする.
     221
     222カーネルのCPUロック状態は,TMIN_INTPRI で定義する値により異なる.
     223
     224(4-4-1) TMIN_INTPRI が -4 の場合
     225
     226CPUロック状態は,PSWレジスタのIEビットにより実現する.
     227IEビットが0のときCPUロック状態,1のときCPUロック解除状態とする.
     228この場合,CPUロックと割込みロックは同じである.
     229
     230(4-4-2) TMIN_INTPRI が -1 以上 -3 以下の場合
     231
     232PSWのインサービス・プライオリティフラグ(ISP{1,0})の値を
     233(-TMIN_INTPRI+3) に設定することで実現する.
     234例えば -3 の場合,PSW レジスタの ISP{1,0} が (0,0) に設定される.
     235
     236RL78 では,ISP{1,0} に設定した値「以上(値としては小)」の優先順位を持つ割込みが
     237「許可」される,という仕様になっている.したがって,マスクしたいレベルより
     238一段高い値をセットする必要がある.
     239
     240
     241(4-5) 性能評価用システム時刻の参照に関する規定
     242
     243get_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)において
     265PSW レジスタの 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 は無限ループでリターンしないため,ジャンプ前に
     274start_dispatch でスタックの初期化を行っている.
     275
     276
     277(4-7) システム終了手順
     278
     279システム終了時は call_exit_kernel (prc_support.asm) でスタックを初期化し,
     280exit_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 の場合,
    325320        rl78g13.h
    326                 Š„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†CCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Ì’è‹`
     321                割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の定義
    327322        rl78g13_config.h
    328                 Š„ž‚ݔԍ†‚̍őå’l(INTNO_MAX), —LŒø‚ÈŠ„ž‚ݔԍ†
     323                割込み番号の最大値(INTNO_MAX), 有効な割込み番号
    329324        rl78g13.tf
    330                 ECFG_INT, DEF_INH, ATT_ISR, DEF_EXC ‚È‚Ç‚ÅŽw’è‰Â”\‚ȃpƒ‰ƒ[ƒ^’l‚Ì’è‹`
    331                         E—LŒø‚ÈŠ„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†CCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚͈̔͂̒è‹`
     325                ・CFG_INT, DEF_INH, ATT_ISR, DEF_EXC などで指定可能なパラメータ値の定義
     326                        ・有効な割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の範囲の定義
    332327                                $INTNO_VALID
    333328                                $INHNO_VALID
    334329                                $EXCNO_VALID
    335                         EŠ„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†CCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚͈̔Í(–³Œø’l‚àŠÜ‚Þ)
     330                        ・割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の範囲(無効値も含む)
    336331                                $INTNO_RANGE
    337332                                $INHNO_RANGE
    338333                                $EXCNO_RANGE
    339334
    340 ‚»‚µ‚Ä‚±‚ê‚炪Cƒrƒ‹ƒh‰ß’ö‚ÅŽg—p‚³‚ê‚é‚悤‚ɁCƒ^[ƒQƒbƒgˆË‘¶•”‚̃tƒ@ƒCƒ‹‚©‚ç
    341 ‚±‚ê‚ç‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚éD
    342         rl78g13_config.h ‚̏ꍇCtarget_config.h ‚©‚ç
    343         rl78g13.h ‚̏ꍇC<ƒ^[ƒQƒbƒg–¼Ì>.h ‚©‚ç
    344         rl78g13.tf ‚̏ꍇCƒ^[ƒQƒbƒgˆË‘¶•”‚ÌCFG—pƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹(target.tf) ‚©‚ç
    345                 Etarget.tf ‚ł́Cprc.tf ‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɁCŽg—p‚·‚éƒ^[ƒQƒbƒgƒvƒƒZƒbƒT‚Ì
    346                 @CFG—pƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹(‚±‚̏ꍇCrl78g13.tf)‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚ƁD
    347 
    348 ‚Ü‚½C‚±‚ê‚ç‚̃tƒ@ƒCƒ‹‚©‚çC‚»‚ꂼ‚ê‚̃tƒ@ƒCƒ‹‚ɑΉž‚·‚鋤’Ê•”•ª‚Ì
    349 ƒtƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é
    350         rl78g13_config.h ‚̏ꍇCprc_config.h ‚ð
    351         rl78g13.tf ‚̏ꍇCprc.tf (M16Cƒtƒ@ƒ~ƒŠ‚Ì‘SƒvƒƒZƒbƒT‚É‹¤’Ê‚Ìtf)‚ð
    352 
    353 ã‹LˆÈŠO‚ɁCprc_ ‚Å’è‹`‚³‚ê‚Ä‚¢‚鎖€‚Ì’†‚ɁC‚±‚ê‚܂łƂ͈قȂé’è‹`‚ÌŽd•û‚ð
    354 ‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚à‚Ì‚ªo‚Ä‚­‚é‚©‚à‚µ‚ê‚È‚¢D‚»‚̏ꍇ‚́C’è‹`‚Ì”z’u‚ð
    355 •ÏX‚·‚é•K—v‚ª‚ ‚邽‚߁CƒTƒ|[ƒgƒ[ƒŠƒ“ƒOƒŠƒXƒg‚Ö•ñ’¸‚¯‚ê‚΍K‚¢‚Å‚ ‚éD
    356 •ñ’¸‚¢‚½ê‡CˆÈ~‚̃o[ƒWƒ‡ƒ“ƒAƒbƒv‚ɂđΉž‚·‚é—\’è‚Å‚ ‚éD
    357 
    358 
    359 ›•ÏX—š—ð
    360 2014/8/21  EV‹Kì¬
    361 2014/9/05  ETMIN_INTPRI ‚ª -4 ‚̏ꍇ‚É‚à‘Ήž‚µ‚½‚½‚߁CŠÖ˜A‰ÓŠ‚ð’Ç‹LD
    362 2014/10/14 ETMIN_INTPRI ‚ª -4 ‚̏ꍇ‚Ì‘½dŠ„ž‚݂ɂ‚¢‚Ä’ˆÓŽ–€‚ð’Ç‹L(4-2-2,4-2-8)D
    363            ETMIN_INTPRI ‚ð -4 ‚É‚µ‚½ê‡‚ɃAƒZƒ“ƒuƒ‰‚̃IƒvƒVƒ‡ƒ“‚ð•ÏX‚·‚é
    364            @•K—v‚ª‚È‚­‚È‚Á‚½‚½‚߁Cˆê•”‹LÚ‚ðíœD(4-4-1)
    365            EƒVƒXƒeƒ€‰Šú‰»Žè‡‚ł̏ˆ—“à—e‚ɂ‚¢‚Ä TMIN_INTPRI ‚ª -4 ‚̏ꍇ‚ð’ljÁ(4-6)D
    366 2014/10/15 E‘½dŠ„ž‚Ý‚Ì’ˆÓŽ–€‚ɂ‚¢‚ĈꕔC³(4-2-8)D
    367 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○変更履歴
     3552014/8/21  ・新規作成
     3562014/9/05  ・TMIN_INTPRI が -4 の場合にも対応したため,関連箇所を追記.
     3572014/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).
     3612014/10/15 ・多重割込みの注意事項について一部修正(4-2-8).
     3622015/6/2   ・SSP-1.3.0対応
     363以上
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/rl78g13.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    77 *             Nagoya Municipal Industrial Research Institute, JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    11  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    13  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    14  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    16  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—pŽÒƒ}
    18  *      ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    20  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    22  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    26  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    28  *        ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    30  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    31  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    32  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚Ɓ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プロジェクトを免責すること.
    3329 *
    34  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    35  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    36  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    37  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    38  *  ‚í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     31 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     32 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     33 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     34 *  わない.
    3935 *
    4036 */
    4137
    4238/*
    43  *  RL78/G13‚Ɉˑ¶‚·‚é’è‹`
     39 *  RL78/G13に依存する定義
    4440 */
    4541
     
    4945
    5046/*
    51  *  CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Ì’è‹`
    52  */
    53 #define EXCNO_BRK       0       /* ƒ\ƒtƒgƒEƒFƒAƒxƒNƒ^Š„ž‚Ý–½—ß */
    54 
    55 /*
    56  *  Š„ž‚ݔԍ†‚Ì’è‹`(ƒfƒtƒHƒ‹ƒgƒvƒ‰ƒCƒIƒŠƒeƒB‚Ì’l‚ðŠ„ž‚ݔԍ†‚Æ‚·‚é)
    57  */
    58 #define INTNO_INTWDTI           0       /* ƒEƒHƒbƒ`ƒhƒbƒOEƒ^ƒCƒ} */
    59 #define INTNO_INTLV1            1       /* “dˆ³ŒŸo */
    60 #define INTNO_INTP0             2       /* ’[Žq“ü—̓GƒbƒWŒŸo */
    61 #define INTNO_INTP1             3       /* ’[Žq“ü—̓GƒbƒWŒŸo */
    62 #define INTNO_INTP2             4       /* ’[Žq“ü—̓GƒbƒWŒŸo */
    63 #define INTNO_INTP3             5       /* ’[Žq“ü—̓GƒbƒWŒŸo */
    64 #define INTNO_INTP4             6       /* ’[Žq“ü—̓GƒbƒWŒŸo */
    65 #define INTNO_INTP5             7       /* ’[Žq“ü—̓GƒbƒWŒŸo */
    66 
    67 #define INTNO_INTST2            8       /* UART2 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    68 #define INTNO_INTCSI20          8       /* CSI20 ‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    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‚̒ʐMƒGƒ‰[”­¶ */
    76 #define INTNO_INTTM11H          10      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹11‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    77 
    78 #define INTNO_INTDMA0           11      /* DMA0 ‚Ì“]‘—Š®—¹ */
    79 #define INTNO_INTDMA1           12      /* DMA1 ‚Ì“]‘—Š®—¹ */
    80 
    81 #define INTNO_INTST0            13      /* UART0 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    82 #define INTNO_INTCSI00          13      /* CSI00 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    83 #define INTNO_INTIIC00          13      /* IIC00 ‚Ì“]‘—Š®—¹ */
    84 
    85 #define INTNO_INTSR0            14      /* UART0 ŽóM‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    86 #define INTNO_INTCSI01          14      /* CSI01 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    87 #define INTNO_INTIIC01          14      /* IIC01 ‚Ì“]‘—Š®—¹ */
    88 
    89 #define INTNO_SRE0              15      /* UART0 ŽóM‚̒ʐMƒGƒ‰[”­¶ */
    90 #define INTNO_INTTM01H          15      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹01‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    91 
    92 #define INTNO_INTST1            16      /* UART1 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    93 #define INTNO_INTCSI10          16      /* CSI10 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    94 #define INTNO_INTIIC10          16      /* IIC10 ‚Ì“]‘—Š®—¹ */
    95 
    96 #define INTNO_INTSR1            17      /* UART1 ŽóM‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    97 #define INTNO_INTCSI11          17      /* CSI11 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    98 #define INTNO_INTIIC11          17      /* IIC11 ‚Ì“]‘—Š®—¹ */
    99 
    100 #define INTNO_SRE1              18      /* UART1 ŽóM‚̒ʐMƒGƒ‰[”­¶ */
    101 #define INTNO_INTTM03H          18      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹03‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    102 
    103 #define INTNO_INTIICA0          19      /* IICA0 ’ʐMŠ®—¹ */
    104 #define INTNO_INTTM00           20      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹00‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    105 #define INTNO_INTTM01           21      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹01‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    106 #define INTNO_INTTM02           22      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹02‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    107 #define INTNO_INTTM03           23      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹03‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    108 #define INTNO_INTAD             24      /* A/D•ÏŠ·Š®—¹ */
    109 #define INTNO_INTRTC            25      /* ƒŠƒAƒ‹ƒ^ƒCƒ€EƒNƒƒbƒN‚Ì’èŽüŠúM†/ƒAƒ‰[ƒ€ˆê’vŒŸo */
    110 #define INTNO_INTIT             26      /* 12ƒrƒbƒgEƒCƒ“ƒ^[ƒoƒ‹Eƒ^ƒCƒ}‚̃Cƒ“ƒ^[ƒoƒ‹M†ŒŸo */
    111 #define INTNO_INTKR             27      /* ƒL[EƒŠƒ^[ƒ“EM†ŒŸo */
    112 
    113 #define INTNO_INTST3            28      /* UART3 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    114 #define INTNO_INTCSI30          28      /* CSI30 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    115 #define INTNO_INTIIC30          28      /* IIC30 ‚Ì“]‘—Š®—¹ */
    116 
    117 #define INTNO_INTSR3            29      /* UART3 ŽóM‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    118 #define INTNO_INTCSI31          29      /* CSI31 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    119 #define INTNO_INTIIC31          29      /* IIC31 ‚Ì“]‘—Š®—¹ */
    120 
    121 #define INTNO_INTTM13           30      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹13‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    122 #define INTNO_INTTM04           31      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹04‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    123 #define INTNO_INTTM05           32      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹05‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    124 #define INTNO_INTTM06           33      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹06‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    125 #define INTNO_INTTM07           34      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹07‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    126 
    127 #define INTNO_INTP6             35      /* ’[Žq“ü—̓GƒbƒWŒŸo */
    128 #define INTNO_INTP7             36      /* ’[Žq“ü—̓GƒbƒWŒŸo */
    129 #define INTNO_INTP8             37      /* ’[Žq“ü—̓GƒbƒWŒŸo */
    130 #define INTNO_INTP9             38      /* ’[Žq“ü—̓GƒbƒWŒŸo */
    131 #define INTNO_INTP10            39      /* ’[Žq“ü—̓GƒbƒWŒŸo */
    132 #define INTNO_INTP11            40      /* ’[Žq“ü—̓GƒbƒWŒŸo */
    133 
    134 #define INTNO_INTTM10           41      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹10‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    135 #define INTNO_INTTM11           42      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹11‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    136 #define INTNO_INTTM12           43      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹12‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    137 
    138 #define INTNO_SRE3              44      /* UART3 ŽóM‚̒ʐMƒGƒ‰[”­¶ */
    139 #define INTNO_INTTM13H          44      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹13‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    140 
    141 #define INTNO_INTMD             45      /* œŽZ–½—ߏI—¹/Ï˜a‰‰ŽZŒ‹‰Ê‚̃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ƒ`ƒƒƒlƒ‹14‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    147 #define INTNO_INTTM15           51      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹15‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    148 #define INTNO_INTTM16           52      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹16‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    149 #define INTNO_INTTM17           53      /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹17‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    150 
    151 
    152 /*
    153  *  Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì’è‹`
    154  */
    155 #define INHNO_INTWDTI           INTNO_INTWDTI           /* ƒEƒHƒbƒ`ƒhƒbƒOEƒ^ƒCƒ} */
    156 #define INHNO_INTLV1            INTNO_INTLV1            /* “dˆ³ŒŸo */
    157 #define INHNO_INTP0             INTNO_INTP0             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    158 #define INHNO_INTP1             INTNO_INTP1             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    159 #define INHNO_INTP2             INTNO_INTP2             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    160 #define INHNO_INTP3             INTNO_INTP3             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    161 #define INHNO_INTP4             INTNO_INTP4             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    162 #define INHNO_INTP5             INTNO_INTP5             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    163                        
    164 #define INHNO_INTST2            INTNO_INTST2            /* UART2 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    165 #define INHNO_INTCSI20          INTNO_INTCSI20          /* CSI20 ‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    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‚̒ʐMƒGƒ‰[”­¶ */
    173 #define INHNO_INTTM11H          INTNO_INTTM11H          /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹11‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒ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‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    179 #define INHNO_INTCSI00          INTNO_INTCSI00          /* CSI00 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    180 #define INHNO_INTIIC00          INTNO_INTIIC00          /* IIC00 ‚Ì“]‘—Š®—¹ */
    181                        
    182 #define INHNO_INTSR0            INTNO_INTSR0            /* UART0 ŽóM‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    183 #define INHNO_INTCSI01          INTNO_INTCSI01          /* CSI01 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    184 #define INHNO_INTIIC01          INTNO_INTIIC01          /* IIC01 ‚Ì“]‘—Š®—¹ */
    185                        
    186 #define INHNO_SRE0              INTNO_SRE0              /* UART0 ŽóM‚̒ʐMƒGƒ‰[”­¶ */
    187 #define INHNO_INTTM01H          INTNO_INTTM01H          /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹01‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    188                        
    189 #define INHNO_INTST1            INTNO_INTST1            /* UART1 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    190 #define INHNO_INTCSI10          INTNO_INTCSI10          /* CSI10 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    191 #define INHNO_INTIIC10          INTNO_INTIIC10          /* IIC10 ‚Ì“]‘—Š®—¹ */
    192                        
    193 #define INHNO_INTSR1            INTNO_INTSR1            /* UART1 ŽóM‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    194 #define INHNO_INTCSI11          INTNO_INTCSI11          /* CSI11 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    195 #define INHNO_INTIIC11          INTNO_INTIIC11          /* IIC11 ‚Ì“]‘—Š®—¹ */
    196                        
    197 #define INHNO_SRE1              INTNO_SRE1              /* UART1 ŽóM‚̒ʐMƒGƒ‰[”­¶ */
    198 #define INHNO_INTTM03H          INTNO_INTTM03H          /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹03‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    199                        
    200 #define INHNO_INTIICA0          INTNO_INTIICA0          /* IICA0 ’ʐMŠ®—¹ */
    201 #define INHNO_INTTM00           INTNO_INTTM00           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹00‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    202 #define INHNO_INTTM01           INTNO_INTTM01           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹01‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    203 #define INHNO_INTTM02           INTNO_INTTM02           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹02‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    204 #define INHNO_INTTM03           INTNO_INTTM03           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹03‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    205 #define INHNO_INTAD             INTNO_INTAD             /* A/D•ÏŠ·Š®—¹ */
    206 #define INHNO_INTRTC            INTNO_INTRTC            /* ƒŠƒAƒ‹ƒ^ƒCƒ€EƒNƒƒbƒN‚Ì’èŽüŠúM†/ƒAƒ‰[ƒ€ˆê’vŒŸo */
    207 #define INHNO_INTIT             INTNO_INTIT             /* 12ƒrƒbƒgEƒCƒ“ƒ^[ƒoƒ‹Eƒ^ƒCƒ}‚̃Cƒ“ƒ^[ƒoƒ‹M†ŒŸo */
    208 #define INHNO_INTKR             INTNO_INTKR             /* ƒL[EƒŠƒ^[ƒ“EM†ŒŸo */
    209                        
    210 #define INHNO_INTST3            INTNO_INTST3            /* UART3 ‘—M‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    211 #define INHNO_INTCSI30          INTNO_INTCSI30          /* CSI30 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    212 #define INHNO_INTIIC30          INTNO_INTIIC30          /* IIC30 ‚Ì“]‘—Š®—¹ */
    213                        
    214 #define INHNO_INTSR3            INTNO_INTSR3            /* UART3 ŽóM‚Ì“]‘—Š®—¹Cƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    215 #define INHNO_INTCSI31          INTNO_INTCSI31          /* CSI31 ‚Ì“]‘—Š®—¹, ƒoƒbƒtƒ@‹ó‚«Š„ž‚Ý */
    216 #define INHNO_INTIIC31          INTNO_INTIIC31          /* IIC31 ‚Ì“]‘—Š®—¹ */
    217                        
    218 #define INHNO_INTTM13           INTNO_INTTM13           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹13‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    219 #define INHNO_INTTM04           INTNO_INTTM04           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹04‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    220 #define INHNO_INTTM05           INTNO_INTTM05           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹05‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    221 #define INHNO_INTTM06           INTNO_INTTM06           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹06‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    222 #define INHNO_INTTM07           INTNO_INTTM07           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹07‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    223                        
    224 #define INHNO_INTP6             INTNO_INTP6             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    225 #define INHNO_INTP7             INTNO_INTP7             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    226 #define INHNO_INTP8             INTNO_INTP8             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    227 #define INHNO_INTP9             INTNO_INTP9             /* ’[Žq“ü—̓GƒbƒWŒŸo */
    228 #define INHNO_INTP10            INTNO_INTP10            /* ’[Žq“ü—̓GƒbƒWŒŸo */
    229 #define INHNO_INTP11            INTNO_INTP11            /* ’[Žq“ü—̓GƒbƒWŒŸo */
    230                        
    231 #define INHNO_INTTM10           INTNO_INTTM10           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹10‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    232 #define INHNO_INTTM11           INTNO_INTTM11           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹11‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(16ƒrƒbƒg/‰ºˆÊ8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    233 #define INHNO_INTTM12           INTNO_INTTM12           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹12‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    234                        
    235 #define INHNO_SRE3              INTNO_SRE3              /* UART3 ŽóM‚̒ʐMƒGƒ‰[”­¶ */
    236 #define INHNO_INTTM13H          INTNO_INTTM13H          /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹13‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹(8ƒrƒbƒgƒ^ƒCƒ}“®ìŽž) */
    237                        
    238 #define INHNO_INTMD             INTNO_INTMD             /* œŽZ–½—ߏI—¹/Ï˜a‰‰ŽZŒ‹‰Ê‚̃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ƒ`ƒƒƒlƒ‹14‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    244 #define INHNO_INTTM15           INTNO_INTTM15           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹15‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    245 #define INHNO_INTTM16           INTNO_INTTM16           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹16‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    246 #define INHNO_INTTM17           INTNO_INTTM17           /* ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹17‚̃JƒEƒ“ƒgŠ®—¹‚Ü‚½‚̓Lƒƒƒvƒ`ƒƒŠ®—¹ */
    247 
    248 
    249 /*
    250  *  Š„ž‚ݐ§ŒäƒŒƒWƒXƒ^’è‹`
    251  */
    252 #define TADR_IF0L       0xfffe0         // Š„ž‚Ý—v‹ƒtƒ‰ƒOEƒŒƒWƒXƒ^
    253 #define TADR_IF2L       0xfffd0         // Š„ž‚Ý—v‹ƒtƒ‰ƒOEƒŒƒWƒXƒ^
    254 #define TADR_MK0L       0xfffe4         // Š„ž‚݃}ƒXƒNEƒtƒ‰ƒOEƒŒƒWƒXƒ^
    255 #define TADR_MK2L       0xfffd4         // Š„ž‚݃}ƒXƒNEƒtƒ‰ƒOEƒŒƒWƒXƒ^
    256 #define TADR_PR00L      0xfffe8         // —Dæ‡ˆÊŽw’èƒtƒ‰ƒOEƒŒƒWƒXƒ^
    257 #define TADR_PR02L      0xfffd8         // —Dæ‡ˆÊŽw’èƒtƒ‰ƒOEƒŒƒWƒXƒ^
    258 #define TADR_EGP0       0xfff38         // ŠO•”Š„ž‚Ý—§‚¿ã‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^
    259 #define TADR_EGP1       0xfff3a         // ŠO•”Š„ž‚Ý—§‚¿ã‚ª‚èƒGƒbƒW‹–‰ÂƒŒƒWƒXƒ^
    260 
    261 
    262 #define TADR_PER0       0xf00f0         // Žü•ÓƒCƒl[ƒuƒ‹ƒŒƒWƒXƒ^0
    263 
    264 #define TBIT_PER0_TAU0EN        UINT8_C(0x01)   // ƒ^ƒCƒ}EƒAƒŒƒCEƒ†ƒjƒbƒg0‚Ì“ü—̓NƒƒbƒN§Œä
    265 #define TBIT_PER0_SAU0EN        UINT8_C(0x04)   // ƒVƒŠƒAƒ‹EƒAƒŒƒCEƒ†ƒjƒbƒg0‚Ì“ü—̓NƒƒbƒN§Œä
    266 
    267 /*
    268  *  ƒNƒƒbƒN”­¶‰ñ˜H
    269  */
    270 #define TADR_CMC        0xfffa0         // ƒNƒƒbƒN“®ìƒ‚[ƒh§ŒäƒŒƒWƒXƒ^
    271 #define TADR_CKC        0xfffa4         // ƒNƒƒbƒN“®ìƒ‚[ƒh§ŒäƒŒƒWƒXƒ^
    272 #define TADR_CSC        0xfffa1         // ƒNƒƒbƒN“®ìƒXƒe[ƒ^ƒX§ŒäƒŒƒWƒXƒ^
    273 #define TADR_OSTC       0xfffa2         // ”­UˆÀ’莞ŠÔƒJƒEƒ“ƒ^ó‘ÔƒŒƒWƒXƒ^
    274 
    275 /*
    276  *  ƒ^ƒCƒ}EƒAƒŒƒCŠÖ˜AƒŒƒWƒXƒ^(ƒVƒXƒeƒ€ƒeƒBƒbƒN—p)
    277  */
    278 #define TADR_TPS0       0xf01b6         // ƒ^ƒCƒ}EƒNƒƒbƒN‘I‘ðƒŒƒWƒXƒ^0
    279 #define TADR_TMR00      0xf0190         // ƒ^ƒCƒ}Eƒ‚[ƒhEƒŒƒWƒXƒ^00
    280 #define TADR_TDR00      0xfff18         // ƒ^ƒCƒ}Eƒf[ƒ^EƒŒƒWƒXƒ^00
    281 #define TADR_TS0        0xf01b2         // ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹’âŽ~ƒŒƒWƒXƒ^0
    282 #define TADR_TT0        0xf01b4         // ƒ^ƒCƒ}Eƒ`ƒƒƒlƒ‹’âŽ~ƒŒƒWƒXƒ^0
     47 *  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
    283279
    284280#define TBIT_TTm_TTm0   UINT16_C(0x0001)
     
    288284
    289285/*
    290  *  ƒVƒŠƒAƒ‹EƒAƒŒƒCŠÖ˜AƒŒƒWƒXƒ^
    291  */
    292 #define TADR_SPS0       0xf0126         // ƒVƒŠƒAƒ‹ƒNƒƒbƒN‘I‘ðƒŒƒWƒXƒ^
    293 #define TADR_SMR00      0xf0110         // ƒVƒŠƒAƒ‹ƒ‚[ƒhƒŒƒWƒXƒ^
    294 #define TADR_SMR01      0xf0112         // ƒVƒŠƒAƒ‹ƒ‚[ƒhƒŒƒWƒXƒ^
    295 
    296 #define TADR_SCR00      0xf0118         // ƒVƒŠƒAƒ‹’ʐM“®ìÝ’背ƒWƒXƒ^
    297 #define TADR_SCR01      0xf011a         // ƒVƒŠƒAƒ‹’ʐM“®ìÝ’背ƒWƒXƒ^
    298 
    299 #define TADR_SDR00      0xfff10         // ƒVƒŠƒAƒ‹ƒf[ƒ^ƒŒƒWƒXƒ^0
    300 #define TADR_SDR01      0xfff12         // ƒVƒŠƒAƒ‹ƒf[ƒ^ƒŒƒWƒXƒ^0
    301 
    302 #define TADR_SOL0       0xf0134         // ƒVƒŠƒAƒ‹o—̓Œƒxƒ‹ƒŒƒWƒXƒ^0
    303 #define TADR_SO0        0xf0128         // ƒVƒŠƒAƒ‹o—̓ŒƒWƒXƒ^0
    304 #define TADR_SOE0       0xf012a         // ƒVƒŠƒAƒ‹o—Í‹–‰ÂƒŒƒWƒXƒ^0
    305 #define TADR_SSR00      0xf0100         // ƒVƒŠƒAƒ‹ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^00
    306 #define TADR_SSR01      0xf0102         // ƒVƒŠƒAƒ‹ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^01
    307 
    308 #define TADR_SS0        0xf0122         // ƒVƒŠƒAƒ‹ƒ`ƒƒƒlƒ‹ŠJŽnƒŒƒWƒXƒ^0
    309 #define TADR_ST0        0xf0124         // ƒVƒŠƒAƒ‹ƒ`ƒƒƒlƒ‹’âŽ~ƒŒƒWƒXƒ^0
    310 
    311 #define TADR_SIR01      0xf010a         // ƒVƒŠƒAƒ‹Eƒtƒ‰ƒOEƒNƒŠƒAEƒgƒŠƒKEƒŒƒWƒXƒ^01
    312 
    313 #define TADR_NFEN0      0xf0070         // ƒmƒCƒYEƒtƒBƒ‹ƒ^‹–‰ÂƒŒƒWƒXƒ^0
    314 
    315 #define TBIT_SSRmn_BFF  UINT16_C(0x0020)        // ƒ`ƒƒƒlƒ‹n‚̃oƒbƒtƒ@ƒŒƒWƒXƒ^ó‘Ô•\Ž¦ƒtƒ‰ƒO
    316 #define TBIT_SSRmn_TSF  UINT16_C(0x0040)        // ƒ`ƒƒƒlƒ‹n‚̒ʐMó‘Ô•\Ž¦ƒtƒ‰ƒO
    317 #define TBIT_SSRmnL_BFF UINT8_C(0x20)   // ƒ`ƒƒƒlƒ‹n‚̃oƒbƒtƒ@ƒŒƒWƒXƒ^ó‘Ô•\Ž¦ƒtƒ‰ƒO
    318 #define TBIT_SSRmnL_TSF UINT8_C(0x40)   // ƒ`ƒƒƒlƒ‹n‚̒ʐMó‘Ô•\Ž¦ƒtƒ‰ƒO
    319 
    320 #define TBIT_SCRmn_TXEmn        UINT16_C(0x8000)        // ƒ`ƒƒƒlƒ‹n‚Ì“®ìƒ‚[ƒh(‘—M)
    321 #define TBIT_SCRmn_RXEmn        UINT16_C(0x4000)        // ƒ`ƒƒƒlƒ‹n‚Ì“®ìƒ‚[ƒh(ŽóM)
    322 
    323 /*
    324  * I/Oƒ|[ƒg
     286 *  シリアル・アレイ関連レジスタ
     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ポート
    325321 */
    326322#define TADR_PU0        0xf0030
     
    338334
    339335/*
    340  *  ”Ä—pƒ|[ƒgƒŒƒWƒXƒ^
     336 *  汎用ポートレジスタ
    341337 */
    342338#define TBIT_BIT0       0x01
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/rl78g13.tf

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    11$
    2 $               ƒ`ƒbƒvˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRL78/G13—pj
     2$               チップ依存テンプレート(RL78/G13用)
    33$
    44
    55$
    6 Š„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì’è‹`
     6割込み番号と割込みハンドラ番号の定義
    77$
    8 $  RL78‚Å‚ÍŠ„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ª1‘Î1‚őΉž‚·‚éD
    9 ƒfƒtƒHƒ‹ƒgƒvƒ‰ƒCƒIƒŠƒeƒB‚ðŽ‚Âƒ}ƒXƒJƒuƒ‹Š„ž‚Ý‚ª‘ΏۂƂȂéD
    10 ƒfƒtƒHƒ‹ƒgƒvƒ‰ƒCƒIƒŠƒeƒB‚̔ԍ†‚ðŠ„ž‚ݔԍ†‚Æ‚·‚éD
     8$  RL78では割込み番号と割込みハンドラ番号が1対1で対応する.
     9デフォルトプライオリティを持つマスカブル割込みが対象となる.
     10デフォルトプライオリティの番号を割込み番号とする.
    1111$
    1212
     
    1616
    1717$
    18 —áŠO”ԍ†‚Ì’è‹`
     18例外番号の定義
    1919$
    20 —áŠO‚Æ‚µ‚Ä BRK Š„ž‚Ý‚Ì‚Ý‚Æ‚·‚éD
     20例外として BRK 割込みのみとする.
    2121$
    2222
     
    2424
    2525$
    26 $  INTŠ„ž‚݂̔ԍ†
    27 $    INTP0--INTP11 (’[Žq“ü—̓GƒbƒWŒŸoŠ„ž‚Ý)‚ªŠY“–
     26$  INT割込みの番号
     27$    INTP0--INTP11 (端子入力エッジ検出割込み)が該当
    2828$
    2929
     
    3131
    3232$
    33 Š„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†C—áŠO”ԍ†‚͈̔Í
     33割込み番号,割込みハンドラ番号,例外番号の範囲
    3434$
    3535
     
    3939
    4040$
    41 ƒvƒƒZƒbƒTˆË‘¶‚̃eƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹
     41プロセッサ依存のテンプレートファイル
    4242$
    4343$INCLUDE"rl78_ca78k0r/prc.tf"$
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/rl78g13_config.h

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    77 *             Nagoya Municipal Industrial Research Institute, JAPAN
    88 *
    9  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    10  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    11  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    12  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    13  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    14  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    15  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    16  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    17 ƒƒ“ƒgi—˜—pŽÒƒ}
    18  *      ƒjƒ
    19 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    20  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    21  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    22  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    23  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    24 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    25 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    26  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    27  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    28  *        ‚·‚邱‚ƁD
    29  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    30  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    31  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    32  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚Ɓ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プロジェクトを免責すること.
    3329 *
    34  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    35  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    36  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    37  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    38  *  ‚í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     31 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     32 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     33 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     34 *  わない.
    3935 *
    4036 */
    4137
    4238/*
    43  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    44 [ƒ‹iRL78/G13—pj
     39 *              プロセッサ依存モジュール(RL78/G13用)
    4540 *
    46  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.h ‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD
    47  *  ‘¼‚̃tƒ@ƒCƒ‹‚©‚ç’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     41 *  このインクルードファイルは,target_config.h のみからインクルードされる.
     42 *  他のファイルから直接インクルードしてはならない.
    4843 */
    4944
     
    5348
    5449/*
    55  *  Š„ž‚ݔԍ†‚̍őå’l
     50 *  割込み番号の最大値
    5651 */
    5752#define INTNO_MAX       UINT_C(53)
    5853
    5954/*
    60  *  Žw’芄ž‚ݔԍ†‚ª—LŒø‚ÈŠ„ž‚ݔԍ†‚͈̔͂ɂ ‚é‚©‚Ç‚¤‚©‚Ì”»’è
     55 *  指定割込み番号が有効な割込み番号の範囲にあるかどうかの判定
    6156 */
    6257#define VALID_INTNO(intno) \
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/segment_e.asm

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    11;
    2 ; ƒZƒOƒƒ“ƒg’è‹`
    3 ;   ƒZƒOƒƒ“ƒg––”öƒAƒhƒŒƒX‚ð’è‹`‚·‚邽‚߁CƒŠƒ“ƒN‡˜‚ðˆê”ԍŌã‚É‚·‚é
     2; セグメント定義
     3;   セグメント末尾アドレスを定義するため,リンク順序を一番最後にする
    44;
    55
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/segment_s.asm

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    11;
    2 ; ƒZƒOƒƒ“ƒg’è‹`
    3 ;   ƒZƒOƒƒ“ƒgæ“ªƒAƒhƒŒƒX‚ð’è‹`‚·‚邽‚߁CƒŠƒ“ƒN‡˜‚ðˆê”ԍŏ‰‚É‚·‚é
     2; セグメント定義
     3;   セグメント先頭アドレスを定義するため,リンク順序を一番最初にする
    44;
    55
    66;
    7 ; ƒOƒ[ƒoƒ‹ƒVƒ“ƒ{ƒ‹
     7; グローバルシンボル
    88;
    99        extrn   _start
     
    1414
    1515;
    16 ; ƒZƒOƒƒ“ƒg’è‹`
     16; セグメント定義
    1717;
    1818VECTOR  CSEG
     
    2323;OCDWORK        CSEG
    2424
    25 ; ƒIƒvƒVƒ‡ƒ“ƒoƒCƒgÝ’è
     25; オプションバイト設定
    2626OPT     CSEG    OPT_BYTE
    27         db      06eh    ; WDT: ƒCƒ“ƒ^[ƒoƒ‹Š„ž‚Ý‚ðŽg—p‚µ‚È‚¢CƒJƒEƒ“ƒ^“®ì‹ÖŽ~
    28         db      0ffh    ; LVD: ƒIƒt
    29         db      0efh    ; HSƒ‚[ƒhCƒIƒ“ƒ`ƒbƒvƒIƒVƒŒ[ƒ^ 1MHz
    30         db      085h    ; ƒIƒ“ƒ`ƒbƒvƒfƒoƒbƒO‹–‰Â, ”FØŽ¸”sŽž‚Ƀtƒ‰ƒbƒVƒ
    31 Á‹Ž‚µ‚È‚¢
     27        db      06eh    ; WDT: インターバル割込みを使用しない,カウンタ動作禁止
     28        db      0ffh    ; LVD: オフ
     29        db      0efh    ; HSモード,オンチップオシレータ 1MHz
     30        db      085h    ; オンチップデバッグ許可, 認証失敗時にフラッシュ消去しない
    3231
    3332; ROM
  • ssp_qb_r5f100le_cs/trunk/arch/rl78_ca78k0r/start.asm

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    66;             Nagoya Municipal Industrial Research Institute, JAPAN
    77;
    8 ;  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    9 ;  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    10 ;  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    11 ;  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    12 ;      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    13 ;      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 ;  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    15 ;      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    16 ƒƒ“ƒgi—˜—pŽÒƒ}
    17 ;      ƒjƒ
    18 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    19 ;      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    20 ;  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    21 ;      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    22 ;    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    23 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    24 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    25 ;        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    26 ;    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    27 ;        ‚·‚邱‚ƁD
    28 ;  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    29 ;      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    30 ;      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    31 ;      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    32 ;
    33 ;  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    34 ;  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    35 ;  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    36 ;  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    37 ;  ‚í‚È‚¢D
    38 ;
    39 ;
    40 
    41 ;
    42 ; ƒXƒ^[ƒgƒAƒbƒvƒ‹[ƒ`ƒ“
    43 ;    ƒvƒƒZƒbƒT‚ÍS2ƒRƒACƒ~ƒfƒBƒAƒ€ƒ‚ƒfƒ‹‚ð‘ΏۂƂ·‚é
    44 ;
    45 
    46 ;
    47 ; ƒOƒ[ƒoƒ‹ƒVƒ“ƒ{ƒ‹
    48 ;
    49         ; ƒZƒOƒƒ“ƒgæ“ªƒAƒhƒŒƒX(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)
    5046        extrn   _@R_INIT, _@R_INIS, _@RLINIT
    5147        extrn   _@INIT, _@DATA, _@INIS, _@DATS, _@INITL, _@DATAL
    5248
    53         ; ƒZƒOƒƒ“ƒg––”öƒAƒhƒŒƒX(segment_e.asm)
     49        ; セグメント末尾アドレス(segment_e.asm)
    5450        extrn   _?R_INIT, _?R_INIS, _?RLINIT
    5551        extrn   _?INIT, _?DATA, _?INIS, _?DATS, _?INITL, _?DATAL
    5652
    57         ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̏‰Šú’l(kernel_cfg.c)
     53        ; スタックポインタの初期値(kernel_cfg.c)
    5854        extrn   __kernel_istkpt
    5955       
    60         ; ƒJ[ƒlƒ‹ŠJŽnˆ—(kernel/startup.c)
     56        ; カーネル開始処理(kernel/startup.c)
    6157        extrn   _sta_ker
    6258       
    63         ; saddr—̈æ‚̐擪ƒAƒhƒŒƒXCƒTƒCƒYiƒŠƒ“ƒJ‚Å’è‹`j
     59        ; saddr領域の先頭アドレス,サイズ(リンカで定義)
    6460        extrn   _@SADBEG, _@SADSIZ
    6561       
    66         ; ƒGƒ“ƒgƒŠƒ|ƒCƒ“ƒg
     62        ; エントリポイント
    6763        public  _start
    6864
    6965
    7066;
    71 ; ’萔’è‹`
    72 ;
    73         ; MAA(PMC‚̃rƒbƒg0): 0 ‚Ü‚½‚Í 1
    74         ;   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へミラー
    7672INIT_MAA        EQU     0
    7773
    7874;
    79 ; ƒ}ƒNƒ’è‹`
    80 ;
    81         ; ƒZƒOƒƒ“ƒgŠÔ‚̃f[ƒ^ƒRƒs[(far‚ÌROM‚©‚çnear‚ÌRAM‚ցCsrc‚̃TƒCƒY•ª)
     75; マクロ定義
     76;
     77        ; セグメント間のデータコピー(farのROMからnearのRAMへ,srcのサイズ分)
    8278copy_seg        macro src, dst
    8379        local   _1, _2
     
    9793        endm
    9894
    99         ; ƒZƒOƒƒ“ƒgŠÔ‚̃f[ƒ^ƒRƒs[(far‚ÌROM‚©‚çfar‚ÌRAM‚ցCsrc‚̃TƒCƒY•ª)
     95        ; セグメント間のデータコピー(farのROMからfarのRAMへ,srcのサイズ分)
    10096copy_fseg       MACRO   src, dst
    10197        local   _1, _2
     
    116112        endm
    117113
    118         ; ƒZƒOƒƒ“ƒg‚̃f[ƒ^ƒNƒŠƒA(near RAM)
     114        ; セグメントのデータクリア(near RAM)
    119115clear_seg       MACRO   dst
    120116        local   _1, _2
     
    131127        endm
    132128
    133         ; ƒZƒOƒƒ“ƒg‚̃f[ƒ^ƒNƒŠƒA(far RAM)
     129        ; セグメントのデータクリア(far RAM)
    134130clear_fseg      MACRO   dst
    135131        local _1, _2
     
    147143
    148144;
    149 ; ƒVƒXƒeƒ€ŠJŽn
     145; システム開始
    150146;
    151147@@CODE  CSEG    BASE
     
    153149
    154150        ;
    155         ; PSW‚̐ݒè
    156         ;
    157     di                  ; Š„ž‚Ý‹ÖŽ~(Š„ž‚݃ƒbƒN‘Š“–‚ÌŠ„ž‚Ý‹ÖŽ~)
    158         sel     rb0     ; ƒŒƒWƒXƒ^ƒoƒ“ƒN(RB0)
    159        
    160         ;
    161         ; ƒ~ƒ‰[—̈æ‚̐ݒè
     151        ; PSWの設定
     152        ;
     153    di                  ; 割込み禁止(割込みロック相当の割込み禁止)
     154        sel     rb0     ; レジスタバンク(RB0)
     155       
     156        ;
     157        ; ミラー領域の設定
    162158        ;
    163159        mov     a, #INIT_MAA
     
    166162
    167163        ;
    168         ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚̐ݒè
     164        ; スタックポインタの設定
    169165        ;
    170166        movw    de, #__kernel_istkpt
     
    174170
    175171        ;
    176         ; _hardware_init_hook ‚̌Ăяo‚µ(‚à‚µ‚ ‚ê‚Î)
     172        ; _hardware_init_hook の呼び出し(もしあれば)
    177173        ;
    178174        ;call   !!_hardware_init_hook
    179175
    180176        ;
    181         ; ƒƒ‚ƒŠ‰Šú‰»
     177        ; メモリ初期化
    182178        ;
    183179        copy_seg        R_INIS, INIS
     
    189185        clear_fseg      DATAL
    190186
    191         ;  saddr—̈æ‚̏‰Šú‰»
     187        ;  saddr領域の初期化
    192188        mov     b,#_@SADSIZ
    193189        clrw    ax
     
    199195
    200196        ;
    201         ; _sofrware_init_hook ‚̌Ăяo‚µ(‚à‚µ‚ ‚ê‚Î)
     197        ; _sofrware_init_hook の呼び出し(もしあれば)
    202198        ;
    203199        ;call   !!_software_init_hook
    204200       
    205201        ;
    206         ; sta_ker (kernel/startup.c) ‚̌Ăяo‚µ
     202        ; sta_ker (kernel/startup.c) の呼び出し
    207203        ;
    208204        br      !!_sta_ker
Note: See TracChangeset for help on using the changeset viewer.