Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (8 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

Location:
UsbWattMeter/trunk/asp_dcre/arch
Files:
29 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/asp_dcre/arch/ccrx/tool_stddef.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    99 *  Copyright (C) 2007-2010 by Witz Corporation, JAPAN
    1010 *
    11  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    13  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    15  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    16  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    18  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—p
    20  *      ŽÒƒ}ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    22  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    24  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    25  *      ‚ƁD
    26  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    29  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    31  *        •ñ‚·‚邱‚ƁD
    32  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    33  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    34  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    35  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    36  *      –Ɛӂ·‚邱‚ƁD
     11 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     12 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     13 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     14 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     15 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     16 *      スコード中に含まれていること.
     17 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     18 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     19 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     20 *      の無保証規定を掲載すること.
     21 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     22 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     23 *      と.
     24 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     25 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     26 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     27 *        報告すること.
     28 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     29 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     30 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     31 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    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
    41  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    42  *  ‚̐ӔC‚𕉂í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  @(#) $Id$
     
    4642
    4743/*
    48  *  t_stddef.h‚ÌŠJ”­ŠÂ‹«ˆË‘¶•”iƒ‹ƒlƒTƒX RXƒc[ƒ‹ƒ`ƒFƒCƒ“—pj
     44 *  t_stddef.hの開発環境依存部(ルネサス RXツールチェイン用)
    4945 *
    50  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ct_stddef.h ‚̐擪‚ŃCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD
    51  *  ‘¼‚̃tƒ@ƒCƒ‹‚©‚ç‚Í’¼ÚƒCƒ“ƒNƒ‹[ƒh‚·‚邱‚Æ‚Í‚È‚¢D‘¼‚̃Cƒ“ƒNƒ‹[ƒh
    52  *  ƒtƒ@ƒCƒ‹‚ɐ旧‚Á‚ďˆ—‚³‚ê‚邽‚߁C‘¼‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚Ɉˑ¶‚µ
    53  *  ‚Ä‚Í‚È‚ç‚È‚¢D
     46 *  このインクルードファイルは,t_stddef.h の先頭でインクルードされる.
     47 *  他のファイルからは直接インクルードすることはない.他のインクルード
     48 *  ファイルに先立って処理されるため,他のインクルードファイルに依存し
     49 *  てはならない.
    5450 */
    5551
     
    5854
    5955/*
    60  *  ƒRƒ“ƒpƒCƒ‰‚ÌŠg’£‹@”\‚Ì‚½‚߂̃}ƒNƒ’è‹`
     56 *  コンパイラの拡張機能のためのマクロ定義
    6157 */
    6258/*
    63  *  inline Ž¯•ÊŽq‚ÍŠO•”’è‹`‚𐶐¬‚µ‚È‚¢.
     59 *  inline 識別子は外部定義を生成しない.
    6460 */
    6561#define Inline          static inline
    6662
    6763/*
    68  *  ƒCƒ“ƒ‰ƒCƒ“ƒAƒZƒ“ƒuƒ‰‚Í–{ƒRƒ“ƒpƒCƒ‰‚Å‚Í
    69  *  #pragma inline_asm‚݂̂̃Tƒ|[ƒg‚ƂȂ邽‚ß,
    70  *  asm/Asm’è‹`‚͍s‚í‚È‚¢.
     64 *  インラインアセンブラは本コンパイラでは
     65 *  #pragma inline_asmのみのサポートとなるため,
     66 *  asm/Asm定義は行わない.
    7167 */
    7268
    7369/*
    74  *  NoReturn / alignof‚Í–{ƒRƒ“ƒpƒCƒ‰‚ł̓Tƒ|[ƒg‚³‚ê‚È‚¢.
    75  *  offsetof‚Ístddef.h‚Ì’è‹`‚ð—˜—p‚·‚é.
     70 *  NoReturn / alignofは本コンパイラではサポートされない.
     71 *  offsetofはstddef.hの定義を利用する.
    7672 */
    7773#define NoReturn
     
    7975
    8076/*
    81  *  ŠJ”­ŠÂ‹«‚Ì•W€ƒCƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚Ì—˜—p
     77 *  開発環境の標準インクルードファイルの利用
    8278 *
    83  *  NULL‚Ì’è‹`‚ðstddef.h‚©‚çCINT_MAXCINT_MINCUINT_MAXCLONG_MAXC
    84  *  LONG_MINCULONG_MAXCCHAR_BIT‚Ì’è‹`‚ðlimits.h‚©‚çŽæ‚荞‚ށD
     79 *  NULLの定義をstddef.hから,INT_MAX,INT_MIN,UINT_MAX,LONG_MAX,
     80 *  LONG_MIN,ULONG_MAX,CHAR_BITの定義をlimits.hから取り込む.
    8581 *
    86  *  C++/EC++‚ł́C•W€Žd—lã‚Í‚±‚ê‚ç‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚ª—pˆÓ‚³‚ê‚Ä
    87  *  ‚¢‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚Ì‚Å’ˆÓ‚ª•K—v‚Å‚ ‚éi‚Ù‚Æ‚ñ‚Ç‚ÌŠJ”­ŠÂ‹«‚Å—pˆÓ‚³‚ê
    88  *  ‚Ä‚¢‚éjD
     82 *  C++/EC++では,標準仕様上はこれらのインクルードファイルが用意されて
     83 *  いるとは限らないので注意が必要である(ほとんどの開発環境で用意され
     84 *  ている).
    8985 */
    9086#ifndef TOPPERS_MACRO_ONLY
     
    9591
    9692/*
    97  *  ƒRƒ“ƒpƒCƒ‰ˆË‘¶‚̃f[ƒ^Œ^‚Ì’è‹`
     93 *  コンパイラ依存のデータ型の定義
    9894 *
    99  *  stdint.h‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é
     95 *  stdint.hをインクルードする
    10096 */
    10197#ifndef TOPPERS_MACRO_ONLY
     
    105101
    106102/*
    107  *  •‚“®¬”“_Œ^‚ÉŠÖ‚·‚é’è‹`
     103 *  浮動小数点型に関する定義
    108104 *
    109  *  ‰º‹L‚Ì’è‹`‚Ídbl_size = 8ƒIƒvƒVƒ‡ƒ“‚ðŽw’肵‚½ê‡‚Ì‚Ý—LŒø‚Æ‚·‚邱‚Æ.
     105 *  下記の定義はdbl_size = 8オプションを指定した場合のみ有効とすること.
    110106 */
    111107#ifndef TOPPERS_MACRO_ONLY
    112 typedef float           float32_t;                      /* IEEE754€‹’‚Ì’P¸“x•‚“®¬”“_” */
    113 typedef double          double64_t;                     /* IEEE754€‹’‚Ì”{¸“x•‚“®¬”“_” */
     108typedef float           float32_t;                      /* IEEE754準拠の単精度浮動小数点数 */
     109typedef double          double64_t;                     /* IEEE754準拠の倍精度浮動小数点数 */
    114110#endif /* TOPPERS_MACRO_ONLY */
    115111
     
    121117
    122118/*
    123  *  ‹óƒ‰ƒxƒ‹‚Ì’è‹`
     119 *  空ラベルの定義
    124120 *
    125  *  –{ƒRƒ“ƒpƒCƒ‰‚Å‚Í‘å‚«‚³ƒ[ƒ‚Ì”z—ñ‚̓Rƒ“ƒpƒCƒ‹ƒGƒ‰[‚ɂȂ邽‚ß,
    126  *  ƒTƒCƒY1‚É‚Ä’è‹`‚·‚é.
     121 *  本コンパイラでは大きさゼロの配列はコンパイルエラーになるため,
     122 *  サイズ1にて定義する.
    127123 */
    128124#define TOPPERS_EMPTY_LABEL( type, symbol )             type symbol[ 1 ]
  • UsbWattMeter/trunk/asp_dcre/arch/logtrace/trace_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  $Id$
     
    4541
    4642/*
    47  *              ƒgƒŒ[ƒXƒƒO‹@”\
     43 *              トレースログ機能
    4844 */
    4945
     
    5450
    5551/*
    56  *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚Æ‚»‚ê‚ɃAƒNƒZƒX‚·‚邽‚߂̃|ƒCƒ“ƒ^
    57  */
    58 SYSLOG  trace_buffer[TCNT_TRACE_BUFFER];        /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@ */
    59 uint_t  trace_count;                            /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐” */
    60 uint_t  trace_head;                                     /* æ“ª‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    61 uint_t  trace_tail;                                     /* ŽŸ‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    62 MODE    trace_mode;                                     /* ƒgƒŒ[ƒXƒ‚[ƒh */
    63 
    64 /*
    65  *  ƒgƒŒ[ƒXƒƒO‹@”\‚̏‰Šú‰»
     52 *  トレースログバッファとそれにアクセスするためのポインタ
     53 */
     54SYSLOG  trace_buffer[TCNT_TRACE_BUFFER];        /* トレースログバッファ */
     55uint_t  trace_count;                            /* トレースログバッファ中のログの数 */
     56uint_t  trace_head;                                     /* 先頭のトレースログの格納位置 */
     57uint_t  trace_tail;                                     /* 次のトレースログの格納位置 */
     58MODE    trace_mode;                                     /* トレースモード */
     59
     60/*
     61 *  トレースログ機能の初期化
    6662 */
    6763void
     
    7773
    7874/*
    79  *  ƒgƒŒ[ƒXƒƒO‚ÌŠJŽn
     75 *  トレースログの開始
    8076 */
    8177ER
     
    9288
    9389/*
    94  *  ƒgƒŒ[ƒXƒƒO‚̏‘ž‚Ý
     90 *  トレースログの書込み
    9591 */
    9692ER
     
    10399
    104100                /*
    105                  *  ƒgƒŒ[ƒXŽž‚̐ݒè
     101                 *  トレース時刻の設定
    106102                 *
    107                  *  LOG_WRI_LOG_ENTER‚©‚çŒÄ‚΂ꂽê‡‚Ép_trace->logtim‚ð‘‚«Š·
    108                  *  ‚¦‚Ä‚µ‚Ü‚¤‚Ì‚Í‹CŽ‚¿‚ªˆ«‚¢‚ªCwri_log‚Ì•û‚ŏ㏑‚«‚·‚邽‚ß–â
    109                  *  ‘è‚Í‚È‚¢D
     103                 *  LOG_WRI_LOG_ENTERから呼ばれた場合にp_trace->logtimを書き換
     104                 *  えてしまうのは気持ちが悪いが,wri_logの方で上書きするため問
     105                 *  題はない.
    110106                 */
    111107                p_trace->logtim = TRACE_GET_TIM();
    112108
    113109                /*
    114                  *  ƒgƒŒ[ƒXƒoƒbƒtƒ@‚É‹L˜^
     110                 *  トレースバッファに記録
    115111                 */
    116112                trace_buffer[trace_tail] = *p_trace;
     
    136132
    137133/*
    138  *  ƒgƒŒ[ƒXƒƒO‚̓Ǐo‚µ
     134 *  トレースログの読出し
    139135 */
    140136ER
     
    147143
    148144        /*
    149          *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚©‚ç‚ÌŽæo‚µ
     145         *  トレースログバッファからの取出し
    150146         */
    151147        if (trace_count > 0U) {
     
    167163
    168164/*
    169  *  ƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚߂̃‰ƒCƒuƒ‰ƒŠŠÖ”
     165 *  トレースログを出力するためのライブラリ関数
    170166 */
    171167
     
    213209
    214210/*
    215  *  ƒAƒZƒ“ƒuƒŠŒ¾Œê‚Å‹Lq‚³‚ê‚éƒR[ƒh‚©‚çƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚ß‚ÌŠÖ
    216  *  ”
     211 *  アセンブリ言語で記述されるコードからトレースログを出力するための関
     212 * 
    217213 */
    218214
  • UsbWattMeter/trunk/asp_dcre/arch/logtrace/trace_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    3632 *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  $Id$
     
    4541
    4642/*
    47  *              ƒgƒŒ[ƒXƒƒO‚ÉŠÖ‚·‚éÝ’è
     43 *              トレースログに関する設定
    4844 *
    49  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.h‚¨‚æ‚Ñtarget_syssvc.h‚Ì
    50  *  ‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‚Ü‚½CƒgƒŒ[ƒXƒƒO‹@”\‚̏‰Šú‰»‚â‹L˜^‚ÌŠJ
    51  *  Žn^’âŽ~CƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒv‚ðs‚¤ƒvƒƒOƒ‰ƒ€‚©‚çƒCƒ“ƒNƒ‹[ƒh‚·‚é
    52  *  ‚±‚Æ‚ð‘z’肵‚Ä‚¢‚éD
     45 *  このインクルードファイルは,target_config.hおよびtarget_syssvc.hの
     46 *  みからインクルードされる.また,トレースログ機能の初期化や記録の開
     47 *  始/停止,トレースログのダンプを行うプログラムからインクルードする
     48 *  ことを想定している.
    5349 */
    5450
     
    5753
    5854/*
    59  *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚̃TƒCƒY
     55 *  トレースログバッファのサイズ
    6056 */
    6157#ifndef TCNT_TRACE_BUFFER
     
    6460
    6561/*
    66  *  ƒgƒŒ[ƒXŽž‚̎擾•û–@
     62 *  トレース時刻の取得方法
    6763 */
    6864#ifndef TRACE_GET_TIM
     
    7369
    7470/*
    75  *  ƒgƒŒ[ƒXƒƒO‚̃f[ƒ^\‘¢
     71 *  トレースログのデータ構造
    7672 *
    77  *  ƒVƒXƒeƒ€ƒƒO‹@”\‚̃ƒOî•ñ‚̃f[ƒ^\‘¢‚Æ“¯‚¶‚à‚Ì‚ð—p‚¢‚éD
     73 *  システムログ機能のログ情報のデータ構造と同じものを用いる.
    7874 */
    7975#include <t_syslog.h>
     
    8177
    8278/*
    83  *  ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@‚Æ‚»‚ê‚ɃAƒNƒZƒX‚·‚邽‚߂̃|ƒCƒ“ƒ^
     79 *  トレースログバッファとそれにアクセスするためのポインタ
    8480 */
    85 extern TRACE    trace_buffer[];         /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@ */
    86 extern uint_t   trace_count;            /* ƒgƒŒ[ƒXƒƒOƒoƒbƒtƒ@’†‚̃ƒO‚̐” */
    87 extern uint_t   trace_head;                     /* æ“ª‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    88 extern uint_t   trace_tail;                     /* ŽŸ‚̃gƒŒ[ƒXƒƒO‚ÌŠi”[ˆÊ’u */
    89 extern uint_t   trace_lost;                     /* Ž¸‚í‚ꂽƒgƒŒ[ƒX‚̐” */
     81extern TRACE    trace_buffer[];         /* トレースログバッファ */
     82extern uint_t   trace_count;            /* トレースログバッファ中のログの数 */
     83extern uint_t   trace_head;                     /* 先頭のトレースログの格納位置 */
     84extern uint_t   trace_tail;                     /* 次のトレースログの格納位置 */
     85extern uint_t   trace_lost;                     /* 失われたトレースの数 */
    9086
    9187#endif /* TOPPERS_MACRO_ONLY */
    9288
    9389/*
    94  *  ƒgƒŒ[ƒXƒ‚[ƒh‚Ì’è‹`
     90 *  トレースモードの定義
    9591 */
    96 #define TRACE_STOP                      UINT_C(0x00)    /* ƒgƒŒ[ƒX’âŽ~ */
    97 #define TRACE_RINGBUF           UINT_C(0x01)    /* ƒŠƒ“ƒOƒoƒbƒtƒ@ƒ‚[ƒh */
    98 #define TRACE_AUTOSTOP          UINT_C(0x02)    /* Ž©“®’âŽ~ƒ‚[ƒh */
    99 #define TRACE_CLEAR                     UINT_C(0x04)    /* ƒgƒŒ[ƒXƒƒO‚̃NƒŠƒA */
     92#define TRACE_STOP                      UINT_C(0x00)    /* トレース停止 */
     93#define TRACE_RINGBUF           UINT_C(0x01)    /* リングバッファモード */
     94#define TRACE_AUTOSTOP          UINT_C(0x02)    /* 自動停止モード */
     95#define TRACE_CLEAR                     UINT_C(0x04)    /* トレースログのクリア */
    10096
    10197#ifndef TOPPERS_MACRO_ONLY
    10298
    10399/*
    104  *  ƒgƒŒ[ƒXƒƒO‹@”\‚̏‰Šú‰»
     100 *  トレースログ機能の初期化
    105101 *
    106  *  ƒgƒŒ[ƒXƒƒO‹@”\‚ð‰Šú‰»‚·‚éD‰Šú‰»ƒ‹[ƒ`ƒ“‚Æ‚µ‚Ä“o˜^‚·‚邱‚Æ‚ð‘z
    107  *  ’肵‚Ä‚¢‚éDˆø”‚É‚æ‚莟‚Ì“®ì‚ðs‚¤D
     102 *  トレースログ機能を初期化する.初期化ルーチンとして登録することを想
     103 *  定している.引数により次の動作を行う.
    108104 *
    109  *  TRACE_STOPF‰Šú‰»‚݂̂ŃgƒŒ[ƒX‚ÍŠJŽn‚µ‚È‚¢D
    110  *  TRACE_RINGBUFFƒŠƒ“ƒOƒoƒbƒtƒ@ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
    111  *  TRACE_AUTOSTOPFŽ©“®’âŽ~ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
     105 *  TRACE_STOP:初期化のみでトレースは開始しない.
     106 *  TRACE_RINGBUF:リングバッファモードでトレースを開始.
     107 *  TRACE_AUTOSTOP:自動停止モードでトレースを開始.
    112108 */
    113109extern void     trace_initialize(intptr_t exinf);
    114110
    115111/*
    116  *  ƒgƒŒ[ƒXƒƒO‚ÌŠJŽn
     112 *  トレースログの開始
    117113 *
    118  *  ƒgƒŒ[ƒXƒƒO‚Ì‹L˜^‚ðŠJŽn^’âŽ~‚·‚éDˆø”‚É‚æ‚莟‚Ì“®ì‚ðs‚¤D
     114 *  トレースログの記録を開始/停止する.引数により次の動作を行う.
    119115 *
    120  *  TRACE_STOPFƒgƒŒ[ƒX‚ð’âŽ~D
    121  *  TRACE_RINGBUFFƒŠƒ“ƒOƒoƒbƒtƒ@ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
    122  *  TRACE_AUTOSTOPFŽ©“®’âŽ~ƒ‚[ƒh‚ŃgƒŒ[ƒX‚ðŠJŽnD
    123  *  TRACE_CLEARFƒgƒŒ[ƒXƒƒO‚ðƒNƒŠƒAD
     116 *  TRACE_STOP:トレースを停止.
     117 *  TRACE_RINGBUF:リングバッファモードでトレースを開始.
     118 *  TRACE_AUTOSTOP:自動停止モードでトレースを開始.
     119 *  TRACE_CLEAR:トレースログをクリア.
    124120 */
    125121extern ER       trace_sta_log(MODE mode);
    126122
    127123/*
    128  *  ƒgƒŒ[ƒXƒƒO‚̏‘ž‚Ý
     124 *  トレースログの書込み
    129125 */
    130126extern ER       trace_wri_log(TRACE *p_trace);
    131127
    132128/*
    133  *  ƒgƒŒ[ƒXƒƒO‚̓Ǐo‚µ
     129 *  トレースログの読出し
    134130 */
    135131extern ER       trace_rea_log(TRACE *p_trace);
    136132
    137133/*
    138  *  ƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒvitrace_dump.cj
     134 *  トレースログのダンプ(trace_dump.c)
    139135 *
    140  *  ƒgƒŒ[ƒXƒƒO‚ðƒ_ƒ“ƒv‚·‚éDI—¹ˆ—ƒ‹[ƒ`ƒ“‚Æ‚µ‚Ä“o˜^‚·‚邱‚Æ‚à‘z’è
    141  *  ‚µ‚Ä‚¢‚éDˆø”‚Æ‚µ‚āCƒ_ƒ“ƒvæ‚ƂȂ镶Žšo—͊֐”‚ւ̃|ƒCƒ“ƒ^‚ð“n‚·D
    142  *  ƒ^[ƒQƒbƒgˆË‘¶‚̒჌ƒxƒ‹•¶Žšo—Í‚ð—˜—p‚·‚éê‡‚ɂ́Ctarget_putc‚ð“n
    143  *  ‚·D
     136 *  トレースログをダンプする.終了処理ルーチンとして登録することも想定
     137 *  している.引数として,ダンプ先となる文字出力関数へのポインタを渡す.
     138 *  ターゲット依存の低レベル文字出力を利用する場合には,target_putcを渡
     139 *  す.
    144140 */
    145141extern void     trace_dump(intptr_t exinf);
    146142
    147143/*
    148  *  ƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚߂̃‰ƒCƒuƒ‰ƒŠŠÖ”
     144 *  トレースログを出力するためのライブラリ関数
    149145 */
    150146extern void     trace_write_0(uint_t type);
     
    155151
    156152/*
    157  *  ƒgƒŒ[ƒXƒƒO‚ðo—Í‚·‚邽‚߂̃}ƒNƒ
     153 *  トレースログを出力するためのマクロ
    158154 */
    159155
     
    174170
    175171/*
    176  *  ƒgƒŒ[ƒXƒƒO•û–@‚̐ݒè
     172 *  トレースログ方法の設定
    177173 */
    178174#define LOG_TSKSTAT(p_tcb)              trace_2(LOG_TYPE_TSKSTAT, p_tcb, p_tcb->tstat)
  • UsbWattMeter/trunk/asp_dcre/arch/logtrace/trace_dump.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    66 *              Graduate School of Information Science, Nagoya Univ., 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‰ü
    10  *  •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔ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
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     8 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  $Id$
     
    4339
    4440/*
    45  *              ƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒv
     41 *              トレースログのダンプ
    4642 */
    4743
     
    5147
    5248/*
    53  *  ƒJ[ƒlƒ‹î•ñ‚ÌŽæo‚µ
     49 *  カーネル情報の取出し
    5450 */
    5551static intptr_t
     
    10096
    10197/*
    102  *  ƒgƒŒ[ƒXƒƒO‚Ì•\Ž¦
     98 *  トレースログの表示
    10399 */
    104100static void
     
    144140
    145141/*
    146  *  ƒgƒŒ[ƒXƒƒO‚̃_ƒ“ƒv
     142 *  トレースログのダンプ
    147143 */
    148144void
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/makeoffset.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    88 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    99 *
    10  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    11  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    12  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    13  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    14  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    15  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    16  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    17  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    18 ƒƒ“ƒgi—˜—p
    19  *      ŽÒƒ}ƒjƒ
    20 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    21  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    22  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    23  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    24  *      ‚ƁD
    25  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    26 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    27 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    28  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    29  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    30  *        •ñ‚·‚邱‚ƁD
    31  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    32  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    33  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    34  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    35  *      –Ɛӂ·‚邱‚ƁD
    36  *
    37  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    38  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    39  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    40  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    41  *  ‚̐ӔC‚𕉂í‚È‚¢D
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    4238 *
    4339 *  @(#) $Id$
     
    4642
    4743/*
    48  *      offset.inc (‚à‚µ‚­‚Í offset.h) ‚ɂ‚¢‚Ä
    49  *
    50  *        offset.inc ‚͍\‘¢‘Ì‚Ì“Á’è‚Ì—v‘f‚ª\‘¢‘̂̐擪‚©‚牽ƒoƒCƒg–Ú‚É
    51  *      ‘¶Ý‚·‚é‚©‚Æ‚¢‚¤‚±‚Æ‚â, “Á’è‚̃rƒbƒgƒtƒB[ƒ‹ƒh‚ªæ“ª‚©‚ç
    52  *      ‰½ƒoƒCƒgæ‚̉½ƒrƒbƒg–Ú‚É‘¶Ý‚·‚é‚©, ‚Æ‚¢‚¤î•ñ‚ð
    53  *      ƒAƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹‚É—^‚¦‚邽‚ß‚É‘¶Ý‚µ‚Ä‚¢‚é.
    54  *
    55  *        offset.inc ƒtƒ@ƒCƒ‹‚Ì’†g‚Í, ’P‚È‚éƒVƒ“ƒ{ƒ‹’è‹`ƒtƒ@ƒCƒ‹‚Å‚ ‚é.
    56  *      ƒVƒ“ƒ{ƒ‹‚Æ‚¢‚Á‚Ä‚à’è‹`‚·‚éƒVƒ“ƒ{ƒ‹‚Ì–¼Ì‚ɂ̓pƒ^[ƒ“‚ª‚ ‚è,
    57  *      ‘å‚«‚­•ª‚¯‚ÄŽŸ‚Ì3Ží—Þ‚É•ª—Þ‚Å‚«‚é.
    58  *
    59  *      <\‘¢‘Ì–¼>_<—v‘f–¼>     (—á) TCB_sp, TCB_pc, TCB_enatex ‚È‚Ç
    60  *      <\‘¢‘Ì–¼>_<—v‘f–¼>_bit (—á) TCB_enatex_bit ‚È‚Ç
    61  *      <\‘¢‘Ì–¼>_<—v‘f–¼>_mask (—á) TCB_enatex_mask ‚È‚Ç
    62  *
    63  *      (—á)
     44 *      offset.inc (もしくは offset.h) について
     45 *
     46 *        offset.inc は構造体の特定の要素が構造体の先頭から何バイト目に
     47 *      存在するかということや, 特定のビットフィールドが先頭から
     48 *      何バイト先の何ビット目に存在するか, という情報を
     49 *      アセンブリ言語ファイルに与えるために存在している.
     50 *
     51 *        offset.inc ファイルの中身は, 単なるシンボル定義ファイルである.
     52 *      シンボルといっても定義するシンボルの名称にはパターンがあり,
     53 *      大きく分けて次の3種類に分類できる.
     54 *
     55 *      <構造体名>_<要素名>    (例) TCB_sp, TCB_pc, TCB_enatex など
     56 *      <構造体名>_<要素名>_bit        (例) TCB_enatex_bit など
     57 *      <構造体名>_<要素名>_mask (例) TCB_enatex_mask など
     58 *
     59 *      ()
    6460 *              TCB_texptn              .equ    14
    6561 *              TCB_sp                  .equ    20
     
    6965 *              TCB_enatex_mask         .equ    0040H
    7066 *
    71  *        ˆê”Ô‚Í‚¶‚ß‚Í“Á’è‚Ì—v‘f‚ª\‘¢‘̂̐擪‚©‚牽ƒoƒCƒgæ‚É‚ ‚é‚©
    72  *      ‚Æ‚¢‚¤‚±‚Æ‚ðŽ¦‚·”’l‚ɂ‚¯‚郉ƒxƒ‹‚Ì–¼Ì.
    73  *        “ñ”Ô–Ú‚Í“Á’è‚̃rƒbƒgƒtƒB[ƒ‹ƒh’†‚̃rƒbƒg‚ª, ‰ºˆÊ‚©‚琔‚¦‚Ä
    74  *      ‰½ƒrƒbƒg–Ú‚É‚ ‚é‚©‚Æ‚¢‚¤‚±‚Æ‚ðŽ¦‚·”’l‚ɂ‚¯‚郉ƒxƒ‹‚Ì–¼Ì.
    75  *      0‚©‚çŽn‚܂鐔’l‚Å•\Œ»‚·‚é. Å‚à‰ºˆÊ‚̃rƒbƒg‚Í‘æ0ƒrƒbƒg‚Å‚ ‚é.
    76  *        ŽO”Ԗڂ͐æ‚Ù‚Ç‚Ì <\‘¢‘Ì–¼>_<—v‘f–¼>_bit ‚Æ‚àŠÖ˜A‚·‚邪,
    77  *      “Á’è‚̃rƒbƒgƒtƒB[ƒ‹ƒh’†‚̃rƒbƒg‚̃}ƒXƒN’l‚Ì–¼Ì.
    78  *      _bit ‚Æ *_mask ‚Ì’l‚ÌŠÔ‚É‚ÍŽŸ‚ÌŠÖŒW‚ª‚ ‚é.
     67 *        一番はじめは特定の要素が構造体の先頭から何バイト先にあるか
     68 *      ということを示す数値につけるラベルの名称.
     69 *        二番目は特定のビットフィールド中のビットが, 下位から数えて
     70 *      何ビット目にあるかということを示す数値につけるラベルの名称.
     71 *      0から始まる数値で表現する. 最も下位のビットは第0ビットである.
     72 *        三番目は先ほどの <構造体名>_<要素名>_bit とも関連するが,
     73 *      特定のビットフィールド中のビットのマスク値の名称.
     74 *      _bit と *_mask の値の間には次の関係がある.
    7975 *              (*_mask) == (1 << *_bit)
    80  * *    (—á) TCB_enatex_bit ‚ª 6 ‚ÌŽž, TCB_enatex_mask ‚Í 40H
    81  *
    82  *        ‚¿‚È‚Ý‚ÉM32CˆË‘¶•”‚ÌŽÀ‘•‚Å‚Í, “Á’èƒrƒbƒg‚̃`ƒFƒbƒN‚È‚Ç‚É
    83  *      ƒrƒbƒg–½—߃AƒhƒŒƒbƒVƒ“ƒO‚ðŽg—p‚µ‚Ä‚¢‚é‚Ì‚Å *_mask ‚Æ‚¢‚¤ƒ‰ƒxƒ‹‚Í
    84  *      Žg—p‚µ‚Ä‚¢‚È‚¢.
     76 * *    (例) TCB_enatex_bit が 6 の時, TCB_enatex_mask は 40H
     77 *
     78 *        ちなみにM32C依存部の実装では, 特定ビットのチェックなどに
     79 *      ビット命令アドレッシングを使用しているので *_mask というラベルは
     80 *      使用していない.
    8581 */
    8682
    8783/*
    88  *      offset.inc ‚̍ì‚è•û(M32Cƒ^[ƒQƒbƒgˆË‘¶•”Œü‚¯)
    89  *
    90  *        GNU CƒRƒ“ƒpƒCƒ‰‚ð—p‚¢‚Ä‚¢‚éƒ^[ƒQƒbƒgˆË‘¶•”‚ɂ‚¢‚Ä‚Í,
    91  *      ƒJ[ƒlƒ‹‚̃gƒbƒvƒfƒBƒŒƒNƒgƒŠ‚̉º‚É‚ ‚é util ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚Ì
    92  *      ‰º‚É genoffset ‚Æ‚¢‚¤ perl ƒXƒNƒŠƒvƒg‚ª—pˆÓ‚³‚ê‚Ä‚¢‚é‚Ì‚Å,
    93  *      “Á‚ÉŽè“®‚Å offset.h ‚ðì¬‚·‚é•K—v‚Í‚È‚¢.
    94  *        genoffset ‚Í GNU ŠJ”­ŠÂ‹«‚ð‘z’肵‚č쐬‚³‚ê‚Ä‚¢‚é‚Ì‚Å,
    95  *      ¶¬‚³‚ê‚éƒAƒZƒ“ƒuƒŠŒ¾Œê‹^Ž—–½—߂␶¬‹K‘¥‚̈قȂ鑼‚Ì
    96  *      CƒRƒ“ƒpƒCƒ‰‚É‚Í‚»‚Ì‚Ü‚Ü“K—p‚Å‚«‚È‚¢‰Â”\«‚ª‚ ‚é.
    97  *        ‚»‚±‚Å, ‚±‚±‚Å‚ÍWindowsŠÂ‹« Œü‚¯‚Ì genoffset ‚ð—pˆÓ‚¹‚¸,
    98  *      ì‚è•û‚ð‚±‚±‚É‹L‚µ, Žèì‹Æ‚Å offset.inc ‚ðì¬‚µ‚Ä‚à‚炤‚±‚Æ‚Æ
    99  *      ‚·‚é. ˆÈ‰º‚É‚»‚Ì•û–@‚ðŽ¦‚·. ‚È‚¨, ‚±‚Ì•û–@‚ÍM32C‚ÌŠJ”­ŠÂ‹«‚â
    100  *      –½—߃Zƒbƒg‚Ɉˑ¶‚µ‚Ä‚¢‚邽‚ß, ‘¼‚̃^[ƒQƒbƒg‚ðŽg—p‚µ‚Ä‚¢‚éê‡‚Í
    101  *      ‚»‚Ì‚Ü‚Ü“K—p‚Å‚«‚È‚¢.
    102  *
    103  *  1.  makeoffset.c ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚©‚çCƒRƒ“ƒpƒCƒ‰‚ðŽg—p‚µ‚Ä
    104  *      ƒAƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹ makeoffset.a30 ‚𐶐¬‚·‚é.
    105  *      ƒRƒ“ƒpƒCƒ‹ƒIƒvƒVƒ‡ƒ“‚̓J[ƒlƒ‹ƒR[ƒh‚É—^‚¦‚é‚à‚Ì‚Æ“¯‚¶
    106  *      ‚à‚Ì‚ð—^‚¦‚é.
    107  *      ƒ‹ƒlƒTƒX»ƒc[ƒ‹ TM ‚ðŽg—p‚µ‚Ä‚¢‚éê‡‚Í, ƒvƒƒWƒFƒNƒgƒGƒfƒBƒ^‚Ì
    108  *      ¶¬Žè‡ƒrƒ
    109 [‚©‚ç makeoffset.a30 ‚ð‘I‚Ñ, ‰EƒNƒŠƒbƒNƒƒjƒ
    110 [‚Ì
    111  *      ¢•”•ªƒrƒ‹ƒh£‚ð‘I‘ð‚·‚é‚±‚ƂŐ¶¬‚Å‚«‚é.
    112  *      ‚à‚µ‚­‚̓Rƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚сƒCƒNƒtƒ@ƒCƒ‹‚Æ“¯‚¶ƒfƒBƒŒƒNƒgƒŠ‚É
    113  *      ˆÚ“®‚µ, "make -f ƒƒCƒNƒtƒ@ƒCƒ‹–¼ makeoffset.a30" ‚ð
    114  *      ŽÀs‚µ‚Ä‚à“¯—l‚ÌŒ‹‰Ê‚ª“¾‚ç‚ê‚é. (ƒƒCƒNƒtƒ@ƒCƒ‹‚ÍTM‚ªŽg—p‚µ‚Ä
    115  *      ‚¢‚é‚à‚Ì‚Æ“¯‚¶ƒtƒ@ƒCƒ‹‚ðŽw’è‰Â”\)
    116  *
    117  *  2.  æ‚Ù‚Ç‚Ì 1. ‚̍ì‹Æ‚Å“¾‚ç‚ꂽ, makeoffset.a30 ƒtƒ@ƒCƒ‹‚©‚ç
    118  *      "! BEGIN XXXX"  ‚Å‚Í‚¶‚Ü‚è "! END" ‚ŏI‚í‚Á‚Ä‚¢‚é•”•ª‚ð’T‚·.
    119  *
    120  *      4‰ÓŠ‚ ‚è, ‚»‚ꂼ‚ꏭ‚µ‚¸‚ˆقȂé‚̂ŏ‡‚Éà–¾‚·‚é.
    121  *      (ˆÈ‰º, à–¾’†‚ł̓AƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹‚̃Rƒƒ“ƒgs‚͏Ȃ­)
    122  *
    123  * (1)  \‘¢‘̂̐擪‚©‚烁ƒ“ƒo‚ւ̃IƒtƒZƒbƒg
     84 *      offset.inc の作り方(M32Cターゲット依存部向け)
     85 *
     86 *        GNU Cコンパイラを用いているターゲット依存部については,
     87 *      カーネルのトップディレクトリの下にある util というディレクトリの
     88 *      下に genoffset という perl スクリプトが用意されているので,
     89 *      特に手動で offset.h を作成する必要はない.
     90 *        genoffset は GNU 開発環境を想定して作成されているので,
     91 *      生成されるアセンブリ言語疑似命令や生成規則の異なる他の
     92 *      Cコンパイラにはそのまま適用できない可能性がある.
     93 *        そこで, ここではWindows環境 向けの genoffset を用意せず,
     94 *      作り方をここに記し, 手作業で offset.inc を作成してもらうことと
     95 *      する. 以下にその方法を示す. なお, この方法はM32Cの開発環境や
     96 *      命令セットに依存しているため, 他のターゲットを使用している場合は
     97 *      そのまま適用できない.
     98 *
     99 *  1.  makeoffset.c というファイルからCコンパイラを使用して
     100 *      アセンブリ言語ファイル makeoffset.a30 を生成する.
     101 *      コンパイルオプションはカーネルコードに与えるものと同じ
     102 *      ものを与える.
     103 *      ルネサス製ツール TM を使用している場合は, プロジェクトエディタの
     104 *      生成手順ビューから makeoffset.a30 を選び, 右クリックメニューの
     105 *      「部分ビルド」を選択することで生成できる.
     106 *      もしくはコマンドプロンプトでメイクファイルと同じディレクトリに
     107 *      移動し, "make -f メイクファイル名 makeoffset.a30" を
     108 *      実行しても同様の結果が得られる. (メイクファイルはTMが使用して
     109 *      いるものと同じファイルを指定可能)
     110 *
     111 *  2.  先ほどの 1. の作業で得られた, makeoffset.a30 ファイルから
     112 *      "! BEGIN XXXX"  ではじまり "! END" で終わっている部分を探す.
     113 *
     114 *      4箇所あり, それぞれ少しずつ異なるので順に説明する.
     115 *      (以下, 説明中ではアセンブリ言語ファイルのコメント行は省く)
     116 *
     117 * (1)  構造体の先頭からメンバへのオフセット
    124118 *
    125119 *      ! BEGIN TCB_texptn
     
    127121 *      ! END
    128122 *
    129  *      ã‹L"! BEGIN"‚ÌŒã‚ë‚Ì•¶Žš—ñ‚ªoffset.inc‚Å’è‹`‚·‚éƒVƒ“ƒ{ƒ‹–¼‚Æ‚È‚é.
    130  *      ‚»‚̃Vƒ“ƒ{ƒ‹‚Ì’l‚Í, ŽŸs‚Ìbset–½—ß‚Ì‘æ2ƒIƒyƒ‰ƒ“ƒh‚Ì’l‚Å‚ ‚é
    131  *      0000000eH‚ª‚»‚ê‚É‘Š“–‚·‚é. ‚±‚ꂪ\‘¢‘̂̐擪‚©‚çtexptn‚Ü‚Å‚Ì
    132  *      ƒIƒtƒZƒbƒg’l‚Æ‚È‚é. ‚µ‚½‚ª‚Á‚Ä‚±‚̏ꍇ, offset.inc ‚É‚Í
     123 *      上記"! BEGIN"の後ろの文字列がoffset.incで定義するシンボル名となる.
     124 *      そのシンボルの値は, 次行のbset命令の第2オペランドの値である
     125 *      0000000eHがそれに相当する. これが構造体の先頭からtexptnまでの
     126 *      オフセット値となる. したがってこの場合, offset.inc には
    133127 *      TCB_texptn      .equ    14
    134  *      ‚Æ‚¢‚¤s‚ð‹Lq‚·‚é.
    135  *
    136  * (2)  \‘¢‘̂̃ƒ“ƒo‚ª\‘¢‘Ì‚Å, ‚»‚Ì’†‚̃ƒ“ƒo‚ɑ΂·‚éƒIƒtƒZƒbƒg
    137  *
    138  *      TCB_sp ‚ɂ‚¢‚Ä‚à‚Ù‚Ú“¯—l‚¾‚ª, sp ‚ÍTCB\‘¢‘Ì‚Ì’¼Ú‚Ì
    139  *      ƒƒ“ƒo‚Å‚È‚­TCB\‘¢‘̂̃ƒ“ƒo‚Å‚ ‚éTSKCTXB\‘¢‘̂̃ƒ“ƒo‚Å
    140  *      ‚ ‚é“_‚ªˆÙ‚È‚é. ‚»‚ê‚Å‚à’è‹`‚·‚éƒVƒ“ƒ{ƒ‹–¼‚Æ‚µ‚Ä‚Í
    141  *      TCB_sp ‚̂悤‚É•\Œ»‚·‚é. ƒAƒZƒ“ƒuƒŠŒ¾Œêƒtƒ@ƒCƒ‹‚Å‚Í
     128 *      という行を記述する.
     129 *
     130 * (2)  構造体のメンバが構造体で, その中のメンバに対するオフセット
     131 *
     132 *      TCB_sp についてもほぼ同様だが, sp はTCB構造体の直接の
     133 *      メンバでなくTCB構造体のメンバであるTSKCTXB構造体のメンバで
     134 *      ある点が異なる. それでも定義するシンボル名としては
     135 *      TCB_sp のように表現する. アセンブリ言語ファイルでは
    142136 *
    143137 *      ! BEGIN TCB_sp
     
    149143 *      ! END *
    150144 *
    151  *      ‚̂悤‚É‚È‚è,14H(=20) ‚ª‹‚ß‚é’l‚È‚Ì‚Åoffset.inc ‚É‚ÍŽŸ‚̂悤‚É
    152  *      ‹Lq‚·‚é.
     145 *      のようになり,14H(=20) が求める値なのでoffset.inc には次のように
     146 *      記述する.
    153147 *
    154148 *      TCB_sp  .equ    20
    155149 *
    156  * (3)  ƒƒ“ƒo‚ªŠÖ”‚ւ̃|ƒCƒ“ƒ^‚Å‚ ‚Á‚½ê‡
    157  *
    158  *      ŽŸ‚Í TCB_pc ‚̏ꍇ.
     150 * (3)  メンバが関数へのポインタであった場合
     151 *
     152 *      次は TCB_pc の場合.
    159153 *
    160154 *      ! BEGIN TCB_pc
     
    163157 *      ! END
    164158 *
    165  *      pc ‚à sp ‚Æ“¯‚¶‚­, TCB\‘¢‘Ì‚Ì’¼Ú‚̃ƒ“ƒo‚Å‚Í‚È‚¢‚ª
    166  *      TCB_pc ‚Æ•\Œ»‚µ‚Ä‚¢‚é. ‚±‚ê‚͊֐”‚̃AƒhƒŒƒX‚ðŠi”[‚·‚é•Ï”‚È‚Ì‚Å,
     159 *      pc も sp と同じく, TCB構造体の直接のメンバではないが
     160 *      TCB_pc と表現している. これは関数のアドレスを格納する変数なので,
    167161 *      (((TCB *)0)->tskctxb.pc)();
    168  *      ‚Æ‚µ‚Ċ֐”ŒÄ‚яo‚µ‚̂悤‚É‹Lq‚·‚é‚Əã‹L‚̂悤‚ȃAƒZƒ“ƒuƒŠŒ¾Œê
    169  *      ƒR[ƒh‚ðo—Í‚·‚é. ƒVƒ“ƒ{ƒ‹’è‹`‚·‚éÛ‚̃Vƒ“ƒ{ƒ‹–¼‚͍¡‚Ü‚Å‚Æ
    170  *      “¯‚¶‚­, TCB_pc ‚Æ‚·‚é.
    171  *      ‹‚ß‚é’l‚͍\‘¢‘Ì‚©‚çŠÖ”ƒ|ƒCƒ“ƒ^‚܂ł̃IƒtƒZƒbƒg‚Å‚ ‚è, ã‚Ìmov.l
    172  *      –½—ß‚ÌŒ‹‰Ê‚©‚ç  00000018H(=24) ‚Æ‚È‚é.
    173  *      ‚µ‚½‚ª‚Á‚Ä, offset.inc ‚É‚ÍŽŸ‚̂悤‚É‹Lq‚·‚é.
     162 *      として関数呼び出しのように記述すると上記のようなアセンブリ言語
     163 *      コードを出力する. シンボル定義する際のシンボル名は今までと
     164 *      同じく, TCB_pc とする.
     165 *      求める値は構造体から関数ポインタまでのオフセットであり, 上のmov.l
     166 *      命令の結果から         00000018H(=24) となる.
     167 *      したがって, offset.inc には次のように記述する.
    174168 *
    175169 *      TCB_pc  .equ    24
    176170 *
    177  * (4)  \‘¢‘̂̃ƒ“ƒo‚ªƒrƒbƒgƒtƒB[ƒ‹ƒh‚Å‚»‚̃rƒbƒgˆÊ’u‚à’m‚肽‚¢ê‡
     171 * (4)  構造体のメンバがビットフィールドでそのビット位置も知りたい場合
    178172 *
    179173 *      ! BEGIN TCB_enatex
     
    181175 *      ! END
    182176 *
    183  *      ¡‚Ü‚Å‚Æ“¯—l, BEGIN ‚ÌŒã‚Ì•¶Žš—ñ‚ðƒVƒ“ƒ{ƒ‹–¼‚Æ‚·‚é.
    184  *      ‚±‚±‚Å‚ÌTCB_enatex‚Ì’l‚͍\‘¢‘̂̐擪‚©‚çƒrƒbƒgƒtƒB[ƒ‹ƒh‚ðŠÜ‚Þƒo
    185  *      ƒCƒg‚܂ł̃IƒtƒZƒbƒg‚Å, M32C‚̃rƒbƒg–½—߃AƒhƒŒƒbƒVƒ“ƒO‚ÍŽw’è‚Å‚«
    186  *      ‚éƒrƒbƒgˆÊ’u‚ª0‚©‚ç7‚ÌŠÔ‚ÉŽû‚Ü‚é‚悤‚ɃAƒNƒZƒX‚·‚éƒAƒhƒŒƒX‚É“K“–
    187  *      ”‚ª‰Á‚¦‚ç‚ê‚é‚Ì‚Å cH+1(=13) ‚Æ‚È‚Á‚Ä‚¢‚é. ‚Ü‚½, ƒrƒbƒgƒtƒB[ƒ‹ƒh
    188  *      ’†‚̍ʼnºˆÊƒrƒbƒg‚©‚ç‚̃rƒbƒgˆÊ’u‚Í 6‚Æ‚È‚é.
    189  *      ˆÈã‚æ‚莟‚̂悤‚ɏ‘‚­‚±‚Æ‚ª‚Å‚«‚é.
     177 *      今までと同様, BEGIN の後の文字列をシンボル名とする.
     178 *      ここでのTCB_enatexの値は構造体の先頭からビットフィールドを含むバ
     179 *      イトまでのオフセットで, M32Cのビット命令アドレッシングは指定でき
     180 *      るビット位置が0から7の間に収まるようにアクセスするアドレスに適当
     181 *      数が加えられるので cH+1(=13) となっている. また, ビットフィールド
     182 *      中の最下位ビットからのビット位置は 6となる.
     183 *      以上より次のように書くことができる.
    190184 *
    191185 *              TCB_enatex      .equ    13
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    77$  Copyright (C) 2013      by Mitsuhiro Matsuura
    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
    35 $
    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
     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$      免責すること.
     31$
     32$  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33$  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34$  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35$  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36$  の責任を負わない.
    4137$
    4238$  @(#) $Id$
     
    4440
    4541$
    46 ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
    47 $
    48 
    49 
    50 
    51 $
    52 $  ATT_ISR‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚Æ‚»‚ê‚ɑΉž‚·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†
     42アーキテクチャ依存テンプレート(RX630用)
     43$
     44
     45
     46
     47$
     48$  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
    5349$
    5450
     
    5854
    5955$
    60 $  DEF_INT^DEF_EXC‚ÅŽg—p‚Å‚«‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†^CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†
     56$  DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
    6157$
    6258
     
    6662
    6763$
    68 $  CFG_INT‚ÅŽg—p‚Å‚«‚銄ž‚ݔԍ†‚ÆŠ„ž‚Ý—Dæ“x
     64$  CFG_INTで使用できる割込み番号と割込み優先度
    6965$
    7066
     
    7470
    7571$
    76 ƒ^[ƒQƒbƒg”ñˆË‘¶•”‚ÉŠÜ‚Ü‚ê‚é•W€‚ÌŠ„ž‚ÝŠÇ—‹@”\/—áŠOŠÇ—‹@”\‚̏‰Šú‰»ˆ—‚ðŽg—p‚·‚é
     72ターゲット非依存部に含まれる標準の割込み管理機能/例外管理機能の初期化処理を使用する
    7773$
    7874
     
    8278
    8379$
    84 ƒXƒ^ƒbƒNƒTƒCƒY‚̃`ƒFƒbƒN•û–@Žw’è
     80スタックサイズのチェック方法指定
    8581$
    8682
     
    8985
    9086$
    91 ƒ^ƒXƒNƒXƒ^ƒbƒNƒTƒCƒY‚̍ŏ¬’l
    92 $
    93 ƒ^ƒXƒN‹N“®Žž‚É4byte,
    94 Š„ž‚Ý“üŒûˆ—‚É‚Ä48byte, CPU—áŠO“üŒûˆ—‚É‚Ä84byte,
    95 ‚Å‚ ‚邽‚ß, Å¬’l‚Í88byte‚Æ‚·‚é.
     87タスクスタックサイズの最小値
     88$
     89タスク起動時に4byte,
     90割込み入口処理にて48byte, CPU例外入口処理にて84byte,
     91であるため, 最小値は88byteとする.
    9692$
    9793
     
    10096
    10197$
    102 ’萔’è‹`
     98定数定義
    10399$
    104100
     
    107103
    108104$
    109 $ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚Ý‘®«‚Ì’è‹`
     105$ ターゲット依存の割込み属性の定義
    110106$
    111107
     
    114110
    115111$
    116 $ ƒ^[ƒQƒbƒgˆË‘¶‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‘®«‚Ì’è‹`
     112$ ターゲット依存の割込みハンドラ属性の定義
    117113$
    118114
     
    121117
    122118$
    123 $ ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݃nƒ“ƒhƒ‰‚͌Œ肳‚¹‚È‚¢‚½‚ß,
     119$ カーネル管理外割込みハンドラは固定させないため,
    124120$ INTNO_FIX_KERNEL
    125121$ INHNO_FIX_KERNEL
    126122$ INHNO_FIX_NONKERNEL
    127123$ INHNO_FIX_NONKERNEL
    128 $ ‚ð’è‹`‚µ‚È‚¢.
    129 $
    130 
    131 
    132 $
    133 •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     124$ を定義しない.
     125$
     126
     127
     128$
     129標準テンプレートファイルのインクルード
    134130$
    135131$INCLUDE "kernel.tf"$
     
    138134
    139135$
    140 $  CFG_INT‚̃^[ƒQƒbƒgˆË‘¶‚̃Gƒ‰[ƒ`ƒFƒbƒN
     136$  CFG_INTのターゲット依存のエラーチェック
    141137$
    142138
    143139$FOREACH intno INT.ORDER_LIST$
    144 $ IRQŠ„ž‚ݔԍ†‚©‚Ç‚¤‚©‚ðƒ`ƒFƒbƒN
     140$ IRQ割込み番号かどうかをチェック
    145141        $IF ( LENGTH( FIND( INTNO_INT, INT.INTNO[intno] ) ) != 0 )$
    146142
    147 $   TA_POSEDGE‚ÆTA_NEGEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     143$   TA_POSEDGEとTA_NEGEDGEが同時に設定されている場合
    148144                $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE )) == ( TA_POSEDGE | TA_NEGEDGE ))$
    149145                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
    150146                $END$
    151147
    152 $   TA_POSEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     148$   TA_POSEDGEとTA_BOTHEDGEが同時に設定されている場合
    153149                $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_BOTHEDGE ))$
    154150                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
    155151                $END$
    156152
    157 $   TA_NEGEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     153$   TA_NEGEDGEとTA_BOTHEDGEが同時に設定されている場合
    158154                $IF ((INT.INTATR[intno] & ( TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_NEGEDGE | TA_BOTHEDGE ))$
    159155                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
    160156                $END$
    161157
    162 $   TA_POSEDGE‚ÆTA_NEGEDGE‚ÆTA_BOTHEDGE‚ª“¯Žž‚ɐݒ肳‚ê‚Ä‚¢‚éê‡
     158$   TA_POSEDGEとTA_NEGEDGEとTA_BOTHEDGEが同時に設定されている場合
    163159                $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE ))$
    164160                        $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
     
    167163        $ELSE$
    168164
    169 $   IRQŠ„ž‚݈ȊO‚ÌŠ„ž‚݂ɑ΂µ‚ÄŠ„ž‚Ý‘®«‚ªŽw’肳‚ê‚Ä‚¢‚éê‡
     165$   IRQ割込み以外の割込みに対して割込み属性が指定されている場合
    170166                $IF (INT.INTATR[intno] & (~( TA_ENAINT | TA_EDGE ))) != 0$
    171167                        $ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$
     
    179175
    180176$
    181 $ Š„ž‚ݔԍ†‚©‚犄ž‚Ý—Dæ“x‹y‚Ñ‘®«‚ðŽæ‚èo‚·ƒe[ƒuƒ‹
     177$ 割込み番号から割込み優先度及び属性を取り出すテーブル
    182178$
    183179
     
    187183const CFG_INT_INFO _kernel_cfg_int_table[$LENGTH(INTNO_RANGE)$] = {$NL$
    188184$FOREACH intno INTNO_RANGE$
    189 $ Š„ž‚Ý—Dæ“x‚ðŽæ“¾
     185$ 割込み優先度を取得
    190186        $IF LENGTH(INT.INTNO[intno])$
    191187                $intpri = -INT.INTPRI[intno]$
     
    196192        $END$
    197193
    198 $ ƒe[ƒuƒ‹‚Ì’†g‚ðo—Í
     194$ テーブルの中身を出力
    199195        $TAB$$FORMAT("{ %2d, %08x }, /* %02u */", intpri, intatr, +intno)$$NL$
    200196$END$
     
    203199
    204200$
    205 ƒAƒZƒ“ƒuƒ‰o—̓tƒ@ƒCƒ‹
     201アセンブラ出力ファイル
    206202$
    207203
     
    209205
    210206;$NL$
    211 ;  RX630ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶o—̓tƒ@ƒCƒ‹$NL$
    212 ;$NL$
    213 Š„ž‚݃xƒNƒ^‹y‚ÑŠ„ž‚݃nƒ“ƒhƒ‰’è‹`$NL$
     207;  RX630アーキテクチャ依存出力ファイル$NL$
     208;$NL$
     209割込みベクタ及び割込みハンドラ定義$NL$
    214210;$NL$
    215211$NL$$NL$
     
    217213
    218214$
    219 Š„ž‚Ý“üŒûˆ—
    220 $
    221 
    222 $
    223 ‹¤’ʊ֐”‚̐錾
     215割込み入口処理
     216$
     217
     218$
     219共通関数の宣言
    224220$
    225221
     
    231227
    232228$
    233 Š„ž‚݃nƒ“ƒhƒ‰‚̏o—Í
     229割込みハンドラの出力
    234230$
    235231
     
    240236                        $TAB$.glb       __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry$NL$
    241237                        __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry:$NL$
    242                         $TAB$pushm      r1-r5                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    243                         $TAB$mov.l      #$+INH.INHNO[inhno]$, r1        ; Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    244                         $TAB$mov.l      #_$INH.INTHDR[inhno]$, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    245                         $TAB$bra.a      _kernel_interrupt                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    246                 $END$
    247         $END$
    248 $END$
    249 
    250 
    251 $ –¢“o˜^Š„ž‚݃nƒ“ƒhƒ‰“üŒûˆ—
     238                        $TAB$pushm      r1-r5                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     239                        $TAB$mov.l      #$+INH.INHNO[inhno]$, r1        ; 割込みハンドラ番号をr1へ $NL$
     240                        $TAB$mov.l      #_$INH.INTHDR[inhno]$, r2       ; ハンドラのアドレスをr2へ $NL$
     241                        $TAB$bra.a      _kernel_interrupt                       ; 共通ルーチンへ $NL$$NL$$NL$
     242                $END$
     243        $END$
     244$END$
     245
     246
     247$ 未登録割込みハンドラ入口処理
    252248$TAB$.glb$TAB$__kernel_default_int_handler_entry$NL$
    253249__kernel_default_int_handler_entry:$NL$
    254 $TAB$pushm      r1-r5                                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    255 $TAB$mov.l      #0FFFFFFFFH, r1                                         ; Š„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    256 $TAB$mov.l      #__kernel_default_int_handler, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    257 $TAB$bra.a      _kernel_interrupt                                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    258 
    259 
    260 $
    261 $  CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
     250$TAB$pushm      r1-r5                                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     251$TAB$mov.l      #0FFFFFFFFH, r1                                         ; 割込みハンドラ番号をr1へ $NL$
     252$TAB$mov.l      #__kernel_default_int_handler, r2       ; ハンドラのアドレスをr2へ $NL$
     253$TAB$bra.a      _kernel_interrupt                                       ; 共通ルーチンへ $NL$$NL$$NL$
     254
     255
     256$
     257$  CPU例外ハンドラ入口処理
    262258$
    263259
     
    269265                $TAB$.glb       __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry$NL$
    270266                __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry:$NL$
    271                 $TAB$pushm      r1-r5                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    272                 $TAB$mov.l      #$+EXC.EXCNO[excno]$, r1        ; CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    273                 $TAB$mov.l      #_$EXC.EXCHDR[excno]$, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    274                 $TAB$bra.a      _kernel_exception                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    275         $END$
    276 $END$
    277 
    278 
    279 $ –¢“o˜^CPU—áŠOƒnƒ“ƒhƒ‰“üŒûˆ—
     267                $TAB$pushm      r1-r5                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     268                $TAB$mov.l      #$+EXC.EXCNO[excno]$, r1        ; CPU例外ハンドラ番号をr1へ $NL$
     269                $TAB$mov.l      #_$EXC.EXCHDR[excno]$, r2       ; ハンドラのアドレスをr2へ $NL$
     270                $TAB$bra.a      _kernel_exception                       ; 共通ルーチンへ $NL$$NL$$NL$
     271        $END$
     272$END$
     273
     274
     275$ 未登録CPU例外ハンドラ入口処理
    280276$TAB$.glb$TAB$__kernel_default_exc_handler_entry$NL$
    281277__kernel_default_exc_handler_entry:$NL$
    282 $TAB$pushm      r1-r5                                                           ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ðƒ^ƒXƒNƒXƒ^ƒbƒN‚Ö‘Þ”ð $NL$
    283 $TAB$mov.l      #0FFFFFFFFH, r1                                         ; CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚ðr1‚Ö $NL$
    284 $TAB$mov.l      #__kernel_default_exc_handler, r2       ; ƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX‚ðr2‚Ö $NL$
    285 $TAB$bra.a      _kernel_exception                                       ; ‹¤’ʃ‹[ƒ`ƒ“‚Ö $NL$$NL$$NL$
    286 
    287 
    288 $
    289 ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹
    290 $
    291 
    292 ;$NL$
    293 ‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹$NL$
     278$TAB$pushm      r1-r5                                                           ; スクラッチレジスタをタスクスタックへ退避 $NL$
     279$TAB$mov.l      #0FFFFFFFFH, r1                                         ; CPU例外ハンドラ番号をr1へ $NL$
     280$TAB$mov.l      #__kernel_default_exc_handler, r2       ; ハンドラのアドレスをr2へ $NL$
     281$TAB$bra.a      _kernel_exception                                       ; 共通ルーチンへ $NL$$NL$$NL$
     282
     283
     284$
     285可変ベクタテーブル
     286$
     287
     288;$NL$
     289可変ベクタテーブル$NL$
    294290;$NL$
    295291$NL$
     
    322318
    323319$
    324 ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹
     320固定ベクタテーブル
    325321$
    326322$FOREACH excno EXCNO_RANGE$
     
    334330$NL$
    335331;$NL$
    336 ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹$NL$
     332固定ベクタテーブル$NL$
    337333;$NL$
    338334$NL$
     
    343339
    344340$TAB$ .offset$TAB$ 020H$NL$
    345 $TAB$ .lword$TAB$ 00000000 $TAB$ ; §ŒäƒR[ƒh, IDƒR[ƒh1 - 3$NL$
    346 $TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh4 - 7$NL$
    347 $TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh8 - 11$NL$
    348 $TAB$ .lword$TAB$ 00000000 $TAB$ ; IDƒR[ƒh12 - 15$NL$$NL$
     341$TAB$ .lword$TAB$ 00000000 $TAB$ ; 制御コード, IDコード1 - 3$NL$
     342$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDコード4 - 7$NL$
     343$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDコード8 - 11$NL$
     344$TAB$ .lword$TAB$ 00000000 $TAB$ ; IDコード12 - 15$NL$$NL$
    349345
    350346$TAB$ .offset$TAB$ 050H$NL$
    351 $TAB$ .lword$TAB$ _$EXCHDR[20]$ $TAB$ $TAB$ ;$SPC$ 20:“ÁŒ –½—ß—áŠO $SPC$$NL$
     347$TAB$ .lword$TAB$ _$EXCHDR[20]$ $TAB$ $TAB$ ;$SPC$ 20:特権命令例外 $SPC$$NL$
    352348$TAB$ .offset$TAB$ 05CH$NL$
    353 $TAB$ .lword$TAB$ _$EXCHDR[23]$ $TAB$ $TAB$ ;$SPC$ 23:–¢’è‹`–½—ß—áŠO $SPC$$NL$
     349$TAB$ .lword$TAB$ _$EXCHDR[23]$ $TAB$ $TAB$ ;$SPC$ 23:未定義命令例外 $SPC$$NL$
    354350$TAB$ .offset$TAB$ 064H$NL$
    355 $TAB$ .lword$TAB$ _$EXCHDR[25]$ $TAB$ $TAB$ ;$SPC$ 25:•‚“®¬”“_—áŠO $SPC$$NL$
     351$TAB$ .lword$TAB$ _$EXCHDR[25]$ $TAB$ $TAB$ ;$SPC$ 25:浮動小数点例外 $SPC$$NL$
    356352$TAB$ .offset$TAB$ 078H$NL$
    357 $TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30:ƒmƒ“ƒ}ƒXƒJƒuƒ‹—áŠO $SPC$$NL$
    358 $TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31:ƒŠƒZƒbƒg $SPC$$NL$
     353$TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30:ノンマスカブル例外 $SPC$$NL$
     354$TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31:リセット $SPC$$NL$
    359355
    360356$NL$ $NL$
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_asm_config.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $     asm_config.inc ¶¬—p
    3 $     ƒpƒX2‚̃A[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
     2$     asm_config.inc 生成用
     3$     パス2のアーキテクチャ依存テンプレート(RX630用)
    44$
    55
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_cfg1_out.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    11/*
    2  *              cfg1_out.c‚̃Šƒ“ƒN‚É•K—v‚ȃXƒ^ƒu‚Ì’è‹`
     2 *              cfg1_out.cのリンクに必要なスタブの定義
    33 */
    44
     
    2020
    2121/*
    22  *  ƒIƒtƒZƒbƒgƒtƒ@ƒCƒ‹‚𐶐¬‚·‚邽‚ß‚Ì’è‹`
     22 *  オフセットファイルを生成するための定義
    2323 */
    2424const uint8_t   MAGIC_1 = 0x12;
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_check.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    66$  Copyright (C) 2008-2010 by Witz Corporation, 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‰ü
    10 $  •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13 $      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 $  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15 $      —p‚Å‚«‚éŒ`‚ōĔ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
    21 $      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22 $      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30 $      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31 $      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32 $      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33 $      –Ɛӂ·‚邱‚ƁD
     8$  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     9$  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10$  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11$  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12$      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13$      スコード中に含まれていること.
     14$  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15$      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16$      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17$      の無保証規定を掲載すること.
     18$  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19$      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20$      と.
     21$    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22$        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23$    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24$        報告すること.
     25$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26$      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27$      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28$      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29$      免責すること.
    3430$
    35 –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36 ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37 ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38 ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39 ‚̐ӔC‚𕉂í‚È‚¢D
     31本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35の責任を負わない.
    4036$
    4137$  @(#) $Id$
     
    4339
    4440$
    45 $               ƒpƒX3‚̃vƒƒZƒbƒTˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
     41$               パス3のプロセッサ依存テンプレート(RX630用)
    4642$
    4743
    4844$
    49 ƒ`ƒFƒbƒN•û–@‚ÌŽw’è
     45チェック方法の指定
    5046$
    5147$CHECK_FUNC_ALIGN = 1$
     
    5753
    5854$
    59 •W€ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     55標準テンプレートファイルのインクルード
    6056$
    6157$INCLUDE "kernel/kernel_check.tf"$
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    1010 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21  *      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37  *      –Ɛӂ·‚邱‚ƁD
    38  *
    39  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43  *  ‚̐ӔC‚𕉂í‚È‚¢D
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
     34 *
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    4440 *
    4541 *  @(#) $Id$
     
    4743
    4844/*
    49  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    50 [ƒ‹iRX630—pj
     45 *              プロセッサ依存モジュール(RX630用)
    5146 */
    5247
     
    5651
    5752/*
    58  *  Š„ž‚Ý”­¶‰ñ”‚ð•Û‘¶‚·‚é•Ï”
     53 *  割込み発生回数を保存する変数
    5954 */
    6055uint16_t        intnest;
    6156
    6257/*
    63  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”
     58 *  CPUロックフラグ実現のための変数
    6459 */
    6560#if TIPM_LOCK != -15
    66 bool_t          lock_flag;              /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l‚ð•ÛŽ‚·‚é•Ï” */
    67 uint32_t        saved_ipl;              /* Š„ž‚Ý—Dæ“xƒŒƒxƒ‹‚ð•Û‘¶‚·‚é•Ï” */
     61bool_t          lock_flag;              /* CPUロックフラグの値を保持する変数 */
     62uint32_t        saved_ipl;              /* 割込み優先度レベルを保存する変数 */
    6863#endif  /* TIPM_LOCK != -15     */
    6964
    7065
    7166/*
    72  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     67 *  プロセッサ依存の初期化
    7368 */
    7469void
     
    7671{
    7772        /*
    78          *  Š„ž‚Ý”­¶‰ñ”‚̏‰Šú‰»
    79          *
    80          *  ƒXƒ^[ƒgƒAƒbƒv‚Í‘SŠ„ž‚݃ƒbƒNó‘Ô & ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg
    81          *  ‚É‚Ä“®ì‚·‚邽‚ß, ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚É‹U‘•‚·‚é.
     73         *  割込み発生回数の初期化
     74         *
     75         *  スタートアップは全割込みロック状態 & 非タスクコンテキスト
     76         *  にて動作するため, 非タスクコンテキストに偽装する.
    8277         */
    8378        intnest = 1U;
     
    8580#if TIPM_LOCK != -15
    8681        /*
    87          *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”‚̏‰Šú‰»
     82         *  CPUロックフラグ実現のための変数の初期化
    8883         */
    8984        lock_flag = true;
     
    9489
    9590/*
    96  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹ˆ—
     91 *  プロセッサ依存の終了処理
    9792 */
    9893void
     
    10095{
    10196        /*
    102          *  “Á‚É•K—v‚ȏˆ—‚Í‚È‚¢
    103          */
    104 }
    105 
    106 
    107 /*
    108  *  CPU—áŠO‚Ì”­¶ó‹µ‚̃ƒOo—Í
     97         *  特に必要な処理はない
     98         */
     99}
     100
     101
     102/*
     103 *  CPU例外の発生状況のログ出力
    109104 *
    110  *  CPU—áŠOƒnƒ“ƒhƒ‰‚Ì’†‚©‚çCCPU—áŠOî•ñƒ|ƒCƒ“ƒ^ip_excinfj‚ðˆø”‚Æ‚µ
    111  *  ‚ČĂяo‚·‚±‚ƂŁCCPU—áŠO‚Ì”­¶ó‹µ‚ðƒVƒXƒeƒ€ƒƒO‚ɏo—Í‚·‚éD
     105 *  CPU例外ハンドラの中から,CPU例外情報ポインタ(p_excinf)を引数とし
     106 *  て呼び出すことで,CPU例外の発生状況をシステムログに出力する.
    112107 */
    113108#ifdef SUPPORT_XLOG_SYS
     
    140135
    141136/*
    142  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè
     137 *  割込み要求ラインの属性の設定
    143138 *
    144  *  ASPƒJ[ƒlƒ‹‚Å‚Ì—˜—p‚ð‘z’肵‚āCƒpƒ‰ƒ[ƒ^ƒGƒ‰[‚̓AƒT[ƒVƒ‡ƒ“‚Ń`ƒFƒb
    145  *  ƒN‚µ‚Ä‚¢‚éDcfg_intƒT[ƒrƒXƒR[ƒ‹‚ðÝ‚¯‚éê‡‚ɂ́CƒGƒ‰[‚ð•Ô‚·‚悤
    146  *  ‚É‚·‚ׂ«‚Å‚ ‚낤D
     139 *  ASPカーネルでの利用を想定して,パラメータエラーはアサーションでチェッ
     140 *  クしている.cfg_intサービスコールを設ける場合には,エラーを返すよう
     141 *  にすべきであろう.
    147142 */
    148143void
     
    165160
    166161        /*
    167          *  Š„ž‚݂̃}ƒXƒN
    168          *
    169          *  Š„ž‚Ý‚ðŽó‚¯•t‚¯‚½‚܂܁CƒŒƒxƒ‹ƒgƒŠƒK^ƒGƒbƒWƒgƒŠƒK‚̐ݒè‚âCŠ„
    170          *  ž‚Ý—Dæ“x‚̐ݒè‚ðs‚¤‚̂͊댯‚È‚½‚߁CŠ„ž‚Ý‘®«‚É‚©‚©‚í‚炸C
    171          *  ˆê’Uƒ}ƒXƒN‚·‚éD
     162         *  割込みのマスク
     163         *
     164         *  割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割
     165         *  込み優先度の設定を行うのは危険なため,割込み属性にかかわらず,
     166         *  一旦マスクする.
    172167         */
    173168        ( void )x_disable_int( intno );
    174169
    175170        /*
    176          *  ƒŒƒxƒ‹ƒgƒŠƒK/ƒGƒbƒWƒgƒŠƒK‚̐ݒè
    177          *
    178          *  IRQ‚̂݃Tƒ|[ƒg‚·‚é
     171         *  レベルトリガ/エッジトリガの設定
     172         *
     173         *  IRQのみサポートする
    179174         */
    180175        if( INTNO_IRQ( intno ) != 0U ){
     
    195190                else{
    196191                        /*
    197                          *  ƒRƒ“ƒtƒBƒMƒ
    198 ƒŒ[ƒ^‚ɂă`ƒFƒbƒN‚µ‚Ä‚¢‚邽‚ß,
    199                          *  ‚±‚±‚Ö‚­‚邱‚Æ‚Í‚ ‚肦‚È‚¢.
     192                         *  コンフィギュレータにてチェックしているため,
     193                         *  ここへくることはありえない.
    200194                         */
    201195                        irq_val = 0U;
     
    206200
    207201        /*
    208          *  Š„ž‚݃Œƒxƒ‹‚̐ݒè
    209          *
    210          *  Š„ž‚ݔԍ†‚ɑΉž‚µ‚½IPR’l‚ðÝ’è‚·‚é.
     202         *  割込みレベルの設定
     203         *
     204         *  割込み番号に対応したIPR値を設定する.
    211205         */
    212206        sil_wrb_mem((uint8_t *)ipr_reg_addr[intno], cfg_int_table[intno].intpri);
    213207
    214208        /*
    215          *  Š„ž‚݂̃}ƒXƒN‰ðœ
     209         *  割込みのマスク解除
    216210         */
    217211        if( ( intatr & TA_ENAINT ) != 0U ){
     
    223217#ifndef OMIT_DEFAULT_INT_HANDLER
    224218/*
    225  *  –¢“o˜^‚ÌŠ„ž‚Ý‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     219 *  未登録の割込みが発生した場合に呼び出される
    226220 */
    227221void
     
    234228#ifndef OMIT_DEFAULT_EXC_HANDLER
    235229/*
    236  *  –¢“o˜^‚Ì—áŠO‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     230 *  未登録の例外が発生した場合に呼び出される
    237231 */
    238232void
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1111 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    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‰ü
    15  *  •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔ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
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
    3935 *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 *  @(#) $Id$
     
    4844
    4945/*
    50  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    51 [ƒ‹iRX630—pj
    52  *
    53  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    54  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    55  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     46 *              プロセッサ依存モジュール(RX630用)
     47 *
     48 *  このインクルードファイルは,target_config.h(または,そこからインク
     49 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     50 *  直接インクルードしてはならない.
    5651 */
    5752
     
    6257
    6358/*
    64  *  ƒvƒƒZƒbƒT‚Ì“ÁŽê–½—߂̃Cƒ“ƒ‰ƒCƒ“ŠÖ”’è‹`
     59 *  プロセッサの特殊命令のインライン関数定義
    6560 */
    6661#include "prc_insn.h"
     
    6964
    7065/*
    71  *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN‰Šú’l
     66 *  非タスクコンテキスト用のスタック初期値
    7267 */
    7368
     
    7671
    7772/*
    78  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒN‚Ì’è‹`
     73 *  タスクコンテキストブロックの定義
    7974 */
    8075typedef struct task_context_block {
    81         void    *sp;            /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^ */
    82         FP              pc;                     /* ƒvƒƒOƒ‰ƒ€ƒJƒEƒ“ƒ^ */
     76        void    *sp;            /* スタックポインタ */
     77        FP              pc;                     /* プログラムカウンタ */
    8378} TSKCTXB;
    8479
    8580
    8681/*
    87  *  Š„ž‚Ý”­¶‰ñ”‚ð•Û‘¶‚·‚é•Ï”
     82 *  割込み発生回数を保存する変数
    8883 */
    8984extern uint16_t intnest;
     
    9186
    9287/*
    93  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN
    94  *
    95  *  TIPM_LOCK‚́CCPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNC‚·‚È‚í‚¿CƒJ[ƒl
    96  *  ƒ‹ŠÇ—ŠO‚Ì‚à‚Ì‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý—v‹‚ðƒ}ƒXƒN‚·‚é’l‚É’è‹`‚·‚éD
    97  *
    98  *  TMIN_INTPRI•ÏX‚·‚邱‚Æ‚ÅŠÇ—ŠOŠ„ž‚Ý‚Ì—L–³‚ðŒˆ’è‚·‚éD
    99  *  —Ⴆ‚ÎTMIN_INTPRI‚ð-14‚ɐݒ肷‚é‚ƁCƒŒƒxƒ‹15‚ÌŠ„ž‚Ý‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚Æ
    100  *  ‚È‚éDTMIN_INTPRI‚ð-15‚ɐݒ肷‚é‚ƁCNMIˆÈŠO‚ɃJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ð
    101  *  Ý‚¯‚È‚¢‚±‚Æ‚É‚È‚éi‚±‚̏ꍇ‚É‚Í-15‚ɐݒ肷‚邱‚Ƃ𐄏§‚·‚éjD
     88 *  CPUロック状態での割込み優先度マスク
     89 *
     90 *  TIPM_LOCKは,CPUロック状態での割込み優先度マスク,すなわち,カーネ
     91 *  ル管理外のものを除くすべての割込み要求をマスクする値に定義する.
     92 *
     93 *  TMIN_INTPRI変更することで管理外割込みの有無を決定する.
     94 *  例えばTMIN_INTPRIを-14に設定すると,レベル15の割込みがカーネル管理外と
     95 *  なる.TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを
     96 *  設けないことになる(この場合には-15に設定することを推奨する).
    10297 */
    10398#ifndef TIPM_LOCK
     
    107102
    108103/*
    109  *  TOPPERS•W€Š„ž‚ݏˆ—ƒ‚ƒfƒ‹‚ÌŽÀŒ»
    110  */
    111 /*
    112  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
    113  *
    114  *  RX‚ł́CŠ„ž‚Ý‚Ì–ß‚èæ‚ªƒ^ƒXƒN‚©‚Ç‚¤‚©‚ð”»’f‚·‚邽‚ß‚É intnest
    115  *  ‚ðŽg—p‚µ‚Ä‚¢‚éD‚±‚ê‚ð—p‚¢‚ăRƒ“ƒeƒLƒXƒg‚ð”»’f‚·‚éD
     104 *  TOPPERS標準割込み処理モデルの実現
     105 */
     106/*
     107 *  コンテキストの参照
     108 *
     109 *  RXでは,割込みの戻り先がタスクかどうかを判断するために intnest
     110 *  を使用している.これを用いてコンテキストを判断する.
    116111 */
    117112Inline bool_t
    118113sense_context( void )
    119114{
    120         /*  ƒlƒXƒgƒJƒEƒ“ƒ^0‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg  */
     115        /*  ネストカウンタ0より大なら非タスクコンテキスト  */
    121116        return ( intnest > 0U );
    122117}
     
    124119
    125120/*
    126  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”
    127  *
    128  *  ‚±‚ê‚ç‚̕ϐ”‚́CCPUƒƒbƒNó‘Ô‚ÌŽž‚̂ݏ‘‚«Š·‚¦‚Ä‚æ‚¢‚à‚Ì‚Æ‚·‚éD
     121 *  CPUロックフラグ実現のための変数
     122 *
     123 *  これらの変数は,CPUロック状態の時のみ書き換えてよいものとする.
    129124 */
    130125#if TIPM_LOCK != -15
    131 extern bool_t   lock_flag;              /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l‚ð•ÛŽ‚·‚é•Ï” */
    132 extern uint32_t saved_ipl;              /* Š„ž‚Ý—Dæ“xƒŒƒxƒ‹‚ð•Û‘¶‚·‚é•Ï” */
     126extern bool_t   lock_flag;              /* CPUロックフラグの値を保持する変数 */
     127extern uint32_t saved_ipl;              /* 割込み優先度レベルを保存する変数 */
    133128#endif  /* TIPM_LOCK != -15     */
    134129
     
    137132
    138133/*
    139  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŠO•”•\Œ»‚Æ“à•”•\Œ»‚Ì•ÏŠ·
    140  *
    141  *  RX630‚ł́CƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒ[ƒhƒŒƒWƒXƒ^iPSWj‚̉º‚©‚ç
    142  *  24`27ƒrƒbƒg–Ú‚Ì4ƒrƒbƒg‚ÉŠ„ž‚Ý—Dæ“xƒŒƒxƒ‹iIPLj‚ª’u‚©‚ê‚Ä‚¢‚éD
    143  *  ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚Ý‚ðŽÀ‘•‚·‚éê‡‚ÉIPL‚ðŽg—p‚µ‚½§Œä‚ðs‚¤D
    144  *  ƒJ[ƒlƒ‹‚ÍŠ„ž‚Ý—Dæ“xƒ}ƒXƒNi-1‚©‚ç˜A‘±‚µ‚½•‰‚Ì’lj‚ÅŠÇ—‚³‚ê‚Ä
    145  *  ‚¢‚邽‚ßIPL‚Æ‚Ì•ÏŠ·‚ª•K—v‚Æ‚È‚éD
    146  */
    147 #define IPL_TO_IPM( ipl )       (-(( PRI )(( ipl ) >> 24U )))           /* IPL‚ðIPM‚É   */
    148 #define IPM_TO_IPL( ipm )       ((( uint32_t )(-( ipm ))) << 24U )      /* IPM‚ðIPL‚É   */
    149 
    150 
    151 /*
    152  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌIPL
     134 *  割込み優先度マスクの外部表現と内部表現の変換
     135 *
     136 *  RX630では,プロセッサステータスワードレジスタ(PSW)の下から
     137 *  24〜27ビット目の4ビットに割込み優先度レベル(IPL)が置かれている.
     138 *  カーネル管理外割込みを実装する場合にIPLを使用した制御を行う.
     139 *  カーネルは割込み優先度マスク(-1から連続した負の値)で管理されて
     140 *  いるためIPLとの変換が必要となる.
     141 */
     142#define IPL_TO_IPM( ipl )       (-(( PRI )(( ipl ) >> 24U )))           /* IPLをIPMに     */
     143#define IPM_TO_IPL( ipm )       ((( uint32_t )(-( ipm ))) << 24U )      /* IPMをIPLに     */
     144
     145
     146/*
     147 *  CPUロック状態での割込み優先度マスクのIPL
    153148 */
    154149#define IPL_LOCK                ( IPM_TO_IPL( TIPM_LOCK ) )
    155150
    156151/*
    157  *  TIPM_ENAALLiŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœj‚ÌIPL
     152 *  TIPM_ENAALL(割込み優先度マスク全解除)のIPL
    158153 */
    159154#define IPL_ENAALL              ( IPM_TO_IPL( TIPM_ENAALL ) )
     
    163158
    164159/*
    165  *  Š„ž‚Ý—vˆö–ˆ‚̃Œƒxƒ‹ & ‘®«’è‹`ƒe[ƒuƒ‹
    166  *  (ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚É‚æ‚éo—Í)
     160 *  割込み要因毎のレベル & 属性定義テーブル
     161 *  (テンプレートファイルによる出力)
    167162 */
    168163typedef struct cfg_int_info {
     
    175170
    176171/*
    177  *  Š„ž‚ݔԍ†‚͈̔͂̔»’è
    178  *
    179  *  Š„ž‚ݔԍ†‚ª—LŒø‚È’l‚©Œµ–§‚Ƀ`ƒFƒbƒN‚·‚邽‚ß,
    180  *  ƒRƒ“ƒtƒBƒMƒ
    181 ƒŒ[ƒ^o—̓e[ƒuƒ‹‚ðŽQÆ‚·‚é.
     172 *  割込み番号の範囲の判定
     173 *
     174 *  割込み番号が有効な値か厳密にチェックするため,
     175 *  コンフィギュレータ出力テーブルを参照する.
    182176 */
    183177#define VALID_INTNO( intno )    \
     
    186180#define VALID_INTNO_CFGINT( intno )     VALID_INTNO( intno )
    187181
    188 /* cre_int‚Å—LŒø‚ÈŠ„ž‚ݔԍ†‚ÌŽw’è  */
     182/* cre_intで有効な割込み番号の指定  */
    189183#define VALID_INTNO_CREINT          VALID_INTNO_CFGINT((intno))
    190184
    191 /* cre_isr‚Å—LŒø‚ÈŠ„ž‚ݔԍ†‚ÌŽw’è  */
     185/* cre_isrで有効な割込み番号の指定  */
    192186#define VALID_INTNO_CREISR(intno)       VALID_INTNO_CFGINT((intno))
    193187
    194188
    195189/*
    196  *  Š„ž‚ݐ§ŒäƒŒƒWƒXƒ^ŠÖ˜A‚Ì’è‹`
     190 *  割込み制御レジスタ関連の定義
    197191 */
    198192#define IRQ_POSEDGE                     ( 0x08U )
     
    203197
    204198/*
    205  *  CPUƒƒbƒNó‘Ԃւ̈ڍs
    206  *
    207  *  IPMiƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNj‚ðCsaved_iipm‚É•Û‘¶‚µCƒJ[
    208  *  ƒlƒ‹ŠÇ—ŠO‚Ì‚à‚Ì‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý—v‹‚ðƒ}ƒXƒN‚·‚é’liTIPM_LOCKj
    209  *  ‚ɐݒ肷‚éD‚Ü‚½Clock_flag‚ðTRUE‚É‚·‚éD
    210  *
    211  *  IPM‚ªCÅ‰‚©‚çTIPM_LOCK‚Æ“¯‚¶‚©‚»‚ê‚æ‚荂‚¢ê‡‚ɂ́C‚»‚ê‚ð
    212  *  saved_iipm‚É•Û‘¶‚·‚é‚݂̂ŁCTIPM_LOCK‚ɂ͐ݒ肵‚È‚¢D‚±‚ê‚́Cƒ‚ƒfƒ‹
    213  *  ã‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ªCTIPM_LOCK‚Æ“¯‚¶‚©‚»‚ê‚æ‚荂‚¢ƒŒƒxƒ‹‚ɐݒè
    214  *  ‚³‚ê‚Ä‚¢‚éó‘Ô‚É‚ ‚½‚éD
    215  *
    216  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԁilock_flag‚ªTRUE‚̏ó‘ԁj‚ŌĂ΂ê‚邱‚Æ‚Í
    217  *  ‚È‚¢‚à‚Ì‚Æ‘z’肵‚Ä‚¢‚éD
     199 *  CPUロック状態への移行
     200 *
     201 *  IPM(ハードウェアの割込み優先度マスク)を,saved_iipmに保存し,カー
     202 *  ネル管理外のものを除くすべての割込み要求をマスクする値(TIPM_LOCK)
     203 *  に設定する.また,lock_flagをTRUEにする.
     204 *
     205 *  IPMが,最初からTIPM_LOCKと同じかそれより高い場合には,それを
     206 *  saved_iipmに保存するのみで,TIPM_LOCKには設定しない.これは,モデル
     207 *  上の割込み優先度マスクが,TIPM_LOCKと同じかそれより高いレベルに設定
     208 *  されている状態にあたる.
     209 *
     210 *  この関数は,CPUロック状態(lock_flagがTRUEの状態)で呼ばれることは
     211 *  ないものと想定している.
    218212 */
    219213Inline void
     
    226220
    227221        /*
    228          *  current_ipl()‚Ì•Ô‚è’l‚𒼐Úsaved_ipl‚É•Û‘¶‚¹‚¸CˆêŽž•Ï”ipl
    229          *  ‚ð—p‚¢‚Ä‚¢‚é‚̂́Ccurrent_ipl()‚ðŒÄ‚ñ‚¾’¼Œã‚ÉŠ„ž‚Ý‚ª”­¶‚µC
    230          *  ‹N“®‚³‚ꂽŠ„ž‚ݏˆ—‚Åsaved_ipl‚ª•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚邽‚ß‚Å
    231          *  ‚ ‚éD
     222         *  current_ipl()の返り値を直接saved_iplに保存せず,一時変数ipl
     223         *  を用いているのは,current_ipl()を呼んだ直後に割込みが発生し,
     224         *  起動された割込み処理でsaved_iplが変更される可能性があるためで
     225         *  ある.
    232226         */
    233227        ipl = current_ipl();
     
    246240
    247241/*
    248  *  CPUƒƒbƒNó‘Ԃ̉ðœ
    249  *
    250  *  lock_flag‚ðFALSE‚É‚µCIPMiƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNj‚ðC
    251  *  saved_iipm‚É•Û‘¶‚µ‚½’l‚É–ß‚·D
    252  *
    253  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԁilock_flag‚ªtrue‚̏ó‘ԁj‚ł̂݌Ă΂ê‚é‚à
    254  *  ‚Ì‚Æ‘z’肵‚Ä‚¢‚éD
     242 *  CPUロック状態の解除
     243 *
     244 *  lock_flagをFALSEにし,IPM(ハードウェアの割込み優先度マスク)を,
     245 *  saved_iipmに保存した値に戻す.
     246 *
     247 *  この関数は,CPUロック状態(lock_flagがtrueの状態)でのみ呼ばれるも
     248 *  のと想定している.
    255249 */
    256250Inline void
     
    270264
    271265/*
    272  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     266 *  CPUロック状態の参照
    273267 */
    274268Inline bool_t
     
    287281
    288282/*
    289  * iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚̐ݒè
    290  *
    291  *  CPUƒƒbƒNƒtƒ‰ƒO‚ªƒNƒŠƒA‚³‚ê‚Ä‚¢‚鎞‚́Cƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}
    292  *  ƒXƒN‚ðÝ’è‚·‚éDCPUƒƒbƒNƒtƒ‰ƒO‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚鎞‚́Csaved_iipm
    293  *  ‚ðÝ’肵C‚³‚ç‚ɁCƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ðCÝ’肵‚悤‚Æ
    294  *  ‚µ‚½iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÆTIPM_LOCK‚̍‚‚¢•û‚ɐݒ肷‚éD
     283 * (モデル上の)割込み優先度マスクの設定
     284 *
     285 *  CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ
     286 *  スクを設定する.CPUロックフラグがセットされている時は,saved_iipm
     287 *  を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと
     288 *  した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する.
    295289 */
    296290Inline void
     
    316310
    317311/*
    318  * iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŽQÆ
    319  *
    320  *  CPUƒƒbƒNƒtƒ‰ƒO‚ªƒNƒŠƒA‚³‚ê‚Ä‚¢‚鎞‚̓n[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}
    321  *  ƒXƒN‚ðCƒZƒbƒg‚³‚ê‚Ä‚¢‚鎞‚Ísaved_iipm‚ðŽQÆ‚·‚éD
     312 * (モデル上の)割込み優先度マスクの参照
     313 *
     314 *  CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ
     315 *  スクを,セットされている時はsaved_iipmを参照する.
    322316 */
    323317Inline PRI
     
    343337
    344338/*
    345  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃Zƒbƒg
    346  *
    347  *  Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɑ΂µ‚ÄŠ„ž‚Ý—v‹‹ÖŽ~
    348  *  ƒtƒ‰ƒO‚ðƒZƒbƒg‚µ‚悤‚Æ‚µ‚½ê‡‚ɂ́CFALSE‚ð•Ô‚·D
     339 *  割込み要求禁止フラグのセット
     340 *
     341 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
     342 *  フラグをセットしようとした場合には,FALSEを返す.
    349343 */
    350344Inline bool_t
     
    352346{
    353347        /*
    354          *  ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢
     348         *  レベル定義が0である場合はCFG_INTされていない
    355349         */
    356350        if( cfg_int_table[intno].intpri == 0 ){
     
    368362
    369363/*
    370  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃NƒŠƒA
    371  *
    372  *  Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɑ΂µ‚ÄŠ„ž‚Ý—v‹‹ÖŽ~
    373  *  ƒtƒ‰ƒO‚ðƒNƒŠƒA‚µ‚悤‚Æ‚µ‚½ê‡‚ɂ́CFALSE‚ð•Ô‚·D
     364 *  割込み要求禁止フラグのクリア
     365 *
     366 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
     367 *  フラグをクリアしようとした場合には,FALSEを返す.
    374368 */
    375369Inline bool_t
     
    377371{
    378372        /*
    379          *  ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢
     373         *  レベル定義が0である場合はCFG_INTされていない
    380374         */
    381375        if( cfg_int_table[intno].intpri == 0 ){
     
    393387
    394388/*
    395  *  Š„ž‚Ý—v‹‚̃NƒŠƒA
     389 *  割込み要求のクリア
    396390 */
    397391Inline void
     
    406400
    407401/*
    408  *  Š„ž‚Ý—v‹‚̃`ƒFƒbƒN
     402 *  割込み要求のチェック
    409403 */
    410404Inline bool_t
     
    412406{
    413407        /*
    414          *  Š„ž‚Ý—v‹ƒŒƒWƒXƒ^‚Í0 or 1‚Å‚µ‚©‚È‚¢‚½‚ß,
    415          *  ‚»‚Ì‚Ü‚Ü‚Ì’l‚ð•Ô‚·.
     408         *  割込み要求レジスタは0 or 1でしかないため,
     409         *  そのままの値を返す.
    416410         */
    417411        return ( *IR_REG(intno) );
     
    423417
    424418/*
    425  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè
     419 *  割込み要求ラインの属性の設定
    426420 */
    427421extern void     x_config_int( INTNO intno, ATR intatr, PRI intpri );
     
    429423
    430424/*
    431  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒû‚Å•K—v‚ÈIRC‘€ì
     425 *  割込みハンドラの入口で必要なIRC操作
    432426 *
    433427 */
     
    438432
    439433        /*
    440          *  ƒŒƒxƒ‹ŒŸo‚ÌŠ„ž‚݂ɑ΂µ‚Ä‚ÍŠ„ž‚݃Xƒe[ƒ^ƒX
    441          *  ƒtƒ‰ƒO‚ðƒNƒŠƒA‚·‚é.
     434         *  レベル検出の割込みに対しては割込みステータス
     435         *  フラグをクリアする.
    442436         */
    443437        if( ( cfg_int_table[intno].intatr & TA_LOWLEVEL ) > 0 ){
    444438                if( *IR_REG(intno) > 0U ){
    445439                        /*
    446                          *  ŠO•”Š„ž‚݂̏ꍇ, IRQ’[Žq‚ªHigh‚É–ß‚Á‚Ä‚¢‚é
    447                          *  ‚±‚Æ‚ðŠm”F‚·‚éŽ|‚ª‹LÚ‚³‚ê‚Ä‚¢‚邪, È—ª‚·‚é.
     440                         *  外部割込みの場合, IRQ端子がHighに戻っている
     441                         *  ことを確認する旨が記載されているが, 省略する.
    448442                         */
    449443                //      *ir_reg_addr[intno] = 0U;
    450444
    451445                        /*
    452                          *  ƒn[ƒhƒEƒFƒAƒ}ƒjƒ
    453 ƒAƒ‹‚É0‚É‚È‚Á‚½‚±‚Æ‚ð
    454                          *  Šm”F‚·‚éŽ|‚ª‹LÚ‚ ‚邽‚ß, ƒŒƒWƒXƒ^’l‚ð“ǂݏo‚·.
     446                         *  ハードウェアマニュアルに0になったことを
     447                         *  確認する旨が記載あるため, レジスタ値を読み出す.
    455448                         */
    456449                //      reg = *ir_reg_addr[intno];
     
    461454
    462455/*
    463  *  Š„ž‚݃nƒ“ƒhƒ‰‚̏oŒû‚Å•K—v‚ÈIRC‘€ì
     456 *  割込みハンドラの出口で必要なIRC操作
    464457 *
    465458 */
     
    467460i_end_int( INTNO intno )
    468461{
    469         /* “Á‚ɍs‚¤‚ׂ«ˆ—‚Í‚È‚¢ */
    470 }
    471 
    472 
    473 /*
    474  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`iprc_support.a30j
    475  *
    476  *  dispatch‚́Cƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚©‚çŒÄ‚яo‚³‚ꂽƒT[ƒrƒXƒR[ƒ‹ˆ—‚©
    477  *  ‚çŒÄ‚яo‚·‚ׂ«‚à‚̂ŁCƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgECPUƒƒbƒNó‘ԁEƒfƒBƒXƒpƒb
    478  *  ƒ`‹–‰Âó‘ԁEiƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘ԂŌĂяo‚³‚È
    479  *  ‚¯‚ê‚΂Ȃç‚È‚¢D
     462        /* 特に行うべき処理はない */
     463}
     464
     465
     466/*
     467 *  最高優先順位タスクへのディスパッチ(prc_support.a30)
     468 *
     469 *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
     470 *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ
     471 *  チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな
     472 *  ければならない.
    480473 */
    481474extern void     dispatch( void );
    482475
    483476/*
    484  *  ƒfƒBƒXƒpƒbƒ`ƒƒ‚Ì“®ìŠJŽniprc_support.a30j
    485  *
    486  *  start_dispatch‚́CƒJ[ƒlƒ‹‹N“®Žž‚ɌĂяo‚·‚ׂ«‚à‚̂ŁC‚·‚ׂĂ̊„ž
    487  *  ‚Ý‚ð‹ÖŽ~‚µ‚½ó‘ԁi‘SŠ„ž‚݃ƒbƒNó‘Ô‚Æ“¯“™‚̏ó‘ԁj‚ŌĂяo‚³‚È‚¯‚ê‚Î
    488  *  ‚È‚ç‚È‚¢D
     477 *  ディスパッチャの動作開始(prc_support.a30)
     478 *
     479 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     480 *  みを禁止した状態(全割込みロック状態と同等の状態)で呼び出さなければ
     481 *  ならない.
    489482 */
    490483extern void     start_dispatch( void ) NoReturn;
    491484
    492485/*
    493  *  Œ»Ý‚̃Rƒ“ƒeƒLƒXƒg‚ðŽÌ‚ĂăfƒBƒXƒpƒbƒ`iprc_support.a30j
    494  *
    495  *  exit_and_dispatch‚́Cext_tsk‚©‚çŒÄ‚яo‚·‚ׂ«‚à‚̂ŁCƒ^ƒXƒNƒRƒ“ƒeƒL
    496  *  ƒXƒgECPUƒƒbƒNó‘ԁEƒfƒBƒXƒpƒbƒ`‹–‰Âó‘ԁEiƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ
    497  *  “xƒ}ƒXƒN‘S‰ðœó‘ԂŌĂяo‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢D
     486 *  現在のコンテキストを捨ててディスパッチ(prc_support.a30)
     487 *
     488 *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
     489 *  スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先
     490 *  度マスク全解除状態で呼び出さなければならない.
    498491 */
    499492#define _kernel_exit_and_dispatch();    \
     
    504497
    505498/*
    506  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µiprc_support.a30j
    507  *
    508  *  call_exit_kernel‚́CƒJ[ƒlƒ‹‚̏I—¹Žž‚ɌĂяo‚·‚ׂ«‚à‚̂ŁC”ñƒ^ƒXƒN
    509  *  ƒRƒ“ƒeƒLƒXƒg‚ɐ؂芷‚¦‚āCƒJ[ƒlƒ‹‚̏I—¹ˆ—iexit_kernelj‚ðŒÄ‚яo
    510  *  ‚·D
     499 *  カーネルの終了処理の呼出し(prc_support.a30)
     500 *
     501 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     502 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     503 *  す.
    511504 */
    512505extern void call_exit_kernel( void ) NoReturn;
    513506
    514507/*
    515  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚̏‰Šú‰»
    516  *
    517  *  ƒ^ƒXƒN‚ª‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘ԂɈڍs‚·‚鎞‚ɌĂ΂ê‚éD‚±‚ÌŽž“_
    518  *  ‚ŃXƒ^ƒbƒN—̈æ‚ðŽg‚Á‚Ä‚Í‚È‚ç‚È‚¢D
    519  *
    520  *  activate_context‚ðCƒCƒ“ƒ‰ƒCƒ“ŠÖ”‚Å‚Í‚È‚­ƒ}ƒNƒ’è‹`‚Æ‚µ‚Ä‚¢‚é‚̂́C
    521  *  ‚±‚ÌŽž“_‚Å‚ÍTCB‚ª’è‹`‚³‚ê‚Ä‚¢‚È‚¢‚½‚ß‚Å‚ ‚éD
     508 *  タスクコンテキストの初期化
     509 *
     510 *  タスクが休止状態から実行できる状態に移行する時に呼ばれる.この時点
     511 *  でスタック領域を使ってはならない.
     512 *
     513 *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
     514 *  この時点ではTCBが定義されていないためである.
    522515 */
    523516extern void     start_r( void );
     
    527520        {                                                                                                                                                                       \
    528521                                                                                                                                                                                \
    529                 /*  ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‰Šú’l‚ÌÝ’è  */                                                                                    \
     522                /*  スタックポインタ初期値の設定  */                                                                                  \
    530523                ( p_tcb )->tskctxb.sp = ( void * )((( uint32_t ) ( p_tcb )->p_tinib->stk ) +    \
    531524                                                                ( p_tcb )->p_tinib->stksz );                                                    \
    532                 /* ‹N“®”Ô’n‚̐ݒè */                                                                                                                    \
     525                /* 起動番地の設定 */                                                                                                                   \
    533526                ( p_tcb )->tskctxb.pc = ( FP ) start_r;                                                                                 \
    534527        }                                                                                                                                                                       \
     
    537530
    538531/*
    539  *  calltex‚ÍŽg—p‚µ‚È‚¢
     532 *  calltexは使用しない
    540533 */
    541534#define OMIT_CALLTEX
     
    543536
    544537/*
    545  *  Š„ž‚݃nƒ“ƒhƒ‰‚̐ݒè
    546  *
    547  *  RX630‚ÍROM‚ÉŠ„ž‚݃xƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹óŠÖ”‚ÅŽÀ‘•‚·‚éD
     538 *  割込みハンドラの設定
     539 *
     540 *  RX630はROMに割込みベクタを配置するため,本関数は空関数で実装する.
    548541 */
    549542Inline void
     
    554547
    555548/*
    556  *  CPU—áŠOƒnƒ“ƒhƒ‰‚̐ݒè
    557  *
    558  *  RX630‚ÍROM‚É—áŠOƒxƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹óŠÖ”‚ÅŽÀ‘•‚·‚éD
     549 *  CPU例外ハンドラの設定
     550 *
     551 *  RX630はROMに例外ベクタを配置するため,本関数は空関数で実装する.
    559552 */
    560553Inline void
     
    565558
    566559/*
    567  *  Š„ž‚Ý/—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
    568  *
    569  *  ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚É‚æ‚萶¬‚·‚邽‚ß‹óƒ}ƒNƒ‚Æ‚·‚éD
     560 *  割込み/例外ハンドラの入口処理の生成マクロ
     561 *
     562 *  テンプレートファイルにより生成するため空マクロとする.
    570563 */
    571564#define HDR_ENTRY(hdr, intexc_num , tobejmp)
    572565
    573566/*
    574  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     567 *  割込みハンドラの入口処理の生成マクロ
    575568 */
    576569#define _INT_ENTRY(inhno, inthdr)                               _kernel_##inthdr##_##inhno##_entry
     
    583576
    584577/*
    585  *  CPU—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     578 *  CPU例外ハンドラの入口処理の生成マクロ
    586579 */
    587580#define _EXC_ENTRY(excno , exchdr)                                      _kernel_##exchdr##_##excno##_entry
     
    594587
    595588/*
    596  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÌŽQÆ
    597  *
    598  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ªCƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ÌŽž‚ÉFALSEC
    599  *  ‚»‚¤‚Å‚È‚¢Žž‚Étrue‚ð•Ô‚·D
     589 *  CPU例外の発生した時のコンテキストの参照
     590 *
     591 *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にFALSE,
     592 *  そうでない時にtrueを返す.
    600593 */
    601594Inline bool_t
     
    603596{
    604597        /*
    605          *  ƒlƒXƒgƒJƒEƒ“ƒ^‚ª1‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg
     598         *  ネストカウンタが1より大なら非タスクコンテキスト
    606599         */
    607600        return( intnest > 1U );
     
    610603
    611604/*
    612  *  CPU—áŠOî•ñ p_excinf ‚©‚ç PSW ‚Ì’l‚ðŽæ“¾‚·‚邽‚߂̃IƒtƒZƒbƒg’l
    613  *  EXCNO + ACC + FPSW + R1`R15 + PC
     605 *  CPU例外情報 p_excinf から PSW の値を取得するためのオフセット値
     606 *  EXCNO + ACC + FPSW + R1R15 + PC
    614607 */
    615608#define EXC_GET_PSW_OFFSET      (4+8+4+60+4)
    616609
    617610/*
    618  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚ÌIPL‚ÌŽQÆ
     611 *  CPU例外の発生した時のIPLの参照
    619612 */
    620613Inline uint32_t
     
    634627
    635628/*
    636  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÆŠ„ž‚݂̃}ƒXƒNó‘Ô‚ÌŽQÆ
    637  *
    638  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃VƒXƒeƒ€ó‘Ô‚ªCƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚­Cƒ^ƒXƒNƒR
    639  *  ƒ“ƒeƒLƒXƒg‚Å‚ ‚èC‘SŠ„ž‚݃ƒbƒNó‘Ô‚Å‚È‚­CCPUƒƒbƒNó‘Ô‚Å‚È‚­Ciƒ‚
    640  *  ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å‚ ‚鎞‚ÉtrueC‚»‚¤‚Å‚È‚¢Žž
    641  *  ‚ÉFALSE‚ð•Ô‚·iCPU—áŠO‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚ݏˆ—’†‚Å”­¶‚µ‚½ê‡
    642  *  ‚É‚àFALSE‚ð•Ô‚·jD
     629 *  CPU例外の発生した時のコンテキストと割込みのマスク状態の参照
     630 *
     631 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     632 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,(モ
     633 *  デル上の)割込み優先度マスク全解除状態である時にtrue,そうでない時
     634 *  にFALSEを返す(CPU例外がカーネル管理外の割込み処理中で発生した場合
     635 *  にもFALSEを返す).
    643636 * 
    644  *  ƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚¢¨ (TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     637 *  カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1
    645638 *                         (else)           IPL < IPL_LOCK
    646  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Å‚ ‚遨intnest == 0
    647  *  ‘SŠ„ž‚݃ƒbƒN‚Å‚È‚¢¨ Iƒtƒ‰ƒO == 1
    648  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ª‘S‰ðœ¨IPL == 0
     639 *  タスクコンテキストである→intnest == 0
     640 *  全割込みロックでない→ Iフラグ == 1
     641 *  割込み優先度マスクが全解除→IPL == 0
    649642 * 
    650643 * 
     
    659652
    660653/*
    661  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÆŠ„ž‚݁^CPUƒƒbƒNó‘Ô‚ÌŽQÆ
    662  *
    663  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃VƒXƒeƒ€ó‘Ô‚ªCƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚­Cƒ^ƒXƒNƒR
    664  *  ƒ“ƒeƒLƒXƒg‚Å‚ ‚èC‘SŠ„ž‚݃ƒbƒNó‘Ô‚Å‚È‚­CCPUƒƒbƒNó‘Ô‚Å‚È‚¢Žž‚É
    665  *  trueC‚»‚¤‚Å‚È‚¢Žž‚Éfalse‚ð•Ô‚·iCPU—áŠO‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚ݏˆ
    666  *  —’†‚Å”­¶‚µ‚½ê‡‚É‚àfalse‚ð•Ô‚·jD
     654 *  CPU例外の発生した時のコンテキストと割込み/CPUロック状態の参照
     655 *
     656 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     657 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でない時に
     658 *  true,そうでない時にfalseを返す(CPU例外がカーネル管理外の割込み処
     659 *  理中で発生した場合にもfalseを返す).
    667660 * 
    668  *  ƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚¢¨ (TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     661 *  カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1
    669662 *                         (else)           IPL < TIPM_LOCK
    670  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Å‚ ‚遨intnest < 1
    671  *  ‘SŠ„ž‚݃ƒbƒN‚Å‚È‚¢¨ Iƒtƒ‰ƒO == 1
    672  *  CPUƒƒbƒNó‘Ô‚Å‚È‚¢¨(TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     663 *  タスクコンテキストである→intnest < 1
     664 *  全割込みロックでない→ Iフラグ == 1
     665 *  CPUロック状態でない→(TIPM_LOCK== -15) Iフラグ == 1
    673666 *                         (else)           IPL < TIPM_LOCK
    674667 */
     
    688681
    689682/*
    690  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     683 *  プロセッサ依存の初期化
    691684 */
    692685extern void     prc_initialize( void );
    693686
    694687/*
    695  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹Žžˆ—
     688 *  プロセッサ依存の終了時処理
    696689 */
    697690extern void     prc_terminate( void );
     
    700693#ifndef OMIT_DEFAULT_INT_HANDLER
    701694/*
    702  *  –¢“o˜^‚ÌŠ„ž‚Ý‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     695 *  未登録の割込みが発生した場合に呼び出される
    703696 */
    704697void default_int_handler( void );
     
    707700#ifndef OMIT_DEFAULT_EXC_HANDLER
    708701/*
    709  *  –¢“o˜^‚Ì—áŠO‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     702 *  未登録の例外が発生した場合に呼び出される
    710703 */
    711704void default_exc_handler( void );
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_def.csv

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_insn.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1010 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    1111 *
    12  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    13  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    14  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    15  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    16  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    17  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    18  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    19  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    20 ƒƒ“ƒgi—˜—p
    21  *      ŽÒƒ}ƒjƒ
    22 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    23  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    24  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    25  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    26  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    34  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    35  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    36  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    37  *      –Ɛӂ·‚邱‚ƁD
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
    3834 *
    39  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    40  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    41  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    42  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    43  *  ‚̐ӔC‚𕉂í‚È‚¢D
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    4440 *
    4541 *  @(#) $Id$
     
    4743
    4844/*
    49  *              ƒvƒƒZƒbƒT‚Ì“ÁŽê–½—߂̃Cƒ“ƒ‰ƒCƒ“ŠÖ”’è‹`iRX630—pj
     45 *              プロセッサの特殊命令のインライン関数定義(RX630用)
    5046 */
    5147
     
    6561
    6662/*
    67  *  Iƒtƒ‰ƒO, IPL‚ðŽæ“¾‚·‚邽‚߂̃}ƒNƒ’è‹`
     63 *  Iフラグ, IPLを取得するためのマクロ定義
    6864 */
    6965#define PSW_I_MASK              ( 0x00010000UL )
     
    7268
    7369/*
    74  *  ƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^(PSW)‚ÌŒ»Ý’l‚̓Ǐo‚µ
     70 *  プロセッサステータスレジスタ(PSW)の現在値の読出し
    7571 */
    7672#pragma inline_asm      current_psw
     
    8379
    8480/*
    85  *  ƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^(PSW)‚֐ݒè
     81 *  プロセッサステータスレジスタ(PSW)へ設定
    8682 */
    8783#pragma inline_asm      set_psw
     
    9490
    9591/*
    96  *  IPL‚ÌŒ»Ý’l‚̓Ǐo‚µ
     92 *  IPLの現在値の読出し
    9793 */
    9894Inline uint32_t
     
    104100
    105101/*
    106  *  IPL‚֐ݒè
     102 *  IPLへ設定
    107103 */
    108104Inline void
     
    114110
    115111/*
    116  *  NMI‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý‚Ì‹ÖŽ~
     112 *  NMIを除くすべての割込みの禁止
    117113 */
    118114#pragma inline_asm      disint
     
    125121
    126122/*
    127  *  NMI‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý‚Ì‹–‰Â
     123 *  NMIを除くすべての割込みの許可
    128124 */
    129125#pragma inline_asm      enaint
     
    136132
    137133/*
    138  *  ƒGƒ“ƒfƒBƒAƒ“•ÏŠ· 16bit
     134 *  エンディアン変換 16bit
    139135 */
    140136#pragma inline_asm      rev_endian_uint16
     
    146142
    147143/*
    148  *  ƒGƒ“ƒfƒBƒAƒ“•ÏŠ· 32bit
     144 *  エンディアン変換 32bit
    149145 */
    150146#pragma inline_asm      rev_endian_uint32
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_kernel.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *  Copyright (C) 2008-2010 by Witz Corporation, 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‰ü
    10  *  •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔ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
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     8 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              kernel.h‚̃vƒƒZƒbƒTˆË‘¶•”iRX630—pj
     41 *              kernel.hのプロセッサ依存部(RX630用)
    4642 *
    47  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_kernel.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    48  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    49  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     43 *  このインクルードファイルは,target_kernel.h(または,そこからインク
     44 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     45 *  直接インクルードしてはならない.
    5046 */
    5147
     
    5450
    5551/*
    56  *  ƒJ[ƒlƒ‹–{‘Ì‚ðƒRƒ“ƒpƒCƒ‹‚·‚邽‚߂̃}ƒNƒ’è‹`
     52 *  カーネル本体をコンパイルするためのマクロ定義
    5753 *
    58  *  –{ŠÂ‹«‚Å‚Í1ŠÖ”‚ð1ƒIƒuƒWƒFƒNƒgƒtƒ@ƒCƒ‹‚ɃRƒ“ƒpƒCƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚½‚߁C
    59  *  ALLFUNCƒ}ƒNƒ‚ð’è‹`‚·‚éD
     54 *  本環境では1関数を1オブジェクトファイルにコンパイルすることができないため,
     55 *  ALLFUNCマクロを定義する.
    6056 */
    6157#define ALLFUNC
     
    6359
    6460/*
    65  *  ƒTƒ|[ƒg‚·‚é‹@”\‚Ì’è‹`
     61 *  サポートする機能の定義
    6662 */
    67 #define TOPPERS_TARGET_SUPPORT_DIS_INT          /* dis_int‚ðƒTƒ|[ƒg‚·‚é */
    68 #define TOPPERS_TARGET_SUPPORT_ENA_INT          /* ena_int‚ðƒTƒ|[ƒg‚·‚é */
     63#define TOPPERS_TARGET_SUPPORT_DIS_INT          /* dis_intをサポートする */
     64#define TOPPERS_TARGET_SUPPORT_ENA_INT          /* ena_intをサポートする */
    6965
    7066
    7167/*
    72  *  ƒJ[ƒlƒ‹ŠÇ—‚ÌŠ„ž‚Ý—Dæ“x‚͈̔Í
     68 *  カーネル管理の割込み優先度の範囲
    7369 *
    74  *  TMIN_INTPRI‚Ì’è‹`‚ð•ÏX‚·‚邱‚ƂŁC‚ǂ̃Œƒxƒ‹‚æ‚è‚à‚‚¢Š„ž‚Ý—Dæ“x
    75  *  ‚ðŽ‚Â‚à‚Ì‚ðƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚Æ‚·‚é‚©‚ð•ÏX‚Å‚«‚éD
     70 *  TMIN_INTPRIの定義を変更することで,どのレベルよりも高い割込み優先度
     71 *  を持つものをカーネル管理外の割込みとするかを変更できる.
    7672 *
    77  *  TMIN_INTPRI‚ɐݒè‚Å‚«‚é’l‚́C-15`-1‚͈̔͂ł ‚éD—Ⴆ‚ÎTMIN_INTPRI
    78  *  ‚ð-14‚ɐݒ肷‚é‚ƁCNMI‚ɉÁ‚¦‚ăŒƒxƒ‹7‚ÌŠ„ž‚Ý‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚Æ‚È‚éD
    79  *  TMIN_INTPRI‚ð-15‚ɐݒ肷‚é‚ƁCNMIˆÈŠO‚ɃJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ð
    80  *  Ý‚¯‚È‚¢‚±‚Æ‚É‚È‚éD
     73 *  TMIN_INTPRIに設定できる値は,-15〜-1の範囲である.例えばTMIN_INTPRI
     74 *  を-14に設定すると,NMIに加えてレベル7の割込みがカーネル管理外となる.
     75 *  TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを
     76 *  設けないことになる.
    8177 */
    8278#ifndef TMIN_INTPRI
    83 #define TMIN_INTPRI             ( -15 )         /* Š„ž‚Ý—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
     79#define TMIN_INTPRI             ( -15 )         /* 割込み優先度の最小値(最高値)*/
    8480#endif /* TMIN_INTPRI */
    85 #define TMAX_INTPRI             ( -1 )          /* Š„ž‚Ý—Dæ“x‚̍őå’liÅ’á’lj */
     81#define TMAX_INTPRI             ( -1 )          /* 割込み優先度の最大値(最低値) */
    8682
    8783
    8884/*
    89  *  Š„ž‚Ý‘®«‚Ì’è‹`
     85 *  割込み属性の定義
    9086 */
    91 #define TA_POSEDGE              TA_EDGE                 /* ƒ|ƒWƒeƒBƒuƒGƒbƒWƒgƒŠƒK */
    92 #define TA_NEGEDGE              UINT_C( 0x04 )  /* ƒlƒKƒeƒBƒuƒGƒbƒWƒgƒŠƒK */
    93 #define TA_BOTHEDGE             UINT_C( 0x08 )  /* —¼ƒGƒbƒWƒgƒŠƒK */
     87#define TA_POSEDGE              TA_EDGE                 /* ポジティブエッジトリガ */
     88#define TA_NEGEDGE              UINT_C( 0x04 )  /* ネガティブエッジトリガ */
     89#define TA_BOTHEDGE             UINT_C( 0x08 )  /* 両エッジトリガ */
    9490
    95 #define TA_LOWLEVEL             UINT_C( 0x10 )  /* LƒŒƒxƒ‹ */
     91#define TA_LOWLEVEL             UINT_C( 0x10 )  /* Lレベル */
    9692
    9793
    9894/*
    99  *  ƒfƒtƒHƒ‹ƒg‚ÌŠ„ž‚Ý/—áŠOƒnƒ“ƒhƒ‰‚Ì—L–³
     95 *  デフォルトの割込み/例外ハンドラの有無
    10096 */
    10197/*#define       OMIT_DEFAULT_INT_HANDLER*/
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_offset.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $               ƒIƒtƒZƒbƒgƒtƒ@ƒCƒ‹¶¬—pƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹iRX630—pj
     2$               オフセットファイル生成用テンプレートファイル(RX630用)
    33$
    44
    55$
    6 ƒIƒtƒZƒbƒg’l‚̃}ƒNƒ’è‹`‚̐¶¬
     6オフセット値のマクロ定義の生成
    77$
    88$DEFINE("TCB_p_tinib", offsetof_TCB_p_tinib)$
     
    1515
    1616$
    17 ƒrƒbƒgƒIƒtƒZƒbƒg’l“™‚̃}ƒNƒ’è‹`‚̐¶¬
     17ビットオフセット値等のマクロ定義の生成
    1818$
    1919$DEFINE_BIT("TCB_enatex", sizeof_TCB, "B")$
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_rename.def

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_rename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_sil.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    55 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16  *      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32  *      –Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12 *      スコード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16 *      の無保証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19 *      と.
     20 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23 *        報告すること.
     24 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28 *      免責すること.
    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
    37  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38  *  ‚̐ӔC‚𕉂í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34 *  の責任を負わない.
    3935 *
    4036 *  @(#) $Id$
     
    4238
    4339/*
    44  *              sil.h‚̃vƒƒZƒbƒTˆË‘¶•”iRX630—pj
     40 *              sil.hのプロセッサ依存部(RX630用)
    4541 */
    4642
     
    5551
    5652/*
    57  *  ‘SŠ„ž‚Ý‹ÖŽ~
     53 *  全割込み禁止
    5854 */
    5955Inline uint32_t
     
    7066
    7167/*
    72  *  ‘SŠ„ž‚Ý‹–‰Â
     68 *  全割込み許可
    7369 */
    7470Inline void
     
    8278
    8379/*
    84  *  ‘SŠ„ž‚݃ƒbƒNó‘Ԃ̐§Œä
     80 *  全割込みロック状態の制御
    8581 */
    8682#define SIL_PRE_LOC             uint32_t TOPPERS_i_psw;
     
    9086
    9187/*
    92  *  ƒGƒ“ƒfƒBƒAƒ“‚Ì”½“]
     88 *  エンディアンの反転
    9389 *
    94  *  –{ŠJ”­ŠÂ‹«‚ł̓Gƒ“ƒfƒBƒAƒ“•ÏŠ·–½—ß‚ª‘¶Ý‚·‚邽‚ß,
    95  *  ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶•”‚ɂă}ƒNƒ‚ðã‘‚«‚·‚é.
     90 *  本開発環境ではエンディアン変換命令が存在するため,
     91 *  アーキテクチャ依存部にてマクロを上書きする.
    9692 */
    9793#define TOPPERS_SIL_REV_ENDIAN_UINT16( data )   \
     
    10298
    10399/*
    104  *  ”÷­ŽžŠÔ‘Ò‚¿
     100 *  微少時間待ち
    105101 */
    106102extern void sil_dly_nse( ulong_t dlytim );
     
    110106
    111107/*
    112  *  ƒvƒƒZƒbƒT‚̃Gƒ“ƒfƒBƒAƒ“
     108 *  プロセッサのエンディアン
    113109 */
    114110#ifdef __LIT
    115 #define SIL_ENDIAN_LITTLE                       /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ */
     111#define SIL_ENDIAN_LITTLE                       /* リトルエンディアン */
    116112#endif
    117113#ifdef __BIG
    118 #define SIL_ENDIAN_BIG                          /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ */
     114#define SIL_ENDIAN_BIG                          /* ビッグエンディアン */
    119115#endif
    120116
    121117
    122118/*
    123  *  8ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     119 *  8ビット単位の読出し/書込み
    124120 */
    125121#ifdef UINT8_MAX
     
    145141
    146142/*
    147  *  16ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     143 *  16ビット単位の読出し/書込み
    148144 */
    149145
     
    165161}
    166162
    167 #ifdef SIL_ENDIAN_BIG                   /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     163#ifdef SIL_ENDIAN_BIG                   /* ビッグエンディアンプロセッサ */
    168164
    169165#define sil_reh_bem(mem)                sil_reh_mem(mem)
     
    194190#endif /* TOPPERS_OMIT_SIL_WRH_LEM */
    195191#else /* SIL_ENDIAN_BIG */
    196 #ifdef SIL_ENDIAN_LITTLE                /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     192#ifdef SIL_ENDIAN_LITTLE                /* リトルエンディアンプロセッサ */
    197193
    198194#define sil_reh_lem(mem)                sil_reh_mem(mem)
     
    230226
    231227/*
    232  *  32ƒrƒbƒg’PˆÊ‚̓Ǐo‚µ^‘ž‚Ý
     228 *  32ビット単位の読出し/書込み
    233229 */
    234230
     
    250246}
    251247
    252 #ifdef SIL_ENDIAN_BIG                   /* ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     248#ifdef SIL_ENDIAN_BIG                   /* ビッグエンディアンプロセッサ */
    253249
    254250#define sil_rew_bem(mem)                sil_rew_mem(mem)
     
    278274
    279275#endif /* TOPPERS_OMIT_SIL_WRW_LEM */
    280 #else /* SIL_ENDIAN_BIG */              /* ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ƒvƒƒZƒbƒT */
     276#else /* SIL_ENDIAN_BIG */              /* リトルエンディアンプロセッサ */
    281277
    282278#define sil_rew_lem(mem)                sil_rew_mem(mem)
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_stddef.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    55 *  Copyright (C) 2008-2010 by Witz Corporation, JAPAN
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    9  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    11  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    12  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    14  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—p
    16  *      ŽÒƒ}ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    18  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    21  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    29  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    30  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    31  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    32  *      –Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     9 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     11 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     12 *      スコード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     14 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     15 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     16 *      の無保証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     18 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     19 *      と.
     20 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     21 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     22 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     23 *        報告すること.
     24 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     25 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     26 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     27 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     28 *      免責すること.
    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
    37  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    38  *  ‚̐ӔC‚𕉂í‚È‚¢D
     30 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     31 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     32 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     33 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     34 *  の責任を負わない.
    3935 *
    4036 *  @(#) $Id$
     
    4238
    4339/*
    44  *              t_stddef.h‚̃vƒƒZƒbƒTˆË‘¶•”iRX630—pj
     40 *              t_stddef.hのプロセッサ依存部(RX630用)
    4541 *
    46  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_stddef.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    47  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    48  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     42 *  このインクルードファイルは,target_stddef.h(または,そこからインク
     43 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     44 *  直接インクルードしてはならない.
    4945 */
    5046
     
    5349
    5450/*
    55  *  ƒ^[ƒQƒbƒg‚ðŽ¯•Ê‚·‚邽‚߂̃}ƒNƒ‚Ì’è‹`
     51 *  ターゲットを識別するためのマクロの定義
    5652 */
    57 #define TOPPERS_RX630                           /* ƒvƒƒZƒbƒT—ªÌ */
     53#define TOPPERS_RX630                           /* プロセッサ略称 */
    5854
    5955#endif /* TOPPERS_PRC_STDDEF_H */
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_support.src

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
    r164 r167  
    1111;   Copyright (C) 2013      by Mitsuhiro Matsuura
    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‰ü
    15 ;   •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18 ;       ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19 ;   (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20 ;       —p‚Å‚«‚éŒ`‚ōĔ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
    26 ;       —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27 ;       ‚ƁD
    28 ;     (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31 ;         ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32 ;     (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33 ;         •ñ‚·‚邱‚ƁD
    34 ;   (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35 ;       ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36 ;       ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37 ;       —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38 ;       –Ɛӂ·‚邱‚ƁD
     13;   上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14;   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15;   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16;   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17;       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18;       スコード中に含まれていること.
     19;   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20;       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21;       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22;       の無保証規定を掲載すること.
     23;   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24;       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25;       と.
     26;     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27;         作権表示,この利用条件および下記の無保証規定を掲載すること.
     28;     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29;         報告すること.
     30;   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31;       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32;       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33;       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34;       免責すること.
    3935
    40 ;   –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41 ;   ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42 ;   ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43 ;   ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44 ;   ‚̐ӔC‚𕉂í‚È‚¢D
     36;   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37;   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38;   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39;   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40;   の責任を負わない.
    4541
    4642;  @(#) $Id: prc_support.src 536 2014-10-09 23:11:40Z coas-nagasima $
     
    4844
    4945;
    50 ;  ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    51 [ƒ‹ ƒAƒZƒ“ƒuƒŠŒ¾Œê•”iRX630—pj
    52 ;
    53 
    54 ;
    55 ;  ƒfƒBƒXƒpƒbƒ`ƒƒ‚¨‚æ‚ÑŠ„ž‚Ý(CPU—áŠO)o“ü‚èŒû‚̃‹[ƒ‹:
    56 ;       “®ìƒ‚[ƒh‚ðˆÈ‰º‚̂悤‚É’è‹`‚·‚é.
    57 ;               ƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh:
    58 ;                       CPUƒƒbƒNó‘Ô, Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô,
    59 ;                       ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg(intnest = 0), ƒ^ƒXƒNƒXƒ^ƒbƒN
    60 ;               Š„ž‚Ý(CPU—áŠO)ˆ—ƒ‚[ƒh
    61 ;                       ‘SŠ„ž‚݃ƒbƒNó‘Ô(PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0),
    62 ;                       Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô(IPL != 0)
    63 ;                       Š„ž‚݃Rƒ“ƒeƒLƒXƒg(intnest != 0), Š„ž‚݃Xƒ^ƒbƒN
    64 ;
    65 ;       ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݂̃Tƒ|[ƒg—L–³‚Æ, CPUƒƒbƒNó‘Ô, Š„ž‚Ý—Dæ“x
    66 ;       ƒ}ƒXƒN‘S‰ðœó‘Ô‚ÌŠÖŒW‚͈ȉº‚Ì’Ê‚è‚Å‚ ‚é.
    67 ;               ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚Ý–¢ƒTƒ|[ƒgŽž:
    68 ;                       CPUƒƒbƒNó‘Ô(PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0)
    69 ;                       Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô(IPL = 0)
    70 ;               ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚݃Tƒ|[ƒgŽž:
    71 ;                       CPUƒƒbƒNó‘Ô
    72 ;                               (PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0, IPL = IPL_LOCK, lock_flag = true)
    73 ;                       Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô(saved_ipl = 0)
    74 ;
    75 ;       Še\‘¢‘̃|ƒCƒ“ƒ^‚ðˆÈ‰º‚̂悤‚ÉŠeƒŒƒWƒXƒ^‚ɃAƒTƒCƒ“‚·‚é.
    76 ;               r15 = p_runtsk  ‚½‚¾‚µƒfƒBƒXƒpƒbƒ`ƒƒ‚ÌŠeoŒû‚Å‚Í–³Œø
    77 ;               r14 = *p_runtsk dispatcher ‚Ì’†‚Å‚Í p_runtsk Šm’莞‚ɍĎ擾‚·‚é
    78 ;       Še“ü‚èŒû‚©‚çÅ‰‚ɕϐ”ƒAƒNƒZƒX‚·‚é‚Æ‚«‚ɏã‹LƒŒƒWƒXƒ^‚É•Û‘¶‚·‚é.
    79 ;
    80 ;       \‘¢‘̃Aƒ‰ƒCƒƒ“ƒg‚ւ̑Ήž
    81 ;               \‘¢‘̃Aƒ‰ƒCƒƒ“ƒg‚ª4Byte(ƒAƒ“ƒpƒbƒN)‚̏ꍇ:
    82 ;                       ˆê”Ê“I‚ȃŒƒWƒXƒ^‘Š‘΃AƒhƒŒƒbƒVƒ“ƒO‚ª‰Â”\
    83 ;                               —á:     mov.l   #__kernel_p_runtsk, r15
     46;  プロセッサ依存モジュール アセンブリ言語部(RX630用)
     47;
     48
     49;
     50;  ディスパッチャおよび割込み(CPU例外)出入り口のルール:
     51;       動作モードを以下のように定義する.
     52;               ディスパッチャモード:
     53;                       CPUロック状態, 割込み優先度マスク全解除状態,
     54;                       タスクコンテキスト(intnest = 0), タスクスタック
     55;               割込み(CPU例外)処理モード
     56;                       全割込みロック状態(PSWレジスタIビット = 0),
     57;                       割込み優先度マスク全解除でない状態(IPL != 0)
     58;                       割込みコンテキスト(intnest != 0), 割込みスタック
     59;
     60;       カーネル管理外割込みのサポート有無と, CPUロック状態, 割込み優先度
     61;       マスク全解除状態の関係は以下の通りである.
     62;               カーネル管理外割込み未サポート時:
     63;                       CPUロック状態(PSWレジスタIビット = 0)
     64;                       割込み優先度マスク全解除状態(IPL = 0)
     65;               カーネル管理外割込みサポート時:
     66;                       CPUロック状態
     67;                               (PSWレジスタIビット = 0, IPL = IPL_LOCK, lock_flag = true)
     68;                       割込み優先度マスク全解除状態(saved_ipl = 0)
     69;
     70;       各構造体ポインタを以下のように各レジスタにアサインする.
     71;               r15 = p_runtsk  ただしディスパッチャの各出口では無効
     72;               r14 = *p_runtsk dispatcher の中では p_runtsk 確定時に再取得する
     73;       各入り口から最初に変数アクセスするときに上記レジスタに保存する.
     74;
     75;       構造体アライメントへの対応
     76;               構造体アライメントが4Byte(アンパック)の場合:
     77;                       一般的なレジスタ相対アドレッシングが可能
     78;                               例:      mov.l   #__kernel_p_runtsk, r15
    8479;                                       mov.l   r0, TCB_sp[r15]
    85 ;               \‘¢‘̃Aƒ‰ƒCƒƒ“ƒg‚ª4Byte‚Å‚Í‚È‚¢(ƒpƒbƒN)‚̏ꍇ:
    86 ;                       mov.l‚̂悤‚Ƀƒ“ƒOƒTƒCƒYŽw’è‚̏ꍇA‘Š‘Î’l‚Í4‚Ì”{”‚Ì‚Ý—LŒø
    87 ;                       ‚±‚Ì‚½‚ß, ˆê“x‘ΏۃAƒhƒŒƒX‚ð‹‚ß‚Ä‚©‚çƒAƒNƒZƒX‚·‚é•K—v‚ª‚ ‚é
    88 ;                               —á:     mov.l   #__kernel_p_runtsk, r15
     80;               構造体アライメントが4Byteではない(パック)の場合:
     81;                       mov.lのようにロングサイズ指定の場合、相対値は4の倍数のみ有効
     82;                       このため, 一度対象アドレスを求めてからアクセスする必要がある
     83;                               :      mov.l   #__kernel_p_runtsk, r15
    8984;                                       add             #TCB_sp, r15, r5
    9085;                                       mov.l   r0, [r5]
    91 ;               ŠeƒIƒtƒZƒbƒg’l‚ð”»’f‚µ, ðŒƒAƒZƒ“ƒuƒ‹‚É‚æ‚èƒR[ƒh‚ðØ‚è‘Ö‚¦‚é
    92 ;
    93 
    94 ;
    95 \‘¢‘̃AƒNƒZƒX‚̃IƒtƒZƒbƒg’è‹`
     86;               各オフセット値を判断し, 条件アセンブルによりコードを切り替える
     87;
     88
     89;
     90構造体アクセスのオフセット定義
    9691;
    9792        .include        offset.inc
    9893
    9994;
    100 ŠeŽíEQU’è‹`(Hƒtƒ@ƒCƒ‹‚Ì#define’è‹`)
     95各種EQU定義(Hファイルの#define定義)
    10196;
    10297        .include        asm_config.inc
     
    150145
    151146;
    152 ;  TCB_sp ‚ւ̏‘ž‚݃}ƒNƒ
     147;  TCB_sp への書込みマクロ
    153148;
    154149st_TCB_sp       .macro  src, tcb, tmp
     
    162157
    163158;
    164 ;  TCB_sp ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     159;  TCB_sp からの読出しマクロ
    165160;
    166161ld_TCB_sp       .macro  dst, tcb, tmp
     
    174169
    175170;
    176 ;  TCB_pc ‚ւ̏‘ž‚݃}ƒNƒ
     171;  TCB_pc への書込みマクロ
    177172;
    178173st_TCB_pc       .macro  src, tcb, tmp
     
    186181
    187182;
    188 ;  TCB_pc ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     183;  TCB_pc からの読出しマクロ
    189184;
    190185ld_TCB_pc       .macro  dst, tcb, tmp
     
    198193
    199194;
    200 ;  TCB_texptn ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     195;  TCB_texptn からの読出しマクロ
    201196;
    202197ld_TCB_texptn   .macro  dst, tcb, tmp
     
    210205
    211206;
    212 ;  TCB_p_tinib ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     207;  TCB_p_tinib からの読出しマクロ
    213208;
    214209ld_TCB_p_tinib  .macro  dst, tcb, tmp
     
    222217
    223218;
    224 ;  TINIB_exinf ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     219;  TINIB_exinf からの読出しマクロ
    225220;
    226221ld_TINIB_exinf  .macro  dst, tinib, tmp
     
    234229
    235230;
    236 ;  TINIB_task ‚©‚ç‚̓Ǐo‚µƒ}ƒNƒ
     231;  TINIB_task からの読出しマクロ
    237232;
    238233ld_TINIB_task   .macro  dst, tinib, tmp
     
    249244
    250245;
    251 ;  API‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    252 ;
    253 ŒÄ‚яo‚µðŒ:
    254 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    255 ;
    256 ‚±‚±‚Å‚Í, ƒRƒ“ƒeƒLƒXƒg‚Ì‘Þ”ð‚Æ, ŽÀsÄŠJ”Ô’n‚̐ݒè‚ð‚·‚é.
     246;  APIからのタスクディスパッチャ入口
     247;
     248呼び出し条件:
     249;       ・ディスパッチャモード(ファイルヘッダ参照)
     250;
     251ここでは, コンテキストの退避と, 実行再開番地の設定をする.
    257252;
    258253__kernel_dispatch:
    259         pushm   r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•Û‘¶
     254        pushm   r6-r13                                          ; 非スクラッチレジスタ保存
    260255        mov.l   #__kernel_p_runtsk, r15
    261256        mov.l   [r15], r14
    262         st_TCB_sp       r0, r14, r5                             ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðTCB‚É•Û‘¶
    263         st_TCB_pc       #dispatch_r, r14, r5    ; ŽÀsÄŠJ”Ô’n‚ðTCB‚É•Û‘¶
     257        st_TCB_sp       r0, r14, r5                             ; スタックポインタをTCBに保存
     258        st_TCB_pc       #dispatch_r, r14, r5    ; 実行再開番地をTCBに保存
    264259        bra             dispatcher
    265260
    266261;
    267 ;  API‚ւ̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒoŒû
    268 ;
    269 ŒÄ‚яo‚µðŒ:
    270 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    271 ;
    272 ‚±‚±‚Å‚Í, ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µ‚Æ, ƒRƒ“ƒeƒLƒXƒg‚Ì•œ‹A‚ð‚·‚é.
     262;  APIへのタスクディスパッチャ出口
     263;
     264呼び出し条件:
     265;       ・ディスパッチャモード(ファイルヘッダ参照)
     266;
     267ここでは, タスク例外ハンドラ呼出しと, コンテキストの復帰をする.
    273268;
    274269dispatch_r:
    275         btst    #TCB_enatex_bit, TCB_enatex[r14]        ; ƒ^ƒXƒN—áŠOˆ—‹–‰Â?
     270        btst    #TCB_enatex_bit, TCB_enatex[r14]        ; タスク例外処理許可?
    276271        bz      dispatch_r_rts
    277         ld_TCB_texptn   r5, r14, r4                     ; •Û—¯—áŠO—vˆö‚ª‚ ‚é‚©H
     272        ld_TCB_texptn   r5, r14, r4                     ; 保留例外要因があるか?
    278273        cmp             #0, r5
    279274        bz      dispatch_r_rts
    280         bsr             __kernel_call_texrtn            ; ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µˆ—ŽÀs
     275        bsr             __kernel_call_texrtn            ; タスク例外ハンドラ呼出し処理実行
    281276dispatch_r_rts:
    282         popm    r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•œ‹A
    283         rts                                     ; dispatch ŒÄ‚яo‚µŒ³‚Ö–ß‚é.
    284 
    285 ;
    286 ƒ^ƒXƒN‹N“®ˆ—(ƒ^ƒXƒNæ“ª‚ւ̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒoŒû)
    287 ;
    288 ŒÄ‚яo‚µðŒ:
    289 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    290 ;
    291 ‚±‚±‚Å‚Í, CPUƒƒbƒN‰ðœó‘Ô‚É‚µ, ƒ^ƒXƒN‚ð‹N“®‚·‚é.
     277        popm    r6-r13                                          ; 非スクラッチレジスタ復帰
     278        rts                                     ; dispatch 呼び出し元へ戻る.
     279
     280;
     281タスク起動処理(タスク先頭へのタスクディスパッチャ出口)
     282;
     283呼び出し条件:
     284;       ・ディスパッチャモード(ファイルヘッダ参照)
     285;
     286ここでは, CPUロック解除状態にし, タスクを起動する.
    292287;
    293288__kernel_start_r:
    294289        mov.l   #_ext_tsk, r5
    295         push.l  r5                                                      ; –ß‚è”Ô’n‚ðƒXƒ^ƒbƒN‚ɐςÞ
     290        push.l  r5                                                      ; 戻り番地をスタックに積む
    296291        ld_TCB_p_tinib  r5, r14, r4
    297         ld_TINIB_exinf  r1, r5, r4                      ; Šg’£î•ñ‚ð‘æˆêˆø”‚ɐݒè
    298         ld_TINIB_task   r5, r5, r4                      ; ƒ^ƒXƒN‚Ì‹N“®”Ô’n‚ðŽæ“¾
     292        ld_TINIB_exinf  r1, r5, r4                      ; 拡張情報を第一引数に設定
     293        ld_TINIB_task   r5, r5, r4                      ; タスクの起動番地を取得
    299294.if     TIPM_LOCK == -15
    300         setpsw  i                                                       ; Š„ž‚Ý‹–‰Â(CPUƒƒbƒN‰ðœó‘Ô)
    301 .else
    302         mov.l   #__kernel_lock_flag, r4         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
    303         mov.l   #0, [r4]                                        ; ‚±‚±‚É—ˆ‚é‚Æ‚«‚Í•K‚¸ saved_ipl ‚Ì
    304         mvtc    #00010000H, psw                         ; ’l‚Í 0 ‚Ì‚½‚ß, ’¼’l‚ðÝ’è‚·‚é.
    305                                                                 ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô( I = 1 )
    306                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô( IPL = 0 )
     295        setpsw  i                                                       ; 割込み許可(CPUロック解除状態)
     296.else
     297        mov.l   #__kernel_lock_flag, r4         ; CPUロック解除状態へ
     298        mov.l   #0, [r4]                                        ; ここに来るときは必ず saved_ipl の
     299        mvtc    #00010000H, psw                         ; 値は 0 のため, 直値を設定する.
     300                                                                ; 全割込みロック解除状態( I = 1 )
     301                                                                ; 割込み優先度マスク全解除状態( IPL = 0 )
    307302.endif
    308303        jmp             r5
    309304
    310305;
    311 ƒJ[ƒlƒ‹‹N“®‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    312 ;
    313 ‚±‚̃‹[ƒ`ƒ“‚́CƒJ[ƒlƒ‹‹N“®Žž‚ɁC‚·‚ׂĂ̊„ž‚Ý‚ð‹ÖŽ~‚µ‚½ó‘Ô
    314 ; iŠ„ž‚݃ƒbƒNó‘Ô‚Æ“¯“™j‚ŌĂяo‚³‚ê‚éD‚Ü‚½CŠ„ž‚݃‚[ƒhi”ñ
    315 ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Æ“¯“™j‚ŌĂяo‚³‚ê‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚éD
    316 ;
    317 ŒÄ‚яo‚µðŒ:
    318 ;       EŠ„ž‚Ý(CPU—áŠO)ˆ—ƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    319 ;
    320 ‚±‚±‚Å‚Í, ƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh‚ɕύX‚·‚é.
     306カーネル起動からのタスクディスパッチャ入口
     307;
     308このルーチンは,カーネル起動時に,すべての割込みを禁止した状態
     309; (割込みロック状態と同等)で呼び出される.また,割込みモード(非
     310タスクコンテキストと同等)で呼び出されることを想定している.
     311;
     312呼び出し条件:
     313;       ・割込み(CPU例外)処理モード(ファイルヘッダ参照)
     314;
     315ここでは, ディスパッチャモードに変更する.
    321316;
    322317__kernel_start_dispatch:
    323318        mov.l   #__kernel_intnest, r5
    324         mov.w   #0, [r5]                                        ; ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     319        mov.w   #0, [r5]                                        ; タスクコンテキストに切換え
    325320.if     TIPM_LOCK != -15
    326         mvtc    #(IPL_LOCK | 00010000H), psw    ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô
    327                                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô
    328 .endif
    329 
    330 ;
    331 ; ƒ^ƒXƒNI—¹(Œ»Ý‚̃Rƒ“ƒeƒLƒXƒg‚ðŽÌ‚Ä‚é)‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    332 ;
    333 ŒÄ‚яo‚µðŒ:
    334 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    335 ;
    336 ‚±‚±‚Å‚Í, ‰½‚à‚·‚邱‚Æ‚Í‚È‚¢.
    337 ‚È‚¨, p_runtsk ‚̃AƒhƒŒƒXŽæ“¾‚¾‚¯‚͍s‚È‚¤.
     321        mvtc    #(IPL_LOCK | 00010000H), psw    ; 全割込みロック解除状態
     322                                                                                ; 割込み優先度マスク全解除でない状態
     323.endif
     324
     325;
     326; タスク終了(現在のコンテキストを捨てる)からのタスクディスパッチャ入口
     327;
     328呼び出し条件:
     329;       ・ディスパッチャモード(ファイルヘッダ参照)
     330;
     331ここでは, 何もすることはない.
     332なお, p_runtsk のアドレス取得だけは行なう.
    338333;
    339334__exit_and_dispatch:
     
    341336
    342337;
    343 ; ƒfƒBƒXƒpƒbƒ`ƒƒ–{‘Ì
    344 ;
    345 ŒÄ‚яo‚µðŒ:
    346 ;       E‚·‚ׂẴ^ƒXƒN‚̃Rƒ“ƒeƒLƒXƒg‚Í•Û‘¶‚³‚ê‚Ä‚¢‚é.
    347 ;
    348 ;  dispatcher ŒÄoŽž‚̃Xƒ^ƒbƒN:
    349 ;       E__kernel_dispatch ‚©‚ç‚«‚½ê‡                        : ƒ^ƒXƒNƒXƒ^ƒbƒN
    350 ;       Eexit_and_dispatch ‚©‚ç‚«‚½ê‡:
    351 ;               exit_task ‚©‚ç‚«‚½ê‡                                  : ƒ^ƒXƒNƒXƒ^ƒbƒN
    352 ;               ƒJ[ƒlƒ‹‹N“®Žž(__kernel_start_dispatch) : Š„ž‚݃Xƒ^ƒbƒN
    353 ;       Eret_int ‚©‚ç‚«‚½ê‡                                          : ƒ^ƒXƒNƒXƒ^ƒbƒN
    354 ;       Edispatcher_idle_loop ‚©‚ç‚«‚½ê‡                     : Š„ž‚݃Xƒ^ƒbƒN
     338; ディスパッチャ本体
     339;
     340呼び出し条件:
     341;       ・すべてのタスクのコンテキストは保存されている.
     342;
     343;  dispatcher 呼出時のスタック:
     344;       ・__kernel_dispatch からきた場合                       : タスクスタック
     345;       ・exit_and_dispatch からきた場合:
     346;               exit_task からきた場合                                        : タスクスタック
     347;               カーネル起動時(__kernel_start_dispatch)        : 割込みスタック
     348;       ・ret_int からきた場合                                         : タスクスタック
     349;       ・dispatcher_idle_loop からきた場合                    : 割込みスタック
    355350;
    356351dispatcher:
    357352.if     LOG_DSP_ENTER == 1
    358353        push.l  r15
    359         mov.l   r14, r1                                         ; ˆø”(ƒfƒBƒXƒpƒbƒ`Œ³TCB)‚ðÝ’è
     354        mov.l   r14, r1                                         ; 引数(ディスパッチ元TCB)を設定
    360355        bsr             _kernel_log_dsp_enter
    361356        pop.l   r15
    362357.endif
    363358        mov.l   #__kernel_p_schedtsk, r5     
    364         mov.l   [r5], [r15]                                     ; p_schedtsk ‚ð p_runtsk ‚É
     359        mov.l   [r5], [r15]                                     ; p_schedtsk を p_runtsk に
    365360        mov.l   [r15], r14
    366361        cmp             #0, r14
    367         bz              dispatcher_pre_idle                     ; schedtsk ‚ª‚È‚¯‚ê‚΃AƒCƒhƒ‹ƒ‹[ƒv‚Ö
    368         ld_TCB_sp       r0, r14, r5                             ; ƒ^ƒXƒNƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚𕜋A
     362        bz              dispatcher_pre_idle                     ; schedtsk がなければアイドルループへ
     363        ld_TCB_sp       r0, r14, r5                             ; タスクスタックポインタを復帰
    369364.if     LOG_DSP_LEAVE == 1
    370365        push.l  r14
    371         mov.l   r14, r1                                         ; ˆø”(ƒfƒBƒXƒpƒbƒ`æTCB)‚ðÝ’è
     366        mov.l   r14, r1                                         ; 引数(ディスパッチ先TCB)を設定
    372367        bsr             _kernel_log_dsp_leave
    373368        pop.l   r14
    374369.endif
    375370        ld_TCB_pc       r5, r14, r4
    376         jmp             r5                                      ; ŽÀsÄŠJ”Ô’n‚ÖƒWƒƒƒ“ƒv
    377 
    378 ;
    379 ;  schdedtsk‚ªNULL‚̏ꍇ‚̓AƒCƒhƒ‹ƒ‹[ƒv‚É“ü‚é
    380 ƒAƒCƒhƒ‹ƒ‹[ƒv‚ÍŠ„ž‚ݏˆ—ƒ‚[ƒh‚Å“®ì‚³‚¹‚é
    381 ;
    382 ‚±‚±‚ÅŠ„ž‚݃‚[ƒh‚ɐ؂芷‚¦‚é‚̂́C‚±‚±‚Å”­¶‚·‚銄ž‚ݏˆ—‚É
    383 ‚ǂ̃Xƒ^ƒbƒN‚ðŽg‚¤‚©‚Æ‚¢‚¤–â‘è‚Ì‰ðŒˆ‚ÆCŠ„ž‚݃nƒ“ƒhƒ‰“à‚ł̃^
    384 ƒXƒNƒfƒBƒXƒpƒbƒ`‚Ì–hŽ~‚Æ‚¢‚¤2‚‚̈Ӗ¡‚ª‚ ‚éD
     371        jmp             r5                                      ; 実行再開番地へジャンプ
     372
     373;
     374;  schdedtskがNULLの場合はアイドルループに入る
     375アイドルループは割込み処理モードで動作させる
     376;
     377ここで割込みモードに切り換えるのは,ここで発生する割込み処理に
     378どのスタックを使うかという問題の解決と,割込みハンドラ内でのタ
     379スクディスパッチの防止という2つの意味がある.
    385380;
    386381dispatcher_pre_idle:
    387382        mov.l   #__kernel_istkpt,r5
    388         mov.l   [r5], r0                                        ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦
    389         mov.l   #__kernel_intnest, r5
    390         mov.w   #1, [r5]                                        ; ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     383        mov.l   [r5], r0                                        ; 割込み用のスタックへ切替え
     384        mov.l   #__kernel_intnest, r5
     385        mov.w   #1, [r5]                                        ; 非タスクコンテキストに切換え
    391386.if     TIPM_LOCK != -15
    392         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
     387        mov.l   #__kernel_lock_flag, r5         ; CPUロック解除状態へ
    393388        mov.l   #0, [r5]
    394         mvtc    #0, psw                                         ; —Dæ“x0‚ÌŠ„ž‚ݏˆ—’†‚ð‹U‘•
     389        mvtc    #0, psw                                         ; 優先度0の割込み処理中を偽装
    395390.endif
    396391
    397392dispatcher_idle_loop:
    398         setpsw  i                                                       ; ‘SŠ„ž‚Ý‹–‰Â
    399         clrpsw  i                                                       ; ‘SŠ„ž‚Ý‹ÖŽ~
    400 
    401         mov.l   #__kernel_reqflg, r5            ; reqflg ‚ª FALSE ‚È‚ç
     393        setpsw  i                                                       ; 全割込み許可
     394        clrpsw  i                                                       ; 全割込み禁止
     395
     396        mov.l   #__kernel_reqflg, r5            ; reqflg が FALSE なら
    402397        mov.l   [r5], r4
    403398        cmp             #0, r4
    404         bz      dispatcher_idle_loop            ; ƒAƒCƒhƒ‹ƒ‹[ƒv‚ðŒJ‚è•Ô‚·
    405         mov.l   #0, [r5]                                        ; reqflg‚ªtrue‚È‚çfalse‚É‚·‚é
    406         mov.l   #__kernel_intnest, r5
    407         mov.w   #0, [r5]                                        ; ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     399        bz      dispatcher_idle_loop            ; アイドルループを繰り返す
     400        mov.l   #0, [r5]                                        ; reqflgがtrueならfalseにする
     401        mov.l   #__kernel_intnest, r5
     402        mov.w   #0, [r5]                                        ; タスクコンテキストに切換え
    408403.if     TIPM_LOCK != -15
    409         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒNó‘Ô‚Ö
     404        mov.l   #__kernel_lock_flag, r5         ; CPUロック状態へ
    410405        mov.l   #1, [r5]
    411406        mov.l   #__kernel_saved_ipl, r5
    412407        mov.l   #0, [r5]
    413         mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô
    414                                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô
    415 .endif
    416         bra             dispatcher                                      ; dispatcher ‚Ö–ß‚é
    417 
    418 
    419 ;
    420 ; ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µ
    421 ;
    422 ; ƒ‚[ƒh‚ƃXƒ^ƒbƒN‚ð”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚ɐ؂è‘Ö‚¦D
     408        mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; 全割込みロック解除状態
     409                                                                                ; 割込み優先度マスク全解除でない状態
     410.endif
     411        bra             dispatcher                                      ; dispatcher へ戻る
     412
     413
     414;
     415; カーネルの終了処理の呼出し
     416;
     417; モードとスタックを非タスクコンテキスト用に切り替え.
    423418;
    424419        .glb    __kernel_call_exit_kernel
    425420__kernel_call_exit_kernel:
    426421.if     TIPM_LOCK != -15
    427         clrpsw  i                                                       ; ‘SŠ„ž‚Ý‹ÖŽ~
    428         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
     422        clrpsw  i                                                       ; 全割込み禁止
     423        mov.l   #__kernel_lock_flag, r5         ; CPUロック解除状態へ
    429424        mov.l   #0, [r5]
    430425.endif
    431426        mov.l   #__kernel_istkpt, r5
    432         mov.l   [r5], r0                                        ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦
    433         mov.l   #__kernel_intnest, r5
    434         mov.w   #1, [r5]                                        ; ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ɐ؊·‚¦
     427        mov.l   [r5], r0                                        ; 割込み用のスタックへ切替え
     428        mov.l   #__kernel_intnest, r5
     429        mov.w   #1, [r5]                                        ; 非タスクコンテキストに切換え
    435430        bsr             __kernel_exit_kernel
    436431        bra             __kernel_call_exit_kernel
     
    438433
    439434;
    440 Š„ž‚Ý(CPU—áŠO)‚©‚ç‚̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒ“üŒû
    441 ;
    442 ;       ŒÄo‚µðŒ:
    443 ;       E‘SŠ„ž‚݃ƒbƒNó‘Ô(PSWƒŒƒWƒXƒ^Iƒrƒbƒg = 0)
    444 ;       EŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô(IPL != 0)
    445 ;       Eƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg(intnest=0)
    446 ;       EŽg—pƒXƒ^ƒbƒN‚̓^ƒXƒNƒXƒ^ƒbƒN
    447 ;       Ereqflg = true
    448 ;
    449 ‚±‚±‚Å‚Í, ƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh‚ɕύX‚µ, reqflg‚ðOFF‚É‚µ‚Ä‚©‚ç,
    450 ’x‰„ƒfƒBƒXƒpƒbƒ`‚Ì—L–³‚ð”»’f‚·‚é.
    451 ;
    452 
    453 ;
    454 ;  ret_intæ“ª‚ŃXƒ^ƒbƒN‚ɐς܂ê‚Ä‚¢‚éPSWƒŒƒWƒXƒ^‚ւ̃IƒtƒZƒbƒg
     435割込み(CPU例外)からのタスクディスパッチャ入口
     436;
     437;       呼出し条件:
     438;       ・全割込みロック状態(PSWレジスタIビット = 0)
     439;       ・割込み優先度マスク全解除でない状態(IPL != 0)
     440;       ・タスクコンテキスト(intnest=0)
     441;       ・使用スタックはタスクスタック
     442;       reqflg = true
     443;
     444ここでは, ディスパッチャモードに変更し, reqflgをOFFにしてから,
     445遅延ディスパッチの有無を判断する.
     446;
     447
     448;
     449;  ret_int先頭でスタックに積まれているPSWレジスタへのオフセット
    455450;  ACC + FPSW + R14--R15 + R1--R5 + PC
    456451;
     
    459454ret_int:
    460455.if     TIPM_LOCK == -15
    461         mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; Š„ž‚Ý/CPU—áŠO”­¶‘O‚ÌIPL’lŽæ“¾
     456        mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; 割込み/CPU例外発生前のIPL値取得
    462457        and             #PSW_IPL_MASK, r5
    463         mvtc    r5, psw                                         ; ‘SŠ„ž‚݃ƒbƒN(CPUƒƒbƒN)ó‘Ô
    464                                                                                 ; Š„ž‚Ý/CPU—áŠO”­¶‘O‚ÌŠ„ž‚Ý—Dæ“x
    465 .else
    466         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒNó‘Ô‚Ö
     458        mvtc    r5, psw                                         ; 全割込みロック(CPUロック)状態
     459                                                                                ; 割込み/CPU例外発生前の割込み優先度
     460.else
     461        mov.l   #__kernel_lock_flag, r5         ; CPUロック状態へ
    467462        mov.l   #1, [r5]
    468         mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; Š„ž‚Ý/CPU—áŠO”­¶‘O‚ÌIPL’lŽæ“¾
     463        mov.l   RET_INT_GET_PSW_OFFSET[r0], r5  ; 割込み/CPU例外発生前のIPL値取得
    469464        and             #PSW_IPL_MASK, r5
    470465        mov.l   #__kernel_saved_ipl, r4
    471466        mov.l   r5, [r4]
    472         mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; ‘SŠ„ž‚݃ƒbƒN‰ðœó‘Ô
    473                                                                                 ; Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô
     467        mvtc    #(IPL_LOCK | PSW_I_MASK), psw   ; 全割込みロック解除状態
     468                                                                                ; 割込み優先度マスク全解除でない状態
    474469.endif
    475470        mov.l   #__kernel_reqflg, r5
     
    477472        mov.l   #__kernel_p_runtsk, r15     
    478473        mov.l   [r15], r14
    479         mov.l   #__kernel_dspflg, r5            ; dspflg ‚ª FALSE ‚È‚ç ret_int_r ‚Ö
     474        mov.l   #__kernel_dspflg, r5            ; dspflg が FALSE なら ret_int_r へ
    480475        mov.l   [r5], r5
    481476        cmp             #0, r5
     
    483478        mov.l   #__kernel_p_schedtsk, r5
    484479        mov.l   [r5], r5
    485         cmp             r5, r14                                         ; p_schedtsk ‚Æ p_runtsk ‚ª“¯‚¶‚È‚ç
    486         beq     ret_int_r_call_tex                      ; ret_int_r_call_tex ‚Ö
    487         pushm   r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•Û‘¶
    488         st_TCB_sp       r0, r14, r5                             ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðTCB‚É•Û‘¶
    489         st_TCB_pc       #ret_int_r, r14, r5             ; ŽÀsÄŠJ”Ô’n‚ðTCB‚É•Û‘¶
     480        cmp             r5, r14                                         ; p_schedtsk と p_runtsk が同じなら
     481        beq     ret_int_r_call_tex                      ; ret_int_r_call_tex
     482        pushm   r6-r13                                          ; 非スクラッチレジスタ保存
     483        st_TCB_sp       r0, r14, r5                             ; スタックポインタをTCBに保存
     484        st_TCB_pc       #ret_int_r, r14, r5             ; 実行再開番地をTCBに保存
    490485        bra             dispatcher
    491486
    492487;
    493 Š„ž‚Ý(CPU—áŠO)‚ւ̃^ƒXƒNƒfƒBƒXƒpƒbƒ`ƒƒoŒû
    494 ;
    495 ŒÄ‚яo‚µðŒ:
    496 ;       EƒfƒBƒXƒpƒbƒ`ƒƒƒ‚[ƒh(ƒtƒ@ƒCƒ‹ƒwƒbƒ_ŽQÆ)
    497 ;
    498 ‚±‚±‚Å‚Í, ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µ‚Æ, Š„ž‚Ý(CPU—áŠO)ˆ—ƒ‚[ƒh‚Ö‚Ì
    499 •ÏX‚Æ, ƒRƒ“ƒeƒLƒXƒg‚Ì•œ‹A‚ðs‚¢, Š„ž‚Ý(CUP—áŠO)”­¶Œ³‚Ö–ß‚é.
    500 ;
    501 __kernel_break_wait:                                    ;ƒ^ƒXƒNƒ‚ƒjƒ^—pƒ‰ƒxƒ‹
     488割込み(CPU例外)へのタスクディスパッチャ出口
     489;
     490呼び出し条件:
     491;       ・ディスパッチャモード(ファイルヘッダ参照)
     492;
     493ここでは, タスク例外ハンドラ呼出しと, 割込み(CPU例外)処理モードへの
     494変更と, コンテキストの復帰を行い, 割込み(CUP例外)発生元へ戻る.
     495;
     496__kernel_break_wait:                                    ;タスクモニタ用ラベル
    502497ret_int_r:
    503         popm    r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•œ‹A
     498        popm    r6-r13                                          ; 非スクラッチレジスタ復帰
    504499ret_int_r_call_tex:
    505         btst    #TCB_enatex_bit, TCB_enatex[r14]        ; ƒ^ƒXƒN—áŠOˆ—‹–‰Â?
     500        btst    #TCB_enatex_bit, TCB_enatex[r14]        ; タスク例外処理許可?
    506501        bz      ret_int_r_rte
    507         ld_TCB_texptn   r5, r14, r4                     ; •Û—¯—áŠO—vˆö‚ª‚ ‚é‚©H
     502        ld_TCB_texptn   r5, r14, r4                     ; 保留例外要因があるか?
    508503        cmp             #0, r5
    509504        bz      ret_int_r_rte
    510         bsr             __kernel_call_texrtn            ; ƒ^ƒXƒN—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µˆ—ŽÀs
     505        bsr             __kernel_call_texrtn            ; タスク例外ハンドラ呼出し処理実行
    511506ret_int_r_rte:
    512507.if     TIPM_LOCK != -15
    513         clrpsw  i                                                       ; ‘SŠ„ž‚Ý‹ÖŽ~
    514         mov.l   #__kernel_lock_flag, r5         ; CPUƒƒbƒN‰ðœó‘Ô‚Ö
     508        clrpsw  i                                                       ; 全割込み禁止
     509        mov.l   #__kernel_lock_flag, r5         ; CPUロック解除状態へ
    515510        mov.l   #0, [r5]
    516511.endif
    517         popm    r4-r5                                           ; ƒAƒLƒ
    518 ƒ€ƒŒ[ƒ^•œ‹A
    519         mvtaclo r5                                                      ; ACCÅ‰ºˆÊ16bit‚Í0‚Å•œ‹A
     512        popm    r4-r5                                           ; アキュムレータ復帰
     513        mvtaclo r5                                                      ; ACC最下位16bitは0で復帰
    520514        mvtachi r4
    521         popc    fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^•œ‹A
    522         popm    r14-r15                                         ; ƒŒƒWƒXƒ^•œ‹A
     515        popc    fpsw                                            ; FPUステータスレジスタ復帰
     516        popm    r14-r15                                         ; レジスタ復帰
    523517        popm    r1-r5
    524         rte                                                                     ; Š„ž‚Ý‘O‚̏ˆ—‚É–ß‚é
    525 
    526 
    527 ;
    528 Š„ž‚݂̏o“üŒûˆ—(ƒAƒZƒ“ƒuƒŠŒ¾Œê‹Lq•”•ª)
    529 ;
    530 ŒÄo‚µðŒ:
    531 EŠ„ž‚Ý”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è, PSWƒŒƒWƒXƒ^‚ÌIƒrƒbƒg=0, IPL‚ÍŽó•t‚¯
    532 ;    ‚½Š„ž‚Ý‚ÌIPL.
    533 EƒXƒ^ƒbƒN‚Í‘½dŠ„‚荞‚݂Ȃ犄ž‚݃Xƒ^ƒbƒN, ‚»‚¤‚Å‚È‚¯‚ê‚Î
    534 ;    ƒ^ƒXƒNƒXƒ^ƒbƒN
    535 EŠ„ž‚Ý”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è,ƒXƒ^ƒbƒN‚ÉŠ„ž‚Ý‚©‚ç‚Ì•œ‹APC‚ÆPSW‚ª
    536 ;    •Û‘¶‚³‚ê‚Ä‚¢‚é.
    537 EƒxƒNƒ^ƒe[ƒuƒ‹‚É“o˜^‚³‚ꂽŒÂ•Ê‚Ì“ü‚èŒûˆ—‚É‚æ‚è, ƒXƒ^ƒbƒN‚É
    538 ;    ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^(R1-R5)‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é.
    539 ;
    540 ˆø”:
    541 Er1:Š„ž‚Ý—vˆö”ԍ†
    542 Er2:Š„ž‚݃nƒ“ƒhƒ‰‚̃AƒhƒŒƒX
    543 ;
    544 ƒŒƒWƒXƒ^‚ªƒXƒ^ƒbƒNã‚ɂǂ̂悤‚É•Û‘¶‚³‚ê‚Ä‚¢‚é‚©‚ðˆÈ‰º‚ÉŽ¦‚·.
    545 ‚±‚̐}‚ł͏オ’áˆÊ, ‰º‚ª‚ˆÊ‚̃AƒhƒŒƒX‚Å, ƒXƒ^ƒbƒN‚͉º‚©‚ç
    546 ã•ûŒü‚ÉŒü‚©‚Á‚Đςݏグ‚ç‚ê‚é‚à‚Ì‚Æ‚·‚é.
     518        rte                                                                     ; 割込み前の処理に戻る
     519
     520
     521;
     522割込みの出入口処理(アセンブリ言語記述部分)
     523;
     524呼出し条件:
     525・割込み発生時のH/W処理により, PSWレジスタのIビット=0, IPLは受付け
     526;    た割込みのIPL.
     527・スタックは多重割り込みなら割込みスタック, そうでなければ
     528;    タスクスタック
     529・割込み発生時のH/W処理により,スタックに割込みからの復帰PCとPSWが
     530;    保存されている.
     531・ベクタテーブルに登録された個別の入り口処理により, スタックに
     532;    スクラッチレジスタ(R1-R5)が保存されている.
     533;
     534引数:
     535・r1:割込み要因番号
     536・r2:割込みハンドラのアドレス
     537;
     538レジスタがスタック上にどのように保存されているかを以下に示す.
     539この図では上が低位, 下が高位のアドレスで, スタックは下から
     540上方向に向かって積み上げられるものとする.
    547541;
    548542;       -------------------------
     
    572566;       -------------------------(SP + 44)
    573567;
    574 ‚±‚±‚Å‚Í, Š„ž‚ݏˆ—ƒ‚[ƒh‚ɕύX‚µ‚ănƒ“ƒhƒ‰‚ðŽÀs‚·‚é.
    575 ;
    576 ƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚µ‚½Œã‚Í, ‘½dŠ„ž‚Ý‚Å‚È‚­, ‚©‚ reqflg ‚ª
    577 ;  TRUE ‚É‚È‚Á‚½Žž‚ɁCret_int ‚Ö•ªŠò(’x‰„ƒfƒBƒXƒpƒbƒ`)‚·‚éD
    578 ;
    579 ‘½dŠ„ž‚Ý‚©‚Ç‚¤‚©‚ÍŠ„ž‚݃lƒXƒgƒJƒEƒ“ƒ^‚Ì’l‚Å”»’è‚·‚é.
    580 ;  intnest != 0 ‚È‚ç‚Α½dŠ„ž‚Ý‚Å‚ ‚é‚Æ”»’è‚·‚é.
    581 ;
    582 ;  reqflg ‚ÍCPUƒƒbƒNó‘ԂŃ`ƒFƒbƒN‚·‚é. ‚»‚¤‚Å‚È‚¢‚ƁC
    583 ;  reqflg ƒ`ƒFƒbƒNŒã‚É‹N“®‚³‚ꂽŠ„ž‚݃nƒ“ƒhƒ‰“à‚Å
    584 ƒfƒBƒXƒpƒbƒ`‚ª—v‹‚³‚ꂽê‡‚ɁCƒfƒBƒXƒpƒbƒ`‚³‚ê‚È‚¢.
     568ここでは, 割込み処理モードに変更してハンドラを実行する.
     569;
     570ハンドラからリターンした後は, 多重割込みでなく, かつ reqflg が
     571;  TRUE になった時に,ret_int へ分岐(遅延ディスパッチ)する.
     572;
     573多重割込みかどうかは割込みネストカウンタの値で判定する.
     574;  intnest != 0 ならば多重割込みであると判定する.
     575;
     576;  reqflg はCPUロック状態でチェックする. そうでないと,
     577;  reqflg チェック後に起動された割込みハンドラ内で
     578ディスパッチが要求された場合に,ディスパッチされない.
    585579;
    586580_kernel_interrupt:
    587         pushm   r14-r15                                         ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ð‘Þ”ð
    588         pushc   fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^‘Þ”ð
     581        pushm   r14-r15                                         ; スクラッチレジスタを退避
     582        pushc   fpsw                                            ; FPUステータスレジスタ退避
    589583        mvfacmi r5
    590         shll    #16, r5                                         ; ACCÅ‰ºˆÊ16bit‚Í0‚Æ‚·‚é
     584        shll    #16, r5                                         ; ACC最下位16bitは0とする
    591585        mvfachi r4
    592         pushm   r4-r5                                           ; ƒAƒLƒ
    593 ƒ€ƒŒ[ƒ^‘Þ”ð
     586        pushm   r4-r5                                           ; アキュムレータ退避
    594587        mov.l   #__kernel_intnest, r5
    595588        mov.w   [r5], r4
    596         add             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
     589        add             #1, r4                                          ; ネスト回数をインクリメント
    597590        mov.w   r4, [r5]
    598         cmp             #1, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    599         bnz             interrupt_from_int                      ; ‰ÁŽZ‘O‚ª0‚Å‚È‚¯‚ê‚Α½dŠ„ž‚Ý
    600                                                 ; ‰’i‚ÌŠ„ž‚Ý
    601         mov.l   r0, r3                                          ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðŽæ‚èo‚µ
    602         mov.l   #__kernel_istkpt, r5            ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦‚é
     591        cmp             #1, r4                                          ; 多重割り込みかどうか
     592        bnz             interrupt_from_int                      ; 加算前が0でなければ多重割込み
     593                                                ; 初段の割込み
     594        mov.l   r0, r3                                          ; スタックポインタを取り出し
     595        mov.l   #__kernel_istkpt, r5            ; 割込み用のスタックへ切替える
    603596        mov.l   [r5], r0
    604         push.l  r3                                                      ; ƒ^ƒXƒNƒXƒ^ƒbƒN‚ð•ÛŽ
    605 interrupt_from_int:             ; ‘½dŠ„ž‚Ý
    606         setpsw  i                                                       ; Š„ž‚Ý‹–‰Â(CPUƒƒbƒN‰ðœó‘Ô)
     597        push.l  r3                                                      ; タスクスタックを保持
     598interrupt_from_int:             ; 多重割込み
     599        setpsw  i                                                       ; 割込み許可(CPUロック解除状態)
    607600
    608601.if     LOG_INH_LEAVE == 1
    609         push.l  r1                                                      ; ƒƒOƒgƒŒ[ƒX‚̈ø”‚ð•ÛŽ
     602        push.l  r1                                                      ; ログトレースの引数を保持
    610603.endif
    611604
    612605.if     LOG_INH_ENTER == 1
    613606        push.l  r2
    614         bsr             _kernel_log_inh_enter           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    615                                                         ; ˆø”‚ÌŠ„ž‚Ý—vˆö”ԍ†‚ÍŠù‚Ér1‚É“ü‚Á‚Ä‚¢‚é
     607        bsr             _kernel_log_inh_enter           ; ログトレース関数の呼出し
     608                                                        ; 引数の割込み要因番号は既にr1に入っている
    616609        pop             r2
    617610.endif
    618611
    619         jsr     r2                                                      ; Cƒ‹[ƒ`ƒ“ŒÄ‚яo‚µ
     612        jsr     r2                                                      ; Cルーチン呼び出し
    620613
    621614.if     LOG_INH_LEAVE == 1
    622         pop             r1                                                      ; ˆø”‚ÉŠ„ž‚Ý—vˆö”ԍ†‚ðÝ’è
    623         bsr             _kernel_log_inh_leave           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    624 .endif
    625 
    626         clrpsw  i                                                       ; Š„ž‚Ý‹ÖŽ~(CPUƒƒbƒNó‘Ô)
     615        pop             r1                                                      ; 引数に割込み要因番号を設定
     616        bsr             _kernel_log_inh_leave           ; ログトレース関数の呼出し
     617.endif
     618
     619        clrpsw  i                                                       ; 割込み禁止(CPUロック状態)
    627620        mov.l   #__kernel_intnest, r5
    628621        mov.w   [r5], r4
    629         sub             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒfƒNƒŠƒƒ“ƒg
     622        sub             #1, r4                                          ; ネスト回数をデクリメント
    630623        mov.w   r4, [r5]
    631         cmp             #0, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    632         bnz             interrupt_return                        ; ‘½dŠ„‚荞‚݂Ȃ烊ƒ^[ƒ“
    633         ; ‰’i‚ÌŠ„ž‚Ý
    634         pop             r0                                                      ; ƒ^ƒXƒN‚̃Xƒ^ƒbƒN‚É–ß‚·
    635         mov.l   #__kernel_reqflg, r5            ; ƒfƒBƒXƒpƒbƒ`—v‹‚ª‚È‚¢‚©?
     624        cmp             #0, r4                                          ; 多重割り込みかどうか
     625        bnz             interrupt_return                        ; 多重割り込みならリターン
     626        ; 初段の割込み
     627        pop             r0                                                      ; タスクのスタックに戻す
     628        mov.l   #__kernel_reqflg, r5            ; ディスパッチ要求がないか?
    636629        mov.l   [r5], r5
    637630        cmp             #1, r5
    638         bz              ret_int                                         ; ‚ ‚ê‚Î ret_int ‚ÖƒWƒƒƒ“ƒv
     631        bz              ret_int                                         ; あれば ret_int へジャンプ
    639632interrupt_return:
    640         popm    r4-r5                                           ; ƒAƒLƒ
    641 ƒ€ƒŒ[ƒ^•œ‹A
    642         mvtaclo r5                                                      ; ACCÅ‰ºˆÊ16bit‚Í0‚Å•œ‹A
     633        popm    r4-r5                                           ; アキュムレータ復帰
     634        mvtaclo r5                                                      ; ACC最下位16bitは0で復帰
    643635        mvtachi r4
    644         popc    fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^•œ‹A
    645         popm    r14-r15                                         ; ƒŒƒWƒXƒ^•œ‹A
     636        popc    fpsw                                            ; FPUステータスレジスタ復帰
     637        popm    r14-r15                                         ; レジスタ復帰
    646638        popm    r1-r5
    647         rte                                                                     ; Š„ž‚Ý‘O‚̏ˆ—‚É–ß‚é
    648 
    649 
    650 ;
    651 ;  CPU—áŠO‚̏o“üŒûˆ—(ƒAƒZƒ“ƒuƒŠŒ¾Œê‹Lq•”•ª)
    652 ;
    653 ŒÄo‚µðŒ:
    654 ECPU—áŠO”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è, PSWƒŒƒWƒXƒ^‚ÌIƒrƒbƒg=0, IPL=0.
    655 EƒXƒ^ƒbƒN‚Í‘½dŠ„‚荞‚݂Ȃ犄ž‚݃Xƒ^ƒbƒN, ‚»‚¤‚Å‚È‚¯‚ê‚Î
    656 ;    ƒ^ƒXƒNƒXƒ^ƒbƒN
    657 ECPU—áŠO”­¶Žž‚ÌH/Wˆ—‚É‚æ‚è,ƒXƒ^ƒbƒN‚ÉCPU—áŠO‚©‚ç‚Ì•œ‹APC‚Æ
    658 ;    PSW‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é.
    659 EƒxƒNƒ^ƒe[ƒuƒ‹‚É“o˜^‚³‚ꂽŒÂ•Ê‚Ì“ü‚èŒûˆ—‚É‚æ‚è, ƒXƒ^ƒbƒN‚É
    660 ;    ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^(R1-R5)‚ª•Û‘¶‚³‚ê‚Ä‚¢‚é.
    661 ;
    662 ˆø”:
    663 Er1:CPU—áŠO—vˆö”ԍ†
    664 Er2:CPU—áŠOƒnƒ“ƒhƒ‰‚̃AƒhƒŒƒX
    665 ;
    666 ƒŒƒWƒXƒ^‚ªƒXƒ^ƒbƒNã‚ɂǂ̂悤‚É•Û‘¶‚³‚ê‚Ä‚¢‚é‚©‚ðˆÈ‰º‚ÉŽ¦‚·.
    667 ‚±‚̐}‚ł͏オ’áˆÊ, ‰º‚ª‚ˆÊ‚̃AƒhƒŒƒX‚Å, ƒXƒ^ƒbƒN‚͉º‚©‚ç
    668 ã•ûŒü‚ÉŒü‚©‚Á‚Đςݏグ‚ç‚ê‚é‚à‚Ì‚Æ‚·‚é.
    669 ‚È‚¨, CPU—áŠO—vˆö”ԍ†‚ÆR6-R13‚ÍCPU—áŠOƒnƒ“ƒhƒ‰“à‚ŏî•ñ‚ðŽæ“¾
    670 ‚·‚é–Ú“I‚Å‘Þ”ð‚µ‚Ä‚¨‚è, oŒûˆ—‚Å‚Í•Û‘¶“à—e‚ð”jŠü‚·‚ê‚΂悢.
     639        rte                                                                     ; 割込み前の処理に戻る
     640
     641
     642;
     643;  CPU例外の出入口処理(アセンブリ言語記述部分)
     644;
     645呼出し条件:
     646・CPU例外発生時のH/W処理により, PSWレジスタのIビット=0, IPL=0.
     647・スタックは多重割り込みなら割込みスタック, そうでなければ
     648;    タスクスタック
     649・CPU例外発生時のH/W処理により,スタックにCPU例外からの復帰PCと
     650;    PSWが保存されている.
     651・ベクタテーブルに登録された個別の入り口処理により, スタックに
     652;    スクラッチレジスタ(R1-R5)が保存されている.
     653;
     654引数:
     655・r1:CPU例外要因番号
     656・r2:CPU例外ハンドラのアドレス
     657;
     658レジスタがスタック上にどのように保存されているかを以下に示す.
     659この図では上が低位, 下が高位のアドレスで, スタックは下から
     660上方向に向かって積み上げられるものとする.
     661なお, CPU例外要因番号とR6-R13はCPU例外ハンドラ内で情報を取得
     662する目的で退避しており, 出口処理では保存内容を破棄すればよい.
    671663;
    672664;       -------------------------
    673 ;       |    CPU—áŠO—vˆö”ԍ†    | <----- p_excinf
     665;       |    CPU例外要因番号    | <----- p_excinf
    674666;       ------------------------- (intptr_t)(p_excinf + 0)
    675667;       |       R6(4byte)       |
     
    714706;       ------------------------- (intptr_t)(p_excinf + 80)
    715707;
    716 ‚±‚±‚Å‚Í, Š„ž‚ݏˆ—ƒ‚[ƒh‚ɕύX‚µ‚ănƒ“ƒhƒ‰‚ðŽÀs‚·‚é.
    717 ;  CPU—áŠOƒnƒ“ƒhƒ‰‚É“n‚·VPŒ^‚̕ϐ” p_excinf ‚Æ‚µ‚ÄISP‚Ì’l“n‚·D
    718 ;
    719 ƒnƒ“ƒhƒ‰‚©‚烊ƒ^[ƒ“‚µ‚½Œã‚Í, ‘½dŠ„ž‚Ý‚Å‚È‚­, ‚©‚ reqflg ‚ª
    720 ;  TRUE ‚É‚È‚Á‚½Žž‚ɁCret_int ‚Ö•ªŠò(’x‰„ƒfƒBƒXƒpƒbƒ`)‚·‚éD
    721 ;
    722 ‘½dŠ„ž‚Ý‚©‚Ç‚¤‚©‚ÍŠ„ž‚݃lƒXƒgƒJƒEƒ“ƒ^‚Ì’l‚Å”»’è‚·‚é.
    723 ;  intnest != 0 ‚È‚ç‚Α½dŠ„ž‚Ý‚Å‚ ‚é‚Æ”»’è‚·‚é.
    724 ;
    725 ;  reqflg ‚ÍCPUƒƒbƒNó‘ԂŃ`ƒFƒbƒN‚·‚é. ‚»‚¤‚Å‚È‚¢‚ƁC
    726 ;  reqflg ƒ`ƒFƒbƒNŒã‚É‹N“®‚³‚ꂽŠ„ž‚݃nƒ“ƒhƒ‰“à‚Å
    727 ƒfƒBƒXƒpƒbƒ`‚ª—v‹‚³‚ꂽê‡‚ɁCƒfƒBƒXƒpƒbƒ`‚³‚ê‚È‚¢.
    728 ;
    729 ;
    730 ;  CPU—áŠO“üŒûˆ—
    731 ;
    732 ‚±‚±‚Å‚Í, Š„ž‚ݏˆ—ƒ‚[ƒh‚ɕύX‚µ‚ănƒ“ƒhƒ‰‚ðŽÀs‚·‚é.
    733 ;
    734 
    735 ;
    736 ;  CPU—áŠOƒnƒ“ƒhƒ‰ŒÄo‚µŒã‚É•s—v‚Æ‚È‚éƒXƒ^ƒbƒNî•ñ‚̃TƒCƒY
     708ここでは, 割込み処理モードに変更してハンドラを実行する.
     709;  CPU例外ハンドラに渡すVP型の変数 p_excinf としてISPの値渡す.
     710;
     711ハンドラからリターンした後は, 多重割込みでなく, かつ reqflg が
     712;  TRUE になった時に,ret_int へ分岐(遅延ディスパッチ)する.
     713;
     714多重割込みかどうかは割込みネストカウンタの値で判定する.
     715;  intnest != 0 ならば多重割込みであると判定する.
     716;
     717;  reqflg はCPUロック状態でチェックする. そうでないと,
     718;  reqflg チェック後に起動された割込みハンドラ内で
     719ディスパッチが要求された場合に,ディスパッチされない.
     720;
     721;
     722;  CPU例外入口処理
     723;
     724ここでは, 割込み処理モードに変更してハンドラを実行する.
     725;
     726
     727;
     728;  CPU例外ハンドラ呼出し後に不要となるスタック情報のサイズ
    737729;  EXCNO + R6--R13
    738730;
     
    740732
    741733_kernel_exception:
    742         pushm   r14-r15                                         ; ƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^‚ð‘Þ”ð
     734        pushm   r14-r15                                         ; スクラッチレジスタを退避
    743735        pushc   fpsw
    744736        mvfacmi r5
    745         shll    #16, r5                                         ; ACCÅ‰ºˆÊ16bit‚Í0‚Æ‚·‚é
     737        shll    #16, r5                                         ; ACC最下位16bitは0とする
    746738        mvfachi r4
    747         pushm   r4-r5                                           ; ƒAƒLƒ
    748 ƒ€ƒŒ[ƒ^‘Þ”ð
    749         pushm   r6-r13                                          ; ”ñƒXƒNƒ‰ƒbƒ`ƒŒƒWƒXƒ^•Û‘¶
    750         push.l  r1                                                      ; CPU—áŠO—vˆö”ԍ†‚ð•ÛŽ
    751         mov.l   r0, r3                                          ; ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‚ðŽæ‚èo‚µ
     739        pushm   r4-r5                                           ; アキュムレータ退避
     740        pushm   r6-r13                                          ; 非スクラッチレジスタ保存
     741        push.l  r1                                                      ; CPU例外要因番号を保持
     742        mov.l   r0, r3                                          ; スタックポインタを取り出し
    752743        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    753744        and             #PSW_I_MASK, r5
    754         bz              exception_nonkernel                     ; ‘SŠ„ž‚Ý‹ÖŽ~(CPUƒƒbƒN)ó‘Ô‚È‚çŠÇ—ŠO
     745        bz              exception_nonkernel                     ; 全割込み禁止(CPUロック)状態なら管理外
    755746.if     TIPM_LOCK != -15
    756747        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    757748        and             #PSW_IPL_MASK, r5
    758749        cmp             #IPL_LOCK, r5
    759         bgt     exception_nonkernel                     ; IPL‚ªCPUƒƒbƒNƒŒƒxƒ‹ˆÈã‚È‚çŠÇ—ŠO
     750        bgt     exception_nonkernel                     ; IPLがCPUロックレベル以上なら管理外
    760751.endif
    761752        mov.l   #__kernel_intnest, r5
    762753        mov.w   [r5], r4
    763         add             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
     754        add             #1, r4                                          ; ネスト回数をインクリメント
    764755        mov.w   r4, [r5]
    765         cmp             #1, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    766         bnz             exception_from_int                      ; ‰ÁŽZ‘O‚ª0‚Å‚È‚¯‚ê‚Α½dŠ„ž‚Ý
    767                                                 ; ‰’i‚ÌŠ„ž‚Ý
    768         mov.l   #__kernel_istkpt, r5            ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦‚é
     756        cmp             #1, r4                                          ; 多重割り込みかどうか
     757        bnz             exception_from_int                      ; 加算前が0でなければ多重割込み
     758                                                ; 初段の割込み
     759        mov.l   #__kernel_istkpt, r5            ; 割込み用のスタックへ切替える
    769760        mov.l   [r5], r0
    770         push.l  r3                                                      ; ƒ^ƒXƒNƒXƒ^ƒbƒN‚ð•ÛŽ
    771 exception_from_int:             ; ‘½dŠ„ž‚Ý
     761        push.l  r3                                                      ; タスクスタックを保持
     762exception_from_int:             ; 多重割込み
    772763        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    773         mvtc    r5, psw                                         ; CPU—áŠO”­¶‘O‚̏ó‘Ô‚É–ß‚·
     764        mvtc    r5, psw                                         ; CPU例外発生前の状態に戻す
    774765.if     LOG_EXC_LEAVE == 1
    775         push.l  r1                                                      ; ƒƒOƒgƒŒ[ƒX‚̈ø”‚ð•ÛŽ
     766        push.l  r1                                                      ; ログトレースの引数を保持
    776767.endif
    777768
    778769.if     LOG_EXC_ENTER == 1
    779770        pushm   r2-r3
    780         bsr             _kernel_log_exc_enter           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    781                                                         ; ˆø”‚ÌŠ„ž‚Ý—vˆö”ԍ†‚ÍŠù‚Ér1‚É“ü‚Á‚Ä‚¢‚é
     771        bsr             _kernel_log_exc_enter           ; ログトレース関数の呼出し
     772                                                        ; 引数の割込み要因番号は既にr1に入っている
    782773        popm    r2-r3
    783774.endif
    784775
    785         mov.l   r3, r1                                          ; ˆø”‚Ìp_excinf‚ðÝ’è
    786         jsr     r2                                                      ; Cƒ‹[ƒ`ƒ“ŒÄ‚яo‚µ
     776        mov.l   r3, r1                                          ; 引数のp_excinfを設定
     777        jsr     r2                                                      ; Cルーチン呼び出し
    787778
    788779.if     LOG_EXC_LEAVE == 1
    789         pop             r1                                                      ; ˆø”‚ÉŠ„ž‚Ý—vˆö”ԍ†‚ðÝ’è
    790         bsr             _kernel_log_exc_leave           ; ƒƒOƒgƒŒ[ƒXŠÖ”‚̌ďo‚µ
    791 .endif
    792 
    793         clrpsw  i                                                       ; ‚±‚±‚©‚ç‚Í•K‚¸Š„ž‚Ý‹ÖŽ~
     780        pop             r1                                                      ; 引数に割込み要因番号を設定
     781        bsr             _kernel_log_exc_leave           ; ログトレース関数の呼出し
     782.endif
     783
     784        clrpsw  i                                                       ; ここからは必ず割込み禁止
    794785        mov.l   #__kernel_intnest, r5
    795786        mov.w   [r5], r4
    796         sub             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒfƒNƒŠƒƒ“ƒg
     787        sub             #1, r4                                          ; ネスト回数をデクリメント
    797788        mov.w   r4, [r5]
    798         cmp             #0, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    799         bnz             exception_return                        ; ‘½dŠ„‚荞‚݂Ȃ烊ƒ^[ƒ“
    800         ; ‰’i‚ÌŠ„ž‚Ý
    801         pop             r0                                                      ; ƒ^ƒXƒN‚̃Xƒ^ƒbƒN‚É–ß‚·
    802         mov.l   #__kernel_reqflg, r5            ; ƒfƒBƒXƒpƒbƒ`—v‹‚ª‚È‚¢‚©?
     789        cmp             #0, r4                                          ; 多重割り込みかどうか
     790        bnz             exception_return                        ; 多重割り込みならリターン
     791        ; 初段の割込み
     792        pop             r0                                                      ; タスクのスタックに戻す
     793        mov.l   #__kernel_reqflg, r5            ; ディスパッチ要求がないか?
    803794        mov.l   [r5], r5
    804795        cmp             #1, r5
    805         bnz             exception_return                        ; ‚È‚¯‚ê‚΃Šƒ^[ƒ“
    806         add             #EXCINF_REG_SIZE, r0            ; CPU—áŠOî•ñ‚Ì”jŠü
    807         bra             ret_int                                         ; ‚ ‚ê‚Î ret_int ‚ÖƒWƒƒƒ“ƒv
     796        bnz             exception_return                        ; なければリターン
     797        add             #EXCINF_REG_SIZE, r0            ; CPU例外情報の破棄
     798        bra             ret_int                                         ; あれば ret_int へジャンプ
    808799
    809800exception_nonkernel:
    810801        mov.l   #__kernel_intnest, r5
    811802        mov.w   [r5], r4
    812         add             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒCƒ“ƒNƒŠƒƒ“ƒg
     803        add             #1, r4                                          ; ネスト回数をインクリメント
    813804        mov.w   r4, [r5]
    814         cmp             #1, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    815         bnz             exception_from_nonkernelint     ; ‰ÁŽZ‘O‚ª0‚Å‚È‚¯‚ê‚Α½dŠ„ž‚Ý
    816                                                 ; ‰’i‚ÌŠ„ž‚Ý
    817         mov.l   #__kernel_istkpt, r5            ; Š„ž‚Ý—p‚̃Xƒ^ƒbƒN‚֐ؑւ¦‚é
     805        cmp             #1, r4                                          ; 多重割り込みかどうか
     806        bnz             exception_from_nonkernelint     ; 加算前が0でなければ多重割込み
     807                                                ; 初段の割込み
     808        mov.l   #__kernel_istkpt, r5            ; 割込み用のスタックへ切替える
    818809        mov.l   [r5], r0
    819         push.l  r3                                                      ; ƒ^ƒXƒNƒXƒ^ƒbƒN‚ð•ÛŽ
    820 exception_from_nonkernelint:    ; ‘½dŠ„ž‚Ý
     810        push.l  r3                                                      ; タスクスタックを保持
     811exception_from_nonkernelint:    ; 多重割込み
    821812        mov.l   EXC_GET_PSW_OFFSET[r3], r5
    822         mvtc    r5, psw                                         ; CPU—áŠO”­¶‘O‚̏ó‘Ô‚É–ß‚·
    823 
    824         mov.l   r3, r1                                          ; ˆø”‚Ìp_excinf‚ðÝ’è
    825         jsr     r2                                                      ; Cƒ‹[ƒ`ƒ“ŒÄ‚яo‚µ
    826 
    827         clrpsw  i                                                       ; ‚±‚±‚©‚ç‚Í•K‚¸Š„ž‚Ý‹ÖŽ~
     813        mvtc    r5, psw                                         ; CPU例外発生前の状態に戻す
     814
     815        mov.l   r3, r1                                          ; 引数のp_excinfを設定
     816        jsr     r2                                                      ; Cルーチン呼び出し
     817
     818        clrpsw  i                                                       ; ここからは必ず割込み禁止
    828819        mov.l   #__kernel_intnest, r5
    829820        mov.w   [r5], r4
    830         sub             #1, r4                                          ; ƒlƒXƒg‰ñ”‚ðƒfƒNƒŠƒƒ“ƒg
     821        sub             #1, r4                                          ; ネスト回数をデクリメント
    831822        mov.w   r4, [r5]
    832         cmp             #0, r4                                          ; ‘½dŠ„‚荞‚Ý‚©‚Ç‚¤‚©
    833         bnz             exception_return                        ; ‘½dŠ„‚荞‚݂Ȃ烊ƒ^[ƒ“
    834         ; ‰’i‚ÌŠ„ž‚Ý
    835         pop             r0                                                      ; ƒ^ƒXƒN‚̃Xƒ^ƒbƒN‚É–ß‚·
     823        cmp             #0, r4                                          ; 多重割り込みかどうか
     824        bnz             exception_return                        ; 多重割り込みならリターン
     825        ; 初段の割込み
     826        pop             r0                                                      ; タスクのスタックに戻す
    836827
    837828exception_return:
    838         add             #EXCINF_REG_SIZE, r0            ; CPU—áŠOî•ñ‚Ì”jŠü
    839         popm    r4-r5                                           ; ƒAƒLƒ
    840 ƒ€ƒŒ[ƒ^•œ‹A
    841         mvtaclo r5                                                      ; ACCÅ‰ºˆÊ16bit‚Í0‚Å•œ‹A
     829        add             #EXCINF_REG_SIZE, r0            ; CPU例外情報の破棄
     830        popm    r4-r5                                           ; アキュムレータ復帰
     831        mvtaclo r5                                                      ; ACC最下位16bitは0で復帰
    842832        mvtachi r4
    843         popc    fpsw                                            ; FPUƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^•œ‹A
    844         popm    r14-r15                                         ; ƒŒƒWƒXƒ^•œ‹A
     833        popc    fpsw                                            ; FPUステータスレジスタ復帰
     834        popm    r14-r15                                         ; レジスタ復帰
    845835        popm    r1-r5
    846         rte                                                                     ; Š„ž‚Ý‘O‚̏ˆ—‚É–ß‚é
    847 
    848 
    849 ;
    850 ”÷­ŽžŠÔ‘Ò‚¿
     836        rte                                                                     ; 割込み前の処理に戻る
     837
     838
     839;
     840微少時間待ち
    851841;
    852842_sil_dly_nse:
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_syssvc.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    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 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃^[ƒQƒbƒgˆË‘¶’è‹`iRX630—pj
     42 *              テストプログラムのターゲット依存定義(RX630用)
    4743 */
    4844
     
    5147
    5248/*
    53  *  ‹N“®ƒƒbƒZ[ƒW‚Ƀ^[ƒQƒbƒgˆË‘¶•”‚Ì’˜ìŒ •\Ž¦‚ð
    54  *  ’ljÁ‚·‚邽‚߂̃}ƒNƒD
     49 *  起動メッセージにターゲット依存部の著作権表示を
     50 *  追加するためのマクロ.
    5551 */
    5652#define PRC_COPYRIGHT                                                                           \
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_test.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    66 *  Copyright (C) 2008-2010 by Witz Corporation, 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‰ü
    10  *  •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15  *      —p‚Å‚«‚éŒ`‚ōĔ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
    21  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22  *      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33  *      –Ɛӂ·‚邱‚ƁD
     8 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    3430 *
    35  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39  *  ‚̐ӔC‚𕉂í‚È‚¢D
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    4036 *
    4137 *  @(#) $Id$
     
    4339
    4440/*
    45  *              ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃^[ƒQƒbƒgˆË‘¶’è‹`iRX630—pj
     41 *              テストプログラムのターゲット依存定義(RX630用)
    4642 */
    4743
     
    4945#define TOPPERS_PRC_TEST_H
    5046
    51 #define CPUEXC1                                 25              /* •‚“®¬”“_—áŠO */
     47#define CPUEXC1                                 25              /* 浮動小数点例外 */
    5248#define RAISE_CPU_EXCEPTION             trigger_cpu_exception()
    5349
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_test.src

    • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
    r164 r167  
    66;*  Copyright (C) 2010 by Witz Corporation, 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‰ü
    10 ;*  •ÏEÄ”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‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    13 ;*      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    14 ;*  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    15 ;*      —p‚Å‚«‚éŒ`‚ōĔ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
    21 ;*      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    22 ;*      ‚Ɓ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‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    30 ;*      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    31 ;*      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    32 ;*      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    33 ;*      –Ɛӂ·‚邱‚ƁD
     8;*  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     9;*  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10;*  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11;*  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12;*      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13;*      スコード中に含まれていること.
     14;*  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15;*      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16;*      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17;*      の無保証規定を掲載すること.
     18;*  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19;*      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20;*      と.
     21;*    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22;*        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23;*    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24;*        報告すること.
     25;*  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26;*      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27;*      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28;*      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29;*      免責すること.
    3430;*
    35 ;*  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    36 ;*  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    37 ;*  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    38 ;*  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    39 ;*  ‚̐ӔC‚𕉂í‚È‚¢D
     31;*  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32;*  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33;*  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34;*  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35;*  の責任を負わない.
    4036;*
    4137;*  @(#) $Id: prc_test.src 536 2014-10-09 23:11:40Z coas-nagasima $
     
    4844_trigger_cpu_exception:
    4945        ;
    50         ;  CPU—áŠO‚Ì”­¶
     46        ;  CPU例外の発生
    5147        ;
    52         ;  ƒ[ƒŠ„‚èŽZ‚ðs‚¤‚±‚Æ‚Å, •‚“®¬”“_—áŠO‚ð
    53         ;  ”­¶‚³‚¹‚é.
     48        ;  ゼロ割り算を行うことで, 浮動小数点例外を
     49        ;  発生させる.
    5450        ;
    5551        mvtc    #00001000H, fpsw
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_unrename.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    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 *  @(#) $Id$
     
    4440
    4541/*
    46  *  RX630‚Ɉˑ¶‚·‚é’è‹`
     42 *  RX630に依存する定義
    4743 */
    4844#ifndef TOPPERS_RX630_H
     
    5046
    5147/*
    52  *  CPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Ì’è‹`(ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹)
     48 *  CPU例外ハンドラ番号の定義(固定ベクタテーブル)
    5349 *
    54  *  ”ԍ†‚͈̔͂Í0 - 31
    55  */
    56 #define INT_PRIVILEGED_INSTRUNCTION             20              /* “ÁŒ –½—ß—áŠO */
    57 #define INT_UNDEF_INSTRUNCTION                  23              /* –¢’è‹`–½—ß—áŠO */
    58 #define INT_FLOATINGPOINT_INSTRUCTION   25              /* •‚“®¬”“_—áŠO */
    59 #define INT_NMI                                                 30              /* ƒmƒ“ƒ}ƒXƒJƒuƒ‹Š„‚荞‚Ý */
    60 #define INT_RESET                                               31              /* ƒŠƒZƒbƒg */
    61 
    62 /*
    63  *  Š„ž‚ݔԍ†‚Ì’è‹`(‰Â•ÏƒxƒNƒ^ƒe[ƒuƒ‹)
     50 *  番号の範囲は0 - 31
     51 */
     52#define INT_PRIVILEGED_INSTRUNCTION             20              /* 特権命令例外 */
     53#define INT_UNDEF_INSTRUNCTION                  23              /* 未定義命令例外 */
     54#define INT_FLOATINGPOINT_INSTRUCTION   25              /* 浮動小数点例外 */
     55#define INT_NMI                                                 30              /* ノンマスカブル割り込み */
     56#define INT_RESET                                               31              /* リセット */
     57
     58/*
     59 *  割込み番号の定義(可変ベクタテーブル)
    6460 */
    6561#define INT_BUSERR                      16
     
    250246
    251247/*
    252  *  Šeƒ‚ƒWƒ
    253 [ƒ‹‚̃ŒƒWƒXƒ^‹y‚ѐݒèƒrƒbƒgî•ñ
     248 *  各モジュールのレジスタ及び設定ビット情報
    254249 */
    255250
     
    257252
    258253/*
    259  * ƒ‚ƒWƒ
    260 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^AiMSTPCRAj
     254 * モジュールストップコントロールレジスタA(MSTPCRA)
    261255 */
    262256#define SYSTEM_MSTPCRA_ADDR                     ( ( volatile uint32_t __evenaccess * )0x00080010 )
     
    296290
    297291/*
    298  * ƒ‚ƒWƒ
    299 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^BiMSTPCRBj
     292 * モジュールストップコントロールレジスタB(MSTPCRB)
    300293 */
    301294#define SYSTEM_MSTPCRB_ADDR                     ( ( volatile uint32_t __evenaccess * )0x00080014 )
     
    334327
    335328/*
    336  * ƒ‚ƒWƒ
    337 [ƒ‹ƒXƒgƒbƒvƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^CiMSTPCRCj
     329 * モジュールストップコントロールレジスタC(MSTPCRC)
    338330 */
    339331#define SYSTEM_MSTPCRC_ADDR                     ( ( volatile uint32_t __evenaccess * )0x00080018 )
     
    372364
    373365/*
    374  * ƒNƒƒbƒN”­¶‰ñ˜H
     366 * クロック発生回路
    375367 */
    376368#define SYSTEM_SCKCR_ADDR                       ( ( volatile uint32_t __evenaccess * )0x00080020 )
     
    392384
    393385/*
    394  * ƒvƒƒeƒNƒgƒŒƒWƒXƒ^
     386 * プロテクトレジスタ
    395387 */
    396388#define SYSTEM_PRCR_ADDR                ( ( volatile uint16_t __evenaccess * )0x000803FE )
    397389
    398390/*
    399  * Š„‚荞‚Ý—v‹ƒŒƒWƒXƒ^
     391 * 割り込み要求レジスタ
    400392 */
    401393#define ICU_IR000_ADDR                  ( ( volatile uint8_t __evenaccess * )0x00087000 )
     
    658650
    659651/*
    660  * Š„‚荞‚Ý—v‹æÝ’背ƒWƒXƒ^
     652 * 割り込み要求先設定レジスタ
    661653 */
    662654#define ICU_ISELR000_ADDR               ( ( volatile uint8_t __evenaccess * )0x00087100 )
     
    919911
    920912/*
    921  * Š„‚荞‚Ý—v‹‹–‰ÂƒŒƒWƒXƒ^
     913 * 割り込み要求許可レジスタ
    922914 */
    923915#define ICU_IER02_ADDR                  ( ( volatile uint8_t __evenaccess * )0x00087202 )
     
    960952
    961953/*
    962  * Š„‚荞‚Ý—vˆöƒvƒ‰ƒCƒIƒŠƒeƒBƒŒƒWƒXƒ^i(i=0`253)‚̐ݒè
     954 * 割り込み要因プライオリティレジスタi(i=0〜253)の設定
    963955 */
    964956#define ICU_IPR000_ADDR                 ( ( volatile uint8_t __evenaccess * )0x00087300 )
     
    12221214
    12231215/*
    1224  *  IRQƒRƒ“ƒgƒ[ƒ‹ƒŒƒWƒXƒ^
     1216 *  IRQコントロールレジスタ
    12251217 */
    12261218#define ICU_IRQ0_ADDR                   ( ( volatile uint8_t __evenaccess * )0x00087500 )
     
    12441236
    12451237/*
    1246  *  Šeƒ`ƒƒƒ“ƒlƒ‹‚̃ŒƒWƒXƒ^‹y‚ѐݒèƒrƒbƒgî•ñ
     1238 *  各チャンネルのレジスタ及び設定ビット情報
    12471239 */
    12481240#define CMT_CMSTR0_ADDR                 ( ( volatile uint16_t __evenaccess * )0x00088000 )
     
    13531345
    13541346/*
    1355  *  I/Oƒ|[ƒg‚̃ŒƒWƒXƒ^‹y‚ѐݒèƒrƒbƒgî•ñ
     1347 *  I/Oポートのレジスタ及び設定ビット情報
    13561348 */
    13571349#define PORT0_PDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008C000 )
     
    15231515
    15241516/*
    1525  *  ƒ}ƒ‹ƒ`ƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ƒsƒ“ƒRƒ“ƒgƒ[ƒ‰‚̃ŒƒWƒXƒ^î•ñ
     1517 *  マルチファンクションピンコントローラのレジスタ情報
    15261518 */
    15271519#define MPC_PFUSB0_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008C114 )
     
    16621654
    16631655/*
    1664  * ƒŠƒAƒ‹ƒ^ƒCƒ€ƒNƒƒbƒN
     1656 * リアルタイムクロック
    16651657 */
    16661658#define RTC_R64CNT_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008C400 )
     
    16741666
    16751667/*
    1676  * 12 ƒrƒbƒgA/D ƒRƒ“ƒo[ƒ^
     1668 * 12 ビットA/D コンバータ
    16771669 */
    16781670#define S12AD_ADCSR_ADDR                ( ( volatile uint8_t __evenaccess * )0x00089000 )
     
    19031895
    19041896/*
    1905  *  UARTŠÖ˜A‚Ì’è‹`
     1897 *  UART関連の定義
    19061898 *
    1907  *  pdic‚Ìrx600/rx630_uart.c‚ÅŽg—p‚·‚éD
    1908  */
    1909 /*
    1910  *  ƒVƒŠƒAƒ‹I/O‚̌”
     1899 *  pdicのrx600/rx630_uart.cで使用する.
     1900 */
     1901/*
     1902 *  シリアルI/Oの個数
    19111903 */
    19121904#define TNUM_SIOP       ( 2 )
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    11$
    2 $               ƒA[ƒLƒeƒNƒ`ƒƒˆË‘¶ƒeƒ“ƒvƒŒ[ƒgiRX630—pj
     2$               アーキテクチャ依存テンプレート(RX630用)
    33$
    44
     
    1111
    1212$
    13 Š„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì’è‹`
     13割込み番号と割込みハンドラ番号の定義
    1414$
    15 $  RX630‚Å‚ÍŠ„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚ª1‘Î1‚őΉž‚·‚éD
     15$  RX630では割込み番号と割込みハンドラ番号が1対1で対応する.
    1616$
    1717
     
    2020
    2121$
    22 —áŠO”ԍ†‚Ì’è‹`
     22例外番号の定義
    2323$
    24 ŒÅ’èƒxƒNƒ^ƒe[ƒuƒ‹‚̃xƒNƒ^ƒe[ƒuƒ‹ƒAƒhƒŒƒX‚̏¬‚³‚¢‡”Ô‚É—áŠO”ԍ†‚ðŠ„U‚éD
    25 $  (—\–ñ—̈æ‚àŠÜ‚Þ)
     24固定ベクタテーブルのベクタテーブルアドレスの小さい順番に例外番号を割振る.
     25$  (予約領域も含む)
    2626$
    2727
     
    2929
    3030$
    31 $  INTŠ„ž‚݂̔ԍ†
     31$  INT割込みの番号
    3232$
    3333
     
    3535
    3636$
    37 Š„ž‚ݔԍ†CŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†C—áŠO”ԍ†‚͈̔Í
     37割込み番号,割込みハンドラ番号,例外番号の範囲
    3838$
    39 $ (—\–ñ—̈æ‚àŠÜ‚Þ)
     39$ (予約領域も含む)
    4040$
    4141
     
    4545
    4646$
    47 ƒvƒƒZƒbƒTˆË‘¶‚̃eƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚̃Cƒ“ƒNƒ‹[ƒh
     47プロセッサ依存のテンプレートファイルのインクルード
    4848$
    4949
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630_config.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    77 *  Copyright (C) 2013 by Mitsuhiro Matsuura
    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 *  @(#) $Id$
     
    4440
    4541/*
    46  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    47 [ƒ‹iRX630—pj
     42 *              プロセッサ依存モジュール(RX630用)
    4843 */
    4944
     
    5247
    5348/*
    54  *  Š„ž‚Ý—vˆöƒvƒ‰ƒCƒIƒŠƒeƒBƒŒƒWƒXƒ^ƒAƒhƒŒƒXƒe[ƒuƒ‹
     49 *  割込み要因プライオリティレジスタアドレステーブル
    5550 */
    5651volatile uint8_t __evenaccess * const ipr_reg_addr[ INHNO_MAX ] = {
    57         NULL,                                                   /* No.0  —\–ñ */
    58         NULL,                                                   /* No.1  —\–ñ */
    59         NULL,                                                   /* No.2  —\–ñ */
    60         NULL,                                                   /* No.3  —\–ñ */
    61         NULL,                                                   /* No.4  —\–ñ */
    62         NULL,                                                   /* No.5  —\–ñ */
    63         NULL,                                                   /* No.6  —\–ñ */
    64         NULL,                                                   /* No.7  —\–ñ */
    65         NULL,                                                   /* No.8  —\–ñ */
    66         NULL,                                                   /* No.9  —\–ñ */
    67         NULL,                                                   /* No.10  —\–ñ */
    68         NULL,                                                   /* No.11  —\–ñ */
    69         NULL,                                                   /* No.12  —\–ñ */
    70         NULL,                                                   /* No.13  —\–ñ */
    71         NULL,                                                   /* No.14  —\–ñ */
    72         NULL,                                                   /* No.15  —\–ñ */
    73         ICU_IPR000_ADDR,                                /* No.16  ƒoƒXƒGƒ‰[ BUSERR */
    74         NULL,                                                   /* No.17  —\–ñ */
    75         NULL,                                                   /* No.18  —\–ñ */
    76         NULL,                                                   /* No.19  —\–ñ */
    77         NULL,                                                   /* No.20  —\–ñ */
     52        NULL,                                                   /* No.0  予約 */
     53        NULL,                                                   /* No.1  予約 */
     54        NULL,                                                   /* No.2  予約 */
     55        NULL,                                                   /* No.3  予約 */
     56        NULL,                                                   /* No.4  予約 */
     57        NULL,                                                   /* No.5  予約 */
     58        NULL,                                                   /* No.6  予約 */
     59        NULL,                                                   /* No.7  予約 */
     60        NULL,                                                   /* No.8  予約 */
     61        NULL,                                                   /* No.9  予約 */
     62        NULL,                                                   /* No.10  予約 */
     63        NULL,                                                   /* No.11  予約 */
     64        NULL,                                                   /* No.12  予約 */
     65        NULL,                                                   /* No.13  予約 */
     66        NULL,                                                   /* No.14  予約 */
     67        NULL,                                                   /* No.15  予約 */
     68        ICU_IPR000_ADDR,                                /* No.16  バスエラー BUSERR */
     69        NULL,                                                   /* No.17  予約 */
     70        NULL,                                                   /* No.18  予約 */
     71        NULL,                                                   /* No.19  予約 */
     72        NULL,                                                   /* No.20  予約 */
    7873        ICU_IPR001_ADDR,                                /* No.21  FCU FIFERR */
    79         NULL,                                                   /* No.22  —\–ñ */
     74        NULL,                                                   /* No.22  予約 */
    8075        ICU_IPR002_ADDR,                                /* No.23  FCU FRDYI */
    81         NULL,                                                   /* No.24  —\–ñ */
    82         NULL,                                                   /* No.25  —\–ñ */
    83         NULL,                                                   /* No.26  —\–ñ */
     76        NULL,                                                   /* No.24  予約 */
     77        NULL,                                                   /* No.25  予約 */
     78        NULL,                                                   /* No.26  予約 */
    8479        ICU_IPR003_ADDR,                                /* No.27  SWINT */
    85         ICU_IPR004_ADDR,                                /* No.28  CMTƒ†ƒjƒbƒg0 CMT0 */
    86         ICU_IPR005_ADDR,                                /* No.29  CMTƒ†ƒjƒbƒg0 CMT1 */
    87         ICU_IPR006_ADDR,                                /* No.30  CMTƒ†ƒjƒbƒg1 CMT2 */
    88         ICU_IPR007_ADDR,                                /* No.31  CMTƒ†ƒjƒbƒg1 CMT3 */
     80        ICU_IPR004_ADDR,                                /* No.28  CMTユニット0 CMT0 */
     81        ICU_IPR005_ADDR,                                /* No.29  CMTユニット0 CMT1 */
     82        ICU_IPR006_ADDR,                                /* No.30  CMTユニット1 CMT2 */
     83        ICU_IPR007_ADDR,                                /* No.31  CMTユニット1 CMT3 */
    8984        ICU_IPR032_ADDR,                                /* No.32  ETHER */
    9085        ICU_IPR033_ADDR,                                /* No.33  USB0 D0FIFO0 */
     
    115110        ICU_IPR056_ADDR,                                /* No.58  CAN RXM2 */
    116111        ICU_IPR056_ADDR,                                /* No.59  CAN TXM2 */
    117         NULL,                                                   /* No.60  —\–ñ */
    118         NULL,                                                   /* No.61  —\–ñ */
     112        NULL,                                                   /* No.60  予約 */
     113        NULL,                                                   /* No.61  予約 */
    119114        ICU_IPR062_ADDR,                                /* No.62  RTC PRD */
    120         NULL,                                                   /* No.63  —\–ñ */
    121         ICU_IPR064_ADDR,                                /* No.64  ŠO•”’[Žq IRQ0 */
    122         ICU_IPR065_ADDR,                                /* No.65  ŠO•”’[Žq IRQ1 */
    123         ICU_IPR066_ADDR,                                /* No.66  ŠO•”’[Žq IRQ2 */
    124         ICU_IPR067_ADDR,                                /* No.67  ŠO•”’[Žq IRQ3 */
    125         ICU_IPR068_ADDR,                                /* No.68  ŠO•”’[Žq IRQ4 */
    126         ICU_IPR069_ADDR,                                /* No.69  ŠO•”’[Žq IRQ5 */
    127         ICU_IPR070_ADDR,                                /* No.70  ŠO•”’[Žq IRQ6 */
    128         ICU_IPR071_ADDR,                                /* No.71  ŠO•”’[Žq IRQ7 */
    129         ICU_IPR072_ADDR,                                /* No.72  ŠO•”’[Žq IRQ8 */
    130         ICU_IPR073_ADDR,                                /* No.73  ŠO•”’[Žq IRQ9 */
    131         ICU_IPR074_ADDR,                                /* No.74  ŠO•”’[Žq IRQ10 */
    132         ICU_IPR075_ADDR,                                /* No.75  ŠO•”’[Žq IRQ11 */
    133         ICU_IPR076_ADDR,                                /* No.76  ŠO•”’[Žq IRQ12 */
    134         ICU_IPR077_ADDR,                                /* No.77  ŠO•”’[Žq IRQ13 */
    135         ICU_IPR078_ADDR,                                /* No.78  ŠO•”’[Žq IRQ14 */
    136         ICU_IPR079_ADDR,                                /* No.79  ŠO•”’[Žq IRQ15 */
    137         NULL,