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

ファイルの mime-type 変更

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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以上
Note: See TracChangeset for help on using the changeset viewer.