Changeset 167 for UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (8 years ago)
- Location:
- UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/makeoffset.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 8 8 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 9 9 * 10 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 11 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 12 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 13 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 14 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 15 * XR[hÉÜÜêÄ¢é±ÆD 16 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 17 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 18 gip 19 * Ò}j 20 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 21 * ̳ÛØKèðfÚ·é±ÆD 22 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 23 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 24 * ÆD 25 * (a) Äzzɺ¤hL 26 gipÒ}j 27 AÈÇjÉCãLÌ 28 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 29 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 30 * ñ·é±ÆD 31 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 32 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 33 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 34 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 35 * ÆÓ·é±ÆD 36 * 37 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 38 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 39 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 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 * の責任を負わない. 42 38 * 43 39 * @(#) $Id$ … … 46 42 47 43 /* 48 * offset.inc ( àµÍ offset.h) É¢Ä49 * 50 * offset.inc Í\¢ÌÌÁèÌvfª\¢ÌÌ檩ç½oCgÚÉ51 * ¶Ý·é©Æ¢¤±Æâ, ÁèÌrbgtB[hªæª©ç52 * ½oCgæ̽rbgÚɶݷé©, Æ¢¤îñð53 * AZu¾êt@CÉ^¦é½ßɶݵĢé.54 * 55 * offset.inc t@CÌgÍ, PÈéV{è`t@CÅ é.56 * V{Æ¢ÁÄàè`·éV{̼ÌÉÍp^[ª è,57 * 嫪¯ÄÌ3íÞɪÞÅ«é.58 * 59 * < \¢Ì¼>_<vf¼> (á) TCB_sp, TCB_pc, TCB_enatex ÈÇ60 * < \¢Ì¼>_<vf¼>_bit (á) TCB_enatex_bit ÈÇ61 * < \¢Ì¼>_<vf¼>_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 * (例) 64 60 * TCB_texptn .equ 14 65 61 * TCB_sp .equ 20 … … 69 65 * TCB_enatex_mask .equ 0040H 70 66 * 71 * êÔͶßÍÁèÌvfª\¢ÌÌ檩ç½oCgæÉ é©72 * Æ¢¤±Æð¦·lɯéx̼Ì.73 * ñÔÚÍÁèÌrbgtB[hÌrbgª, ºÊ©ç¦Ä74 * ½rbgÚÉ é©Æ¢¤±Æð¦·lɯéx̼Ì.75 * 0 ©çnÜélÅ\»·é. ÅàºÊÌrbgÍæ0rbgÅ é.76 * OÔÚÍæÙÇÌ <\¢Ì¼>_<vf¼>_bit ÆàÖA·éª,77 * ÁèÌrbgtB[hÌrbgÌ}XNl̼Ì.78 * _bit Æ *_mask ÌlÌÔÉÍÌÖWª é.67 * 一番はじめは特定の要素が構造体の先頭から何バイト先にあるか 68 * ということを示す数値につけるラベルの名称. 69 * 二番目は特定のビットフィールド中のビットが, 下位から数えて 70 * 何ビット目にあるかということを示す数値につけるラベルの名称. 71 * 0から始まる数値で表現する. 最も下位のビットは第0ビットである. 72 * 三番目は先ほどの <構造体名>_<要素名>_bit とも関連するが, 73 * 特定のビットフィールド中のビットのマスク値の名称. 74 * _bit と *_mask の値の間には次の関係がある. 79 75 * (*_mask) == (1 << *_bit) 80 * * ( á) TCB_enatex_bit ª 6 Ì, TCB_enatex_mask Í40H81 * 82 * ¿ÈÝÉM32C˶ÌÀÅÍ, ÁèrbgÌ`FbNÈÇÉ83 * rbg½ßAhbVOðgpµÄ¢éÌÅ *_mask Æ¢¤xÍ84 * gpµÄ¢È¢.76 * * (例) TCB_enatex_bit が 6 の時, TCB_enatex_mask は 40H 77 * 78 * ちなみにM32C依存部の実装では, 特定ビットのチェックなどに 79 * ビット命令アドレッシングを使用しているので *_mask というラベルは 80 * 使用していない. 85 81 */ 86 82 87 83 /* 88 * offset.inc Ììèû(M32C^[Qbg˶ü¯) 89 * 90 * GNU CRpCðp¢Ä¢é^[Qbg˶É¢ÄÍ, 91 * J[lÌgbvfBNgÌºÉ é util Æ¢¤fBNgÌ 92 * ºÉ genoffset Æ¢¤ perl XNvgªpÓ³êÄ¢éÌÅ, 93 * ÁÉè®Å offset.h ð쬷éKvÍÈ¢. 94 * genoffset Í GNU J«ðzèµÄ쬳êÄ¢éÌÅ, 95 * ¶¬³êéAZu¾ê^½ßⶬK¥ÌÙÈé¼Ì 96 * CRpCÉÍ»ÌÜÜKpÅ«È¢Â\«ª é. 97 * »±Å, ±±ÅÍWindows« ü¯Ì genoffset ðpÓ¹¸, 98 * ìèûð±±ÉLµ, èìÆÅ offset.inc ð쬵Äà礱ÆÆ 99 * ·é. ȺɻÌû@ð¦·. Ȩ, ±Ìû@ÍM32CÌJ«â 100 * ½ßZbgÉ˶µÄ¢é½ß, ¼Ì^[QbgðgpµÄ¢éêÍ 101 * »ÌÜÜKpÅ«È¢. 102 * 103 * 1. makeoffset.c Æ¢¤t@C©çCRpCðgpµÄ 104 * AZu¾êt@C makeoffset.a30 𶬷é. 105 * RpCIvVÍJ[lR[hÉ^¦éàÌƯ¶ 106 * àÌð^¦é. 107 * lTX»c[ TM ðgpµÄ¢éêÍ, vWFNgGfB^Ì 108 * ¶¬èr 109 [©ç makeoffset.a30 ðIÑ, ENbNj 110 [Ì 111 * ¢ªrh£ðIð·é±ÆŶ¬Å«é. 112 * àµÍR}hvvgÅCNt@CƯ¶fBNgÉ 113 * Ú®µ, "make -f CNt@C¼ makeoffset.a30" ð 114 * ÀsµÄà¯lÌʪ¾çêé. (CNt@CÍTMªgpµÄ 115 * ¢éàÌƯ¶t@CðwèÂ\) 116 * 117 * 2. æÙÇÌ 1. ÌìÆžçê½, makeoffset.a30 t@C©ç 118 * "! BEGIN XXXX" ÅͶÜè "! END" ÅIíÁÄ¢éªðT·. 119 * 120 * 4Ó è, »ê¼êµ¸ÂÙÈéÌÅÉྷé. 121 * (Ⱥ, à¾ÅÍAZu¾êt@CÌRgsÍÈ) 122 * 123 * (1) \¢ÌÌ檩çoÖÌItZbg 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) 構造体の先頭からメンバへのオフセット 124 118 * 125 119 * ! BEGIN TCB_texptn … … 127 121 * ! END 128 122 * 129 * ãL"! BEGIN"Ìãë̶ñªoffset.incÅè`·éV{¼ÆÈé.130 * »ÌV{ÌlÍ, sÌbset½ßÌæ2IyhÌlÅ é131 * 0000000eH ª»êÉ·é. ±êª\¢ÌÌ檩çtexptnÜÅÌ132 * ItZbglÆÈé. µ½ªÁıÌê, offset.inc ÉÍ123 * 上記"! BEGIN"の後ろの文字列がoffset.incで定義するシンボル名となる. 124 * そのシンボルの値は, 次行のbset命令の第2オペランドの値である 125 * 0000000eHがそれに相当する. これが構造体の先頭からtexptnまでの 126 * オフセット値となる. したがってこの場合, offset.inc には 133 127 * TCB_texptn .equ 14 134 * Æ¢¤sðLq·é.135 * 136 * (2) \¢ÌÌoª\¢ÌÅ, »ÌÌoÉηéItZbg137 * 138 * TCB_sp É¢ÄàÙÚ¯l¾ª, sp ÍTCB\¢Ì̼ÚÌ139 * oÅÈTCB\¢ÌÌoÅ éTSKCTXB\¢ÌÌoÅ140 * é_ªÙÈé. »êÅàè`·éV{¼ÆµÄÍ141 * TCB_sp Ìæ¤É\»·é. AZu¾êt@CÅÍ128 * という行を記述する. 129 * 130 * (2) 構造体のメンバが構造体で, その中のメンバに対するオフセット 131 * 132 * TCB_sp についてもほぼ同様だが, sp はTCB構造体の直接の 133 * メンバでなくTCB構造体のメンバであるTSKCTXB構造体のメンバで 134 * ある点が異なる. それでも定義するシンボル名としては 135 * TCB_sp のように表現する. アセンブリ言語ファイルでは 142 136 * 143 137 * ! BEGIN TCB_sp … … 149 143 * ! END * 150 144 * 151 * Ìæ¤ÉÈè,14H(=20) ªßélÈÌÅoffset.inc ÉÍÌæ¤É152 * Lq·é.145 * のようになり,14H(=20) が求める値なのでoffset.inc には次のように 146 * 記述する. 153 147 * 154 148 * TCB_sp .equ 20 155 149 * 156 * (3) oªÖÖÌ|C^Å Á½ê157 * 158 * Í TCB_pc Ìê.150 * (3) メンバが関数へのポインタであった場合 151 * 152 * 次は TCB_pc の場合. 159 153 * 160 154 * ! BEGIN TCB_pc … … 163 157 * ! END 164 158 * 165 * pc à sp Ư¶, TCB\¢Ì̼ÚÌoÅÍÈ¢ª166 * TCB_pc Æ\»µÄ¢é. ±êÍÖÌAhXði[·éÏÈÌÅ,159 * pc も sp と同じく, TCB構造体の直接のメンバではないが 160 * TCB_pc と表現している. これは関数のアドレスを格納する変数なので, 167 161 * (((TCB *)0)->tskctxb.pc)(); 168 * ƵÄÖÄÑoµÌæ¤ÉLq·éÆãLÌæ¤ÈAZu¾ê169 * R[hðoÍ·é. V{è`·éÛÌV{¼Í¡ÜÅÆ170 * ¯¶, TCB_pc Æ·é.171 * ßélÍ\¢Ì©çÖ|C^ÜÅÌItZbgÅ è, ãÌmov.l172 * ½ßÌÊ©ç 00000018H(=24) ÆÈé.173 * µ½ªÁÄ, offset.inc ÉÍÌæ¤ÉLq·é.162 * として関数呼び出しのように記述すると上記のようなアセンブリ言語 163 * コードを出力する. シンボル定義する際のシンボル名は今までと 164 * 同じく, TCB_pc とする. 165 * 求める値は構造体から関数ポインタまでのオフセットであり, 上のmov.l 166 * 命令の結果から 00000018H(=24) となる. 167 * したがって, offset.inc には次のように記述する. 174 168 * 175 169 * TCB_pc .equ 24 176 170 * 177 * (4) \¢ÌÌoªrbgtB[hÅ»ÌrbgÊuàmè½¢ê171 * (4) 構造体のメンバがビットフィールドでそのビット位置も知りたい場合 178 172 * 179 173 * ! BEGIN TCB_enatex … … 181 175 * ! END 182 176 * 183 * ¡ÜÅƯl, BEGIN Ìã̶ñðV{¼Æ·é.184 * ±±ÅÌTCB_enatexÌlÍ\¢ÌÌ檩çrbgtB[hðÜÞo185 * CgÜÅÌItZbgÅ, M32CÌrbg½ßAhbVOÍwèÅ«186 * érbgÊuª0©ç7ÌÔÉûÜéæ¤ÉANZX·éAhXÉK187 * ªÁ¦çêéÌÅ cH+1(=13) ÆÈÁÄ¢é. ܽ, rbgtB[h188 * ÌźÊrbg©çÌrbgÊuÍ 6ÆÈé.189 * ÈãæèÌæ¤É±ÆªÅ«é.177 * 今までと同様, BEGIN の後の文字列をシンボル名とする. 178 * ここでのTCB_enatexの値は構造体の先頭からビットフィールドを含むバ 179 * イトまでのオフセットで, M32Cのビット命令アドレッシングは指定でき 180 * るビット位置が0から7の間に収まるようにアクセスするアドレスに適当 181 * 数が加えられるので cH+1(=13) となっている. また, ビットフィールド 182 * 中の最下位ビットからのビット位置は 6となる. 183 * 以上より次のように書くことができる. 190 184 * 191 185 * TCB_enatex .equ 13 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 7 7 $ Copyright (C) 2013 by Mitsuhiro Matsuura 8 8 $ 9 $ ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 $ Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 $ ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 $ (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 $ \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 $ XR[hÉÜÜêÄ¢é±ÆD 15 $ (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 $ pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 $ Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 $ ̳ÛØKèðfÚ·é±ÆD 21 $ (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 $ pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 $ ÆD 24 $ (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 $ ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 $ (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 $ ñ·é±ÆD 30 $ (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 $ Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 $ ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 $ RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 $ ÆÓ·é±ÆD 35 $ 36 $ {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 37 $ æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 38 $ ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 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 $ の責任を負わない. 41 37 $ 42 38 $ @(#) $Id$ … … 44 40 45 41 $ 46 $ A[LeN`˶ev[giRX630pj47 $ 48 49 50 51 $ 52 $ ATT_ISR ÅgpÅ«éÝÔÆ»êÉηéÝnhÔ42 $ アーキテクチャ依存テンプレート(RX630用) 43 $ 44 45 46 47 $ 48 $ ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号 53 49 $ 54 50 … … 58 54 59 55 $ 60 $ DEF_INT ^DEF_EXCÅgpÅ«éÝnhÔ^CPUáOnhÔ56 $ DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号 61 57 $ 62 58 … … 66 62 67 63 $ 68 $ CFG_INT ÅgpÅ«éÝÔÆÝDæx64 $ CFG_INTで使用できる割込み番号と割込み優先度 69 65 $ 70 66 … … 74 70 75 71 $ 76 $ ^[Qbgñ˶ÉÜÜêéWÌÝÇ@\/áOÇ@\Ìú»ðgp·é72 $ ターゲット非依存部に含まれる標準の割込み管理機能/例外管理機能の初期化処理を使用する 77 73 $ 78 74 … … 82 78 83 79 $ 84 $ X^bNTCYÌ`FbNû@wè80 $ スタックサイズのチェック方法指定 85 81 $ 86 82 … … 89 85 90 86 $ 91 $ ^XNX^bNTCYÌŬl92 $ 93 $ ^XNN®É4byte,94 $ ÝüûÉÄ48byte, CPUáOüûÉÄ84byte,95 $ Å é½ß, ŬlÍ88byteÆ·é.87 $ タスクスタックサイズの最小値 88 $ 89 $ タスク起動時に4byte, 90 $ 割込み入口処理にて48byte, CPU例外入口処理にて84byte, 91 $ であるため, 最小値は88byteとする. 96 92 $ 97 93 … … 100 96 101 97 $ 102 $ èè`98 $ 定数定義 103 99 $ 104 100 … … 107 103 108 104 $ 109 $ ^[Qbg˶ÌÝ®«Ìè`105 $ ターゲット依存の割込み属性の定義 110 106 $ 111 107 … … 114 110 115 111 $ 116 $ ^[Qbg˶ÌÝnh®«Ìè`112 $ ターゲット依存の割込みハンドラ属性の定義 117 113 $ 118 114 … … 121 117 122 118 $ 123 $ J[lÇOÝnhÍÅ賹Ȣ½ß,119 $ カーネル管理外割込みハンドラは固定させないため, 124 120 $ INTNO_FIX_KERNEL 125 121 $ INHNO_FIX_KERNEL 126 122 $ INHNO_FIX_NONKERNEL 127 123 $ INHNO_FIX_NONKERNEL 128 $ ðè`µÈ¢.129 $ 130 131 132 $ 133 $ Wev[gt@CÌCN[h124 $ を定義しない. 125 $ 126 127 128 $ 129 $ 標準テンプレートファイルのインクルード 134 130 $ 135 131 $INCLUDE "kernel.tf"$ … … 138 134 139 135 $ 140 $ CFG_INT Ì^[Qbg˶ÌG[`FbN136 $ CFG_INTのターゲット依存のエラーチェック 141 137 $ 142 138 143 139 $FOREACH intno INT.ORDER_LIST$ 144 $ IRQ ÝԩǤ©ð`FbN140 $ IRQ割込み番号かどうかをチェック 145 141 $IF ( LENGTH( FIND( INTNO_INT, INT.INTNO[intno] ) ) != 0 )$ 146 142 147 $ TA_POSEDGE ÆTA_NEGEDGEª¯ÉÝè³êÄ¢éê143 $ TA_POSEDGEとTA_NEGEDGEが同時に設定されている場合 148 144 $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE )) == ( TA_POSEDGE | TA_NEGEDGE ))$ 149 145 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$ 150 146 $END$ 151 147 152 $ TA_POSEDGE ÆTA_BOTHEDGEª¯ÉÝè³êÄ¢éê148 $ TA_POSEDGEとTA_BOTHEDGEが同時に設定されている場合 153 149 $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_BOTHEDGE ))$ 154 150 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$ 155 151 $END$ 156 152 157 $ TA_NEGEDGE ÆTA_BOTHEDGEª¯ÉÝè³êÄ¢éê153 $ TA_NEGEDGEとTA_BOTHEDGEが同時に設定されている場合 158 154 $IF ((INT.INTATR[intno] & ( TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_NEGEDGE | TA_BOTHEDGE ))$ 159 155 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$ 160 156 $END$ 161 157 162 $ TA_POSEDGE ÆTA_NEGEDGEÆTA_BOTHEDGEª¯ÉÝè³êÄ¢éê158 $ TA_POSEDGEとTA_NEGEDGEとTA_BOTHEDGEが同時に設定されている場合 163 159 $IF ((INT.INTATR[intno] & ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE )) == ( TA_POSEDGE | TA_NEGEDGE | TA_BOTHEDGE ))$ 164 160 $ERROR$ INT.TEXT_LINE[intno]:$FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$ … … 167 163 $ELSE$ 168 164 169 $ IRQ ÝÈOÌÝÉεÄÝ®«ªwè³êÄ¢éê165 $ IRQ割込み以外の割込みに対して割込み属性が指定されている場合 170 166 $IF (INT.INTATR[intno] & (~( TA_ENAINT | TA_EDGE ))) != 0$ 171 167 $ERROR$ INT.TEXT_LINE[intno]: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "intatr", INT.INTATR[intno], INT.INTNO[intno], "CFG_INT")$$END$ … … 179 175 180 176 $ 181 $ ÝÔ©çÝDæxyÑ®«ðæèo·e[u177 $ 割込み番号から割込み優先度及び属性を取り出すテーブル 182 178 $ 183 179 … … 187 183 const CFG_INT_INFO _kernel_cfg_int_table[$LENGTH(INTNO_RANGE)$] = {$NL$ 188 184 $FOREACH intno INTNO_RANGE$ 189 $ ÝDæxðæ¾185 $ 割込み優先度を取得 190 186 $IF LENGTH(INT.INTNO[intno])$ 191 187 $intpri = -INT.INTPRI[intno]$ … … 196 192 $END$ 197 193 198 $ e[uÌgðoÍ194 $ テーブルの中身を出力 199 195 $TAB$$FORMAT("{ %2d, %08x }, /* %02u */", intpri, intatr, +intno)$$NL$ 200 196 $END$ … … 203 199 204 200 $ 205 $ AZuoÍt@C201 $ アセンブラ出力ファイル 206 202 $ 207 203 … … 209 205 210 206 ;$NL$ 211 ; RX630 A[LeN`˶oÍt@C$NL$212 ;$NL$ 213 ; ÝxN^yÑÝnhè`$NL$207 ; RX630アーキテクチャ依存出力ファイル$NL$ 208 ;$NL$ 209 ; 割込みベクタ及び割込みハンドラ定義$NL$ 214 210 ;$NL$ 215 211 $NL$$NL$ … … 217 213 218 214 $ 219 $ Ýüû220 $ 221 222 $ 223 $ ¤ÊÖÌé¾215 $ 割込み入口処理 216 $ 217 218 $ 219 $ 共通関数の宣言 224 220 $ 225 221 … … 231 227 232 228 $ 233 $ ÝnhÌoÍ229 $ 割込みハンドラの出力 234 230 $ 235 231 … … 240 236 $TAB$.glb __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry$NL$ 241 237 __kernel_$INH.INTHDR[inhno]$_$+INH.INHNO[inhno]$_entry:$NL$ 242 $TAB$pushm r1-r5 ; XNb`WX^ð^XNX^bNÖÞð$NL$243 $TAB$mov.l #$+INH.INHNO[inhno]$, r1 ; ÝnhÔðr1Ö$NL$244 $TAB$mov.l #_$INH.INTHDR[inhno]$, r2 ; nhÌAhXðr2Ö$NL$245 $TAB$bra.a _kernel_interrupt ; ¤Ê[`Ö$NL$$NL$$NL$246 $END$ 247 $END$ 248 $END$ 249 250 251 $ ¢o^Ýnhüû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 $ 未登録割込みハンドラ入口処理 252 248 $TAB$.glb$TAB$__kernel_default_int_handler_entry$NL$ 253 249 __kernel_default_int_handler_entry:$NL$ 254 $TAB$pushm r1-r5 ; XNb`WX^ð^XNX^bNÖÞð$NL$255 $TAB$mov.l #0FFFFFFFFH, r1 ; ÝnhÔðr1Ö$NL$256 $TAB$mov.l #__kernel_default_int_handler, r2 ; nhÌAhXðr2Ö$NL$257 $TAB$bra.a _kernel_interrupt ; ¤Ê[`Ö$NL$$NL$$NL$258 259 260 $ 261 $ CPU áOnhüû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例外ハンドラ入口処理 262 258 $ 263 259 … … 269 265 $TAB$.glb __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry$NL$ 270 266 __kernel_$EXC.EXCHDR[excno]$_$+EXC.EXCNO[excno]$_entry:$NL$ 271 $TAB$pushm r1-r5 ; XNb`WX^ð^XNX^bNÖÞð$NL$272 $TAB$mov.l #$+EXC.EXCNO[excno]$, r1 ; CPU áOnhÔðr1Ö$NL$273 $TAB$mov.l #_$EXC.EXCHDR[excno]$, r2 ; nhÌAhXðr2Ö$NL$274 $TAB$bra.a _kernel_exception ; ¤Ê[`Ö$NL$$NL$$NL$275 $END$ 276 $END$ 277 278 279 $ ¢o^CPUáOnhüû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例外ハンドラ入口処理 280 276 $TAB$.glb$TAB$__kernel_default_exc_handler_entry$NL$ 281 277 __kernel_default_exc_handler_entry:$NL$ 282 $TAB$pushm r1-r5 ; XNb`WX^ð^XNX^bNÖÞð$NL$283 $TAB$mov.l #0FFFFFFFFH, r1 ; CPU áOnhÔðr1Ö$NL$284 $TAB$mov.l #__kernel_default_exc_handler, r2 ; nhÌAhXðr2Ö$NL$285 $TAB$bra.a _kernel_exception ; ¤Ê[`Ö$NL$$NL$$NL$286 287 288 $ 289 $ ÂÏxN^e[u290 $ 291 292 ;$NL$ 293 ; ÂÏxN^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$ 294 290 ;$NL$ 295 291 $NL$ … … 322 318 323 319 $ 324 $ ÅèxN^e[u320 $ 固定ベクタテーブル 325 321 $ 326 322 $FOREACH excno EXCNO_RANGE$ … … 334 330 $NL$ 335 331 ;$NL$ 336 ; ÅèxN^e[u$NL$332 ; 固定ベクタテーブル$NL$ 337 333 ;$NL$ 338 334 $NL$ … … 343 339 344 340 $TAB$ .offset$TAB$ 020H$NL$ 345 $TAB$ .lword$TAB$ 00000000 $TAB$ ; §äR[h, IDR[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$ 349 345 350 346 $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$ 352 348 $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$ 354 350 $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$ 356 352 $TAB$ .offset$TAB$ 078H$NL$ 357 $TAB$ .lword$TAB$ _$EXCHDR[30]$ $TAB$ $TAB$ ;$SPC$ 30: m}XJuáO$SPC$$NL$358 $TAB$ .lword$TAB$ _start $TAB$ $TAB$ $TAB$ $TAB$ ;$SPC$ 31: Zbg$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$ 359 355 360 356 $NL$ $NL$ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_asm_config.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 1 1 $ 2 $ asm_config.inc ¶¬p3 $ pX2ÌA[LeN`˶ev[giRX630pj2 $ asm_config.inc 生成用 3 $ パス2のアーキテクチャ依存テンプレート(RX630用) 4 4 $ 5 5 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_cfg1_out.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 1 1 /* 2 * cfg1_out.c ÌNÉKvÈX^uÌè`2 * cfg1_out.cのリンクに必要なスタブの定義 3 3 */ 4 4 … … 20 20 21 21 /* 22 * ItZbgt@C𶬷é½ßÌè`22 * オフセットファイルを生成するための定義 23 23 */ 24 24 const uint8_t MAGIC_1 = 0x12; -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_check.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 6 6 $ Copyright (C) 2008-2010 by Witz Corporation, JAPAN 7 7 $ 8 $ ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 9 $ Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 10 $ ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 $ (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 $ \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 13 $ XR[hÉÜÜêÄ¢é±ÆD 14 $ (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 15 $ pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gip 17 $ Ò}j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 19 $ ̳ÛØKèðfÚ·é±ÆD 20 $ (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 21 $ pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 22 $ ÆD 23 $ (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 $ ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 $ (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 28 $ ñ·é±ÆD 29 $ (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 30 $ Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 31 $ ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 32 $ RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 $ 免責すること. 34 30 $ 35 $ {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨36 $ æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI37 $ ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF38 $ AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»39 $ ÌÓCðíÈ¢D31 $ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 $ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 $ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 $ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 $ の責任を負わない. 40 36 $ 41 37 $ @(#) $Id$ … … 43 39 44 40 $ 45 $ pX3ÌvZbT˶ev[giRX630pj41 $ パス3のプロセッサ依存テンプレート(RX630用) 46 42 $ 47 43 48 44 $ 49 $ `FbNû@Ìwè45 $ チェック方法の指定 50 46 $ 51 47 $CHECK_FUNC_ALIGN = 1$ … … 57 53 58 54 $ 59 $ Wev[gt@CÌCN[h55 $ 標準テンプレートファイルのインクルード 60 56 $ 61 57 $INCLUDE "kernel/kernel_check.tf"$ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 10 10 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 11 11 * 12 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 13 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 14 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 15 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 16 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 17 * XR[hÉÜÜêÄ¢é±ÆD 18 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 19 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 20 gip 21 * Ò}j 22 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 23 * ̳ÛØKèðfÚ·é±ÆD 24 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 25 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 26 * ÆD 27 * (a) Äzzɺ¤hL 28 gipÒ}j 29 AÈÇjÉCãLÌ 30 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 31 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 32 * ñ·é±ÆD 33 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 34 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 35 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 36 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 37 * ÆÓ·é±ÆD 38 * 39 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 40 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 41 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 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 * の責任を負わない. 44 40 * 45 41 * @(#) $Id$ … … 47 43 48 44 /* 49 * vZbT˶W 50 [iRX630pj 45 * プロセッサ依存モジュール(RX630用) 51 46 */ 52 47 … … 56 51 57 52 /* 58 * ݶñðÛ¶·éÏ53 * 割込み発生回数を保存する変数 59 54 */ 60 55 uint16_t intnest; 61 56 62 57 /* 63 * CPU bNtOÀ»Ì½ßÌÏ58 * CPUロックフラグ実現のための変数 64 59 */ 65 60 #if TIPM_LOCK != -15 66 bool_t lock_flag; /* CPU bNtOÌlðÛ·éÏ*/67 uint32_t saved_ipl; /* ÝDæxxðÛ¶·éÏ*/61 bool_t lock_flag; /* CPUロックフラグの値を保持する変数 */ 62 uint32_t saved_ipl; /* 割込み優先度レベルを保存する変数 */ 68 63 #endif /* TIPM_LOCK != -15 */ 69 64 70 65 71 66 /* 72 * vZbT˶Ìú»67 * プロセッサ依存の初期化 73 68 */ 74 69 void … … 76 71 { 77 72 /* 78 * ݶñÌú»79 * 80 * X^[gAbvÍSÝbNóÔ & ñ^XNReLXg81 * ÉÄ®ì·é½ß, ñ^XNReLXgÉU·é.73 * 割込み発生回数の初期化 74 * 75 * スタートアップは全割込みロック状態 & 非タスクコンテキスト 76 * にて動作するため, 非タスクコンテキストに偽装する. 82 77 */ 83 78 intnest = 1U; … … 85 80 #if TIPM_LOCK != -15 86 81 /* 87 * CPU bNtOÀ»Ì½ßÌÏÌú»82 * CPUロックフラグ実現のための変数の初期化 88 83 */ 89 84 lock_flag = true; … … 94 89 95 90 /* 96 * vZbT˶ÌI¹91 * プロセッサ依存の終了処理 97 92 */ 98 93 void … … 100 95 { 101 96 /* 102 * ÁÉKvÈÍÈ¢103 */ 104 } 105 106 107 /* 108 * CPU áO̶óµÌOoÍ97 * 特に必要な処理はない 98 */ 99 } 100 101 102 /* 103 * CPU例外の発生状況のログ出力 109 104 * 110 * CPU áOnhÌ©çCCPUáOîñ|C^ip_excinfjðøƵ111 * ÄÄÑo·±ÆÅCCPUáO̶óµðVXeOÉoÍ·éD105 * CPU例外ハンドラの中から,CPU例外情報ポインタ(p_excinf)を引数とし 106 * て呼び出すことで,CPU例外の発生状況をシステムログに出力する. 112 107 */ 113 108 #ifdef SUPPORT_XLOG_SYS … … 140 135 141 136 /* 142 * ÝvCÌ®«ÌÝè137 * 割込み要求ラインの属性の設定 143 138 * 144 * ASP J[lÅÌpðzèµÄCp[^G[ÍAT[VÅ`Fb145 * NµÄ¢éDcfg_intT[rXR[ðݯéêÉÍCG[ðÔ·æ¤146 * ɷ׫Šë¤D139 * ASPカーネルでの利用を想定して,パラメータエラーはアサーションでチェッ 140 * クしている.cfg_intサービスコールを設ける場合には,エラーを返すよう 141 * にすべきであろう. 147 142 */ 148 143 void … … 165 160 166 161 /* 167 * ÝÌ}XN168 * 169 * Ýðó¯t¯½ÜÜCxgK^GbWgKÌÝèâC170 * ÝDæxÌÝèðs¤ÌÍë¯È½ßCÝ®«É©©íç¸C171 * êU}XN·éD162 * 割込みのマスク 163 * 164 * 割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割 165 * 込み優先度の設定を行うのは危険なため,割込み属性にかかわらず, 166 * 一旦マスクする. 172 167 */ 173 168 ( void )x_disable_int( intno ); 174 169 175 170 /* 176 * xgK/GbWgKÌÝè177 * 178 * IRQ ÌÝT|[g·é171 * レベルトリガ/エッジトリガの設定 172 * 173 * IRQのみサポートする 179 174 */ 180 175 if( INTNO_IRQ( intno ) != 0U ){ … … 195 190 else{ 196 191 /* 197 * RtBM 198 [^ÉÄ`FbNµÄ¢é½ß, 199 * ±±Öé±ÆÍ è¦È¢. 192 * コンフィギュレータにてチェックしているため, 193 * ここへくることはありえない. 200 194 */ 201 195 irq_val = 0U; … … 206 200 207 201 /* 208 * ÝxÌÝè209 * 210 * ÝÔÉε½IPRlðÝè·é.202 * 割込みレベルの設定 203 * 204 * 割込み番号に対応したIPR値を設定する. 211 205 */ 212 206 sil_wrb_mem((uint8_t *)ipr_reg_addr[intno], cfg_int_table[intno].intpri); 213 207 214 208 /* 215 * ÝÌ}XNð209 * 割込みのマスク解除 216 210 */ 217 211 if( ( intatr & TA_ENAINT ) != 0U ){ … … 223 217 #ifndef OMIT_DEFAULT_INT_HANDLER 224 218 /* 225 * ¢o^Ìݪ¶µ½êÉÄÑo³êé219 * 未登録の割込みが発生した場合に呼び出される 226 220 */ 227 221 void … … 234 228 #ifndef OMIT_DEFAULT_EXC_HANDLER 235 229 /* 236 * ¢o^ÌáOª¶µ½êÉÄÑo³êé230 * 未登録の例外が発生した場合に呼び出される 237 231 */ 238 232 void -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 11 11 * Copyright (C) 2013 by Mitsuhiro Matsuura 12 12 * 13 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 14 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 15 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 16 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 17 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 18 * XR[hÉÜÜêÄ¢é±ÆD 19 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 20 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 21 gip 22 * Ò}j 23 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 24 * ̳ÛØKèðfÚ·é±ÆD 25 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 26 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 27 * ÆD 28 * (a) Äzzɺ¤hL 29 gipÒ}j 30 AÈÇjÉCãLÌ 31 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 32 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 33 * ñ·é±ÆD 34 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 35 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 36 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 37 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 * 免責すること. 39 35 * 40 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨41 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI42 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF43 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»44 * ÌÓCðíÈ¢D36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 * の責任を負わない. 45 41 * 46 42 * @(#) $Id$ … … 48 44 49 45 /* 50 * vZbT˶W 51 [iRX630pj 52 * 53 * ±ÌCN[ht@CÍCtarget_config.hiܽÍC»±©çCN 54 * [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç 55 * ¼ÚCN[hµÄÍÈçÈ¢D 46 * プロセッサ依存モジュール(RX630用) 47 * 48 * このインクルードファイルは,target_config.h(または,そこからインク 49 * ルードされるファイル)のみからインクルードされる.他のファイルから 50 * 直接インクルードしてはならない. 56 51 */ 57 52 … … 62 57 63 58 /* 64 * vZbTÌÁê½ßÌCCÖè`59 * プロセッサの特殊命令のインライン関数定義 65 60 */ 66 61 #include "prc_insn.h" … … 69 64 70 65 /* 71 * ñ^XNReLXgpÌX^bNúl66 * 非タスクコンテキスト用のスタック初期値 72 67 */ 73 68 … … 76 71 77 72 /* 78 * ^XNReLXgubNÌè`73 * タスクコンテキストブロックの定義 79 74 */ 80 75 typedef struct task_context_block { 81 void *sp; /* X^bN|C^*/82 FP pc; /* vOJE^*/76 void *sp; /* スタックポインタ */ 77 FP pc; /* プログラムカウンタ */ 83 78 } TSKCTXB; 84 79 85 80 86 81 /* 87 * ݶñðÛ¶·éÏ82 * 割込み発生回数を保存する変数 88 83 */ 89 84 extern uint16_t intnest; … … 91 86 92 87 /* 93 * CPU bNóÔÅÌÝDæx}XN94 * 95 * TIPM_LOCK ÍCCPUbNóÔÅÌÝDæx}XNC·Èí¿CJ[l96 * ÇOÌàÌð·×ÄÌÝvð}XN·élÉè`·éD97 * 98 * TMIN_INTPRI ÏX·é±ÆÅÇOÝÌL³ðè·éD99 * á¦ÎTMIN_INTPRIð-14ÉÝè·éÆCx15ÌݪJ[lÇOÆ100 * ÈéDTMIN_INTPRIð-15ÉÝè·éÆCNMIÈOÉJ[lÇOÌÝð101 * ݯȢ±ÆÉÈéi±ÌêÉÍ-15ÉÝè·é±Æð§·éjD88 * CPUロック状態での割込み優先度マスク 89 * 90 * TIPM_LOCKは,CPUロック状態での割込み優先度マスク,すなわち,カーネ 91 * ル管理外のものを除くすべての割込み要求をマスクする値に定義する. 92 * 93 * TMIN_INTPRI変更することで管理外割込みの有無を決定する. 94 * 例えばTMIN_INTPRIを-14に設定すると,レベル15の割込みがカーネル管理外と 95 * なる.TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを 96 * 設けないことになる(この場合には-15に設定することを推奨する). 102 97 */ 103 98 #ifndef TIPM_LOCK … … 107 102 108 103 /* 109 * TOPPERS WÝfÌÀ»110 */ 111 /* 112 * ReLXgÌQÆ113 * 114 * RX ÅÍCÝÌßèæª^XN©Ç¤©ð»f·é½ßÉintnest115 * ðgpµÄ¢éD±êðp¢ÄReLXgð»f·éD104 * TOPPERS標準割込み処理モデルの実現 105 */ 106 /* 107 * コンテキストの参照 108 * 109 * RXでは,割込みの戻り先がタスクかどうかを判断するために intnest 110 * を使用している.これを用いてコンテキストを判断する. 116 111 */ 117 112 Inline bool_t 118 113 sense_context( void ) 119 114 { 120 /* lXgJE^0æèåÈçñ^XNReLXg*/115 /* ネストカウンタ0より大なら非タスクコンテキスト */ 121 116 return ( intnest > 0U ); 122 117 } … … 124 119 125 120 /* 126 * CPU bNtOÀ»Ì½ßÌÏ127 * 128 * ±êçÌÏÍCCPUbNóÔÌÌÝ«·¦Äæ¢àÌÆ·éD121 * CPUロックフラグ実現のための変数 122 * 123 * これらの変数は,CPUロック状態の時のみ書き換えてよいものとする. 129 124 */ 130 125 #if TIPM_LOCK != -15 131 extern bool_t lock_flag; /* CPU bNtOÌlðÛ·éÏ*/132 extern uint32_t saved_ipl; /* ÝDæxxðÛ¶·éÏ*/126 extern bool_t lock_flag; /* CPUロックフラグの値を保持する変数 */ 127 extern uint32_t saved_ipl; /* 割込み優先度レベルを保存する変数 */ 133 128 #endif /* TIPM_LOCK != -15 */ 134 129 … … 137 132 138 133 /* 139 * ÝDæx}XNÌO\»Æà\»ÌÏ·140 * 141 * RX630 ÅÍCvZbTXe[^X[hWX^iPSWj̺©ç142 * 24 `27rbgÚÌ4rbgÉÝDæxxiIPLjªu©êÄ¢éD143 * J[lÇOÝðÀ·éêÉIPLðgpµ½§äðs¤D144 * J[lÍÝDæx}XNi-1©çA±µ½ÌljÅdzêÄ145 * ¢é½ßIPLÆÌÏ·ªKvÆÈéD146 */ 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 bNóÔÅÌÝDæx}XNÌIPL134 * 割込み優先度マスクの外部表現と内部表現の変換 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 153 148 */ 154 149 #define IPL_LOCK ( IPM_TO_IPL( TIPM_LOCK ) ) 155 150 156 151 /* 157 * TIPM_ENAALL iÝDæx}XNSðjÌIPL152 * TIPM_ENAALL(割込み優先度マスク全解除)のIPL 158 153 */ 159 154 #define IPL_ENAALL ( IPM_TO_IPL( TIPM_ENAALL ) ) … … 163 158 164 159 /* 165 * ÝvöÌx & ®«è`e[u166 * ( ev[gt@CÉæéoÍ)160 * 割込み要因毎のレベル & 属性定義テーブル 161 * (テンプレートファイルによる出力) 167 162 */ 168 163 typedef struct cfg_int_info { … … 175 170 176 171 /* 177 * ÝÔÌÍÍÌ»è 178 * 179 * ÝÔªLøÈl©µ§É`FbN·é½ß, 180 * RtBM 181 [^oÍe[uðQÆ·é. 172 * 割込み番号の範囲の判定 173 * 174 * 割込み番号が有効な値か厳密にチェックするため, 175 * コンフィギュレータ出力テーブルを参照する. 182 176 */ 183 177 #define VALID_INTNO( intno ) \ … … 186 180 #define VALID_INTNO_CFGINT( intno ) VALID_INTNO( intno ) 187 181 188 /* cre_int ÅLøÈÝÔÌwè*/182 /* cre_intで有効な割込み番号の指定 */ 189 183 #define VALID_INTNO_CREINT VALID_INTNO_CFGINT((intno)) 190 184 191 /* cre_isr ÅLøÈÝÔÌwè*/185 /* cre_isrで有効な割込み番号の指定 */ 192 186 #define VALID_INTNO_CREISR(intno) VALID_INTNO_CFGINT((intno)) 193 187 194 188 195 189 /* 196 * ݧäWX^ÖAÌè`190 * 割込み制御レジスタ関連の定義 197 191 */ 198 192 #define IRQ_POSEDGE ( 0x08U ) … … 203 197 204 198 /* 205 * CPU bNóÔÖÌÚs206 * 207 * IPM in[hEFAÌÝDæx}XNjðCsaved_iipmÉÛ¶µCJ[208 * lÇOÌàÌð·×ÄÌÝvð}XN·éliTIPM_LOCKj209 * ÉÝè·éDܽClock_flagðTRUEÉ·éD210 * 211 * IPM ªCÅ©çTIPM_LOCKƯ¶©»êæè¢êÉÍC»êð212 * saved_iipm ÉÛ¶·éÌÝÅCTIPM_LOCKÉÍÝèµÈ¢D±êÍCf213 * ãÌÝDæx}XNªCTIPM_LOCKƯ¶©»êæè¢xÉÝè214 * ³êÄ¢éóÔÉ ½éD215 * 216 * ±ÌÖÍCCPUbNóÔilock_flagªTRUEÌóÔjÅÄÎêé±ÆÍ217 * È¢àÌÆzèµÄ¢éD199 * 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 * ないものと想定している. 218 212 */ 219 213 Inline void … … 226 220 227 221 /* 228 * current_ipl() ÌÔèlð¼Úsaved_iplÉÛ¶¹¸CêÏipl229 * ðp¢Ä¢éÌÍCcurrent_ipl()ðÄñ¾¼ãÉݪ¶µC230 * N®³ê½ÝÅsaved_iplªÏX³êéÂ\«ª é½ßÅ231 * éD222 * current_ipl()の返り値を直接saved_iplに保存せず,一時変数ipl 223 * を用いているのは,current_ipl()を呼んだ直後に割込みが発生し, 224 * 起動された割込み処理でsaved_iplが変更される可能性があるためで 225 * ある. 232 226 */ 233 227 ipl = current_ipl(); … … 246 240 247 241 /* 248 * CPU bNóÔÌð249 * 250 * lock_flag ðFALSEɵCIPMin[hEFAÌÝDæx}XNjðC251 * saved_iipm ÉÛ¶µ½lÉß·D252 * 253 * ±ÌÖÍCCPUbNóÔilock_flagªtrueÌóÔjÅÌÝÄÎêéà254 * ÌÆzèµÄ¢éD242 * CPUロック状態の解除 243 * 244 * lock_flagをFALSEにし,IPM(ハードウェアの割込み優先度マスク)を, 245 * saved_iipmに保存した値に戻す. 246 * 247 * この関数は,CPUロック状態(lock_flagがtrueの状態)でのみ呼ばれるも 248 * のと想定している. 255 249 */ 256 250 Inline void … … 270 264 271 265 /* 272 * CPU bNóÔÌQÆ266 * CPUロック状態の参照 273 267 */ 274 268 Inline bool_t … … 287 281 288 282 /* 289 * ifãÌjÝDæx}XNÌÝè290 * 291 * CPU bNtOªNA³êÄ¢éÍCn[hEFAÌÝDæx}292 * XNðÝè·éDCPUbNtOªZbg³êÄ¢éÍCsaved_iipm293 * ðÝèµC³çÉCn[hEFAÌÝDæx}XNðCÝèµæ¤Æ294 * µ½ifãÌjÝDæx}XNÆTIPM_LOCKÌ¢ûÉÝè·éD283 * (モデル上の)割込み優先度マスクの設定 284 * 285 * CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ 286 * スクを設定する.CPUロックフラグがセットされている時は,saved_iipm 287 * を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと 288 * した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する. 295 289 */ 296 290 Inline void … … 316 310 317 311 /* 318 * ifãÌjÝDæx}XNÌQÆ319 * 320 * CPU bNtOªNA³êÄ¢éÍn[hEFAÌÝDæx}321 * XNðCZbg³êÄ¢éÍsaved_iipmðQÆ·éD312 * (モデル上の)割込み優先度マスクの参照 313 * 314 * CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ 315 * スクを,セットされている時はsaved_iipmを参照する. 322 316 */ 323 317 Inline PRI … … 343 337 344 338 /* 345 * ÝvÖ~tOÌZbg346 * 347 * Ý®«ªÝè³êĢȢÝvCÉεÄÝvÖ~348 * tOðZbgµæ¤Æµ½êÉÍCFALSEðÔ·D339 * 割込み要求禁止フラグのセット 340 * 341 * 割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止 342 * フラグをセットしようとした場合には,FALSEを返す. 349 343 */ 350 344 Inline bool_t … … 352 346 { 353 347 /* 354 * xè`ª0Å éêÍCFG_INT³êĢȢ348 * レベル定義が0である場合はCFG_INTされていない 355 349 */ 356 350 if( cfg_int_table[intno].intpri == 0 ){ … … 368 362 369 363 /* 370 * ÝvÖ~tOÌNA371 * 372 * Ý®«ªÝè³êĢȢÝvCÉεÄÝvÖ~373 * tOðNAµæ¤Æµ½êÉÍCFALSEðÔ·D364 * 割込み要求禁止フラグのクリア 365 * 366 * 割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止 367 * フラグをクリアしようとした場合には,FALSEを返す. 374 368 */ 375 369 Inline bool_t … … 377 371 { 378 372 /* 379 * xè`ª0Å éêÍCFG_INT³êĢȢ373 * レベル定義が0である場合はCFG_INTされていない 380 374 */ 381 375 if( cfg_int_table[intno].intpri == 0 ){ … … 393 387 394 388 /* 395 * ÝvÌNA389 * 割込み要求のクリア 396 390 */ 397 391 Inline void … … 406 400 407 401 /* 408 * ÝvÌ`FbN402 * 割込み要求のチェック 409 403 */ 410 404 Inline bool_t … … 412 406 { 413 407 /* 414 * ÝvWX^Í0 or 1ŵ©È¢½ß,415 * »ÌÜÜÌlðÔ·.408 * 割込み要求レジスタは0 or 1でしかないため, 409 * そのままの値を返す. 416 410 */ 417 411 return ( *IR_REG(intno) ); … … 423 417 424 418 /* 425 * ÝvCÌ®«ÌÝè419 * 割込み要求ラインの属性の設定 426 420 */ 427 421 extern void x_config_int( INTNO intno, ATR intatr, PRI intpri ); … … 429 423 430 424 /* 431 * ÝnhÌüûÅKvÈIRCì425 * 割込みハンドラの入口で必要なIRC操作 432 426 * 433 427 */ … … 438 432 439 433 /* 440 * xoÌÝÉεÄÍÝXe[^X441 * tOðNA·é.434 * レベル検出の割込みに対しては割込みステータス 435 * フラグをクリアする. 442 436 */ 443 437 if( ( cfg_int_table[intno].intatr & TA_LOWLEVEL ) > 0 ){ 444 438 if( *IR_REG(intno) > 0U ){ 445 439 /* 446 * OÝÌê, IRQ[qªHighÉßÁÄ¢é447 * ±ÆðmF·é|ªLÚ³êÄ¢éª, Ȫ·é.440 * 外部割込みの場合, IRQ端子がHighに戻っている 441 * ことを確認する旨が記載されているが, 省略する. 448 442 */ 449 443 // *ir_reg_addr[intno] = 0U; 450 444 451 445 /* 452 * n[hEFA}j 453 AÉ0ÉÈÁ½±Æð 454 * mF·é|ªLÚ é½ß, WX^lðÇÝo·. 446 * ハードウェアマニュアルに0になったことを 447 * 確認する旨が記載あるため, レジスタ値を読み出す. 455 448 */ 456 449 // reg = *ir_reg_addr[intno]; … … 461 454 462 455 /* 463 * ÝnhÌoûÅKvÈIRCì456 * 割込みハンドラの出口で必要なIRC操作 464 457 * 465 458 */ … … 467 460 i_end_int( INTNO intno ) 468 461 { 469 /* ÁÉs¤×«ÍÈ¢*/470 } 471 472 473 /* 474 * ÅDæÊ^XNÖÌfBXpb`iprc_support.a30j475 * 476 * dispatch ÍC^XNReLXg©çÄÑo³ê½T[rXR[©477 * çÄÑo·×«àÌÅC^XNReLXgECPUbNóÔEfBXpb478 * `ÂóÔEifãÌjÝDæx}XNSðóÔÅÄÑo³È479 * ¯êÎÈçÈ¢D462 /* 特に行うべき処理はない */ 463 } 464 465 466 /* 467 * 最高優先順位タスクへのディスパッチ(prc_support.a30) 468 * 469 * dispatchは,タスクコンテキストから呼び出されたサービスコール処理か 470 * ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ 471 * チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな 472 * ければならない. 480 473 */ 481 474 extern void dispatch( void ); 482 475 483 476 /* 484 * fBXpb`Ì®ìJniprc_support.a30j485 * 486 * start_dispatch ÍCJ[lN®ÉÄÑo·×«àÌÅC·×ÄÌ487 * ÝðÖ~µ½óÔiSÝbNóÔƯÌóÔjÅÄÑo³È¯êÎ488 * ÈçÈ¢D477 * ディスパッチャの動作開始(prc_support.a30) 478 * 479 * start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込 480 * みを禁止した状態(全割込みロック状態と同等の状態)で呼び出さなければ 481 * ならない. 489 482 */ 490 483 extern void start_dispatch( void ) NoReturn; 491 484 492 485 /* 493 * »ÝÌReLXgðÌÄÄfBXpb`iprc_support.a30j494 * 495 * exit_and_dispatch ÍCext_tsk©çÄÑo·×«àÌÅC^XNReL496 * XgECPUbNóÔEfBXpb`ÂóÔEifãÌjÝDæ497 * x}XNSðóÔÅÄÑo³È¯êÎÈçÈ¢D486 * 現在のコンテキストを捨ててディスパッチ(prc_support.a30) 487 * 488 * exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ 489 * スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先 490 * 度マスク全解除状態で呼び出さなければならない. 498 491 */ 499 492 #define _kernel_exit_and_dispatch(); \ … … 504 497 505 498 /* 506 * J[lÌI¹ÌÄoµiprc_support.a30j507 * 508 * call_exit_kernel ÍCJ[lÌI¹ÉÄÑo·×«àÌÅCñ^XN509 * ReLXgÉØè·¦ÄCJ[lÌI¹iexit_kerneljðÄÑo510 * ·D499 * カーネルの終了処理の呼出し(prc_support.a30) 500 * 501 * call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク 502 * コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出 503 * す. 511 504 */ 512 505 extern void call_exit_kernel( void ) NoReturn; 513 506 514 507 /* 515 * ^XNReLXgÌú»516 * 517 * ^XNªx~óÔ©çÀsÅ«éóÔÉÚs·éÉÄÎêéD±Ì_518 * ÅX^bNÌæðgÁÄÍÈçÈ¢D519 * 520 * activate_context ðCCCÖÅÍÈ}Nè`ƵĢéÌÍC521 * ±Ì_ÅÍTCBªè`³êĢȢ½ßÅ éD508 * タスクコンテキストの初期化 509 * 510 * タスクが休止状態から実行できる状態に移行する時に呼ばれる.この時点 511 * でスタック領域を使ってはならない. 512 * 513 * activate_contextを,インライン関数ではなくマクロ定義としているのは, 514 * この時点ではTCBが定義されていないためである. 522 515 */ 523 516 extern void start_r( void ); … … 527 520 { \ 528 521 \ 529 /* X^bN|C^úlÌÝè*/ \522 /* スタックポインタ初期値の設定 */ \ 530 523 ( p_tcb )->tskctxb.sp = ( void * )((( uint32_t ) ( p_tcb )->p_tinib->stk ) + \ 531 524 ( p_tcb )->p_tinib->stksz ); \ 532 /* N®ÔnÌÝè*/ \525 /* 起動番地の設定 */ \ 533 526 ( p_tcb )->tskctxb.pc = ( FP ) start_r; \ 534 527 } \ … … 537 530 538 531 /* 539 * calltex ÍgpµÈ¢532 * calltexは使用しない 540 533 */ 541 534 #define OMIT_CALLTEX … … 543 536 544 537 /* 545 * ÝnhÌÝè546 * 547 * RX630 ÍROMÉÝxN^ðzu·é½ßC{ÖÍóÖÅÀ·éD538 * 割込みハンドラの設定 539 * 540 * RX630はROMに割込みベクタを配置するため,本関数は空関数で実装する. 548 541 */ 549 542 Inline void … … 554 547 555 548 /* 556 * CPU áOnhÌÝè557 * 558 * RX630 ÍROMÉáOxN^ðzu·é½ßC{ÖÍóÖÅÀ·éD549 * CPU例外ハンドラの設定 550 * 551 * RX630はROMに例外ベクタを配置するため,本関数は空関数で実装する. 559 552 */ 560 553 Inline void … … 565 558 566 559 /* 567 * Ý/áOnhÌüû̶¬}N568 * 569 * ev[gt@CÉæ趬·é½ßó}NÆ·éD560 * 割込み/例外ハンドラの入口処理の生成マクロ 561 * 562 * テンプレートファイルにより生成するため空マクロとする. 570 563 */ 571 564 #define HDR_ENTRY(hdr, intexc_num , tobejmp) 572 565 573 566 /* 574 * ÝnhÌüû̶¬}N567 * 割込みハンドラの入口処理の生成マクロ 575 568 */ 576 569 #define _INT_ENTRY(inhno, inthdr) _kernel_##inthdr##_##inhno##_entry … … 583 576 584 577 /* 585 * CPU áOnhÌüû̶¬}N578 * CPU例外ハンドラの入口処理の生成マクロ 586 579 */ 587 580 #define _EXC_ENTRY(excno , exchdr) _kernel_##exchdr##_##excno##_entry … … 594 587 595 588 /* 596 * CPU áO̶µ½ÌReLXgÌQÆ597 * 598 * CPU áO̶µ½ÌReLXgªC^XNReLXgÌÉFALSEC599 * »¤ÅÈ¢ÉtrueðÔ·D589 * CPU例外の発生した時のコンテキストの参照 590 * 591 * CPU例外の発生した時のコンテキストが,タスクコンテキストの時にFALSE, 592 * そうでない時にtrueを返す. 600 593 */ 601 594 Inline bool_t … … 603 596 { 604 597 /* 605 * lXgJE^ª1æèåÈçñ^XNReLXg598 * ネストカウンタが1より大なら非タスクコンテキスト 606 599 */ 607 600 return( intnest > 1U ); … … 610 603 611 604 /* 612 * CPU áOîñ p_excinf ©ç PSW Ìlðæ¾·é½ßÌItZbgl613 * EXCNO + ACC + FPSW + R1 `R15 + PC605 * CPU例外情報 p_excinf から PSW の値を取得するためのオフセット値 606 * EXCNO + ACC + FPSW + R1〜R15 + PC 614 607 */ 615 608 #define EXC_GET_PSW_OFFSET (4+8+4+60+4) 616 609 617 610 /* 618 * CPU áO̶µ½ÌIPLÌQÆ611 * CPU例外の発生した時のIPLの参照 619 612 */ 620 613 Inline uint32_t … … 634 627 635 628 /* 636 * CPU áO̶µ½ÌReLXgÆÝÌ}XNóÔÌQÆ637 * 638 * CPU áO̶µ½ÌVXeóÔªCJ[lÀsÅÈC^XNR639 * eLXgÅ èCSÝbNóÔÅÈCCPUbNóÔÅÈCi640 * fãÌjÝDæx}XNSðóÔÅ éÉtrueC»¤ÅÈ¢641 * ÉFALSEðÔ·iCPUáOªJ[lÇOÌÝŶµ½ê642 * ÉàFALSEðÔ·jD629 * CPU例外の発生した時のコンテキストと割込みのマスク状態の参照 630 * 631 * CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ 632 * ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,(モ 633 * デル上の)割込み優先度マスク全解除状態である時にtrue,そうでない時 634 * にFALSEを返す(CPU例外がカーネル管理外の割込み処理中で発生した場合 635 * にもFALSEを返す). 643 636 * 644 * J[lÀsÅÈ¢¨ (TIPM_LOCK== -15) ItO== 1637 * カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1 645 638 * (else) IPL < IPL_LOCK 646 * ^XNReLXgÅ é¨intnest == 0647 * SÝbNÅÈ¢¨ ItO== 1648 * ÝDæx}XNªSð¨IPL == 0639 * タスクコンテキストである→intnest == 0 640 * 全割込みロックでない→ Iフラグ == 1 641 * 割込み優先度マスクが全解除→IPL == 0 649 642 * 650 643 * … … 659 652 660 653 /* 661 * CPU áO̶µ½ÌReLXgÆÝ^CPUbNóÔÌQÆ662 * 663 * CPU áO̶µ½ÌVXeóÔªCJ[lÀsÅÈC^XNR664 * eLXgÅ èCSÝbNóÔÅÈCCPUbNóÔÅÈ¢É665 * true C»¤ÅÈ¢ÉfalseðÔ·iCPUáOªJ[lÇOÌÝ666 * Ŷµ½êÉàfalseðÔ·jD654 * CPU例外の発生した時のコンテキストと割込み/CPUロック状態の参照 655 * 656 * CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ 657 * ンテキストであり,全割込みロック状態でなく,CPUロック状態でない時に 658 * true,そうでない時にfalseを返す(CPU例外がカーネル管理外の割込み処 659 * 理中で発生した場合にもfalseを返す). 667 660 * 668 * J[lÀsÅÈ¢¨ (TIPM_LOCK== -15) ItO== 1661 * カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1 669 662 * (else) IPL < TIPM_LOCK 670 * ^XNReLXgÅ é¨intnest < 1671 * SÝbNÅÈ¢¨ ItO== 1672 * CPU bNóÔÅÈ¢¨(TIPM_LOCK== -15) ItO== 1663 * タスクコンテキストである→intnest < 1 664 * 全割込みロックでない→ Iフラグ == 1 665 * CPUロック状態でない→(TIPM_LOCK== -15) Iフラグ == 1 673 666 * (else) IPL < TIPM_LOCK 674 667 */ … … 688 681 689 682 /* 690 * vZbT˶Ìú»683 * プロセッサ依存の初期化 691 684 */ 692 685 extern void prc_initialize( void ); 693 686 694 687 /* 695 * vZbT˶ÌI¹688 * プロセッサ依存の終了時処理 696 689 */ 697 690 extern void prc_terminate( void ); … … 700 693 #ifndef OMIT_DEFAULT_INT_HANDLER 701 694 /* 702 * ¢o^Ìݪ¶µ½êÉÄÑo³êé695 * 未登録の割込みが発生した場合に呼び出される 703 696 */ 704 697 void default_int_handler( void ); … … 707 700 #ifndef OMIT_DEFAULT_EXC_HANDLER 708 701 /* 709 * ¢o^ÌáOª¶µ½êÉÄÑo³êé702 * 未登録の例外が発生した場合に呼び出される 710 703 */ 711 704 void default_exc_handler( void ); -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_def.csv
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
-
Property svn:mime-type
set to
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_insn.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 10 10 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 11 11 * 12 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 13 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 14 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 15 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 16 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 17 * XR[hÉÜÜêÄ¢é±ÆD 18 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 19 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 20 gip 21 * Ò}j 22 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 23 * ̳ÛØKèðfÚ·é±ÆD 24 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 25 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 26 * ÆD 27 * (a) Äzzɺ¤hL 28 gipÒ}j 29 AÈÇjÉCãLÌ 30 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 31 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 32 * ñ·é±ÆD 33 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 34 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 35 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 36 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 * 免責すること. 38 34 * 39 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨40 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI41 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF42 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»43 * ÌÓCðíÈ¢D35 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 36 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 37 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 38 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 39 * の責任を負わない. 44 40 * 45 41 * @(#) $Id$ … … 47 43 48 44 /* 49 * vZbTÌÁê½ßÌCCÖè`iRX630pj45 * プロセッサの特殊命令のインライン関数定義(RX630用) 50 46 */ 51 47 … … 65 61 66 62 /* 67 * I tO, IPLðæ¾·é½ßÌ}Nè`63 * Iフラグ, IPLを取得するためのマクロ定義 68 64 */ 69 65 #define PSW_I_MASK ( 0x00010000UL ) … … 72 68 73 69 /* 74 * vZbTXe[^XWX^(PSW)Ì»ÝlÌÇoµ70 * プロセッサステータスレジスタ(PSW)の現在値の読出し 75 71 */ 76 72 #pragma inline_asm current_psw … … 83 79 84 80 /* 85 * vZbTXe[^XWX^(PSW)ÖÝè81 * プロセッサステータスレジスタ(PSW)へ設定 86 82 */ 87 83 #pragma inline_asm set_psw … … 94 90 95 91 /* 96 * IPL Ì»ÝlÌÇoµ92 * IPLの現在値の読出し 97 93 */ 98 94 Inline uint32_t … … 104 100 105 101 /* 106 * IPL ÖÝè102 * IPLへ設定 107 103 */ 108 104 Inline void … … 114 110 115 111 /* 116 * NMI ð·×ÄÌÝÌÖ~112 * NMIを除くすべての割込みの禁止 117 113 */ 118 114 #pragma inline_asm disint … … 125 121 126 122 /* 127 * NMI ð·×ÄÌÝÌÂ123 * NMIを除くすべての割込みの許可 128 124 */ 129 125 #pragma inline_asm enaint … … 136 132 137 133 /* 138 * GfBAÏ·16bit134 * エンディアン変換 16bit 139 135 */ 140 136 #pragma inline_asm rev_endian_uint16 … … 146 142 147 143 /* 148 * GfBAÏ·32bit144 * エンディアン変換 32bit 149 145 */ 150 146 #pragma inline_asm rev_endian_uint32 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_kernel.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 6 6 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 7 7 * 8 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 9 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 10 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 13 * XR[hÉÜÜêÄ¢é±ÆD 14 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 15 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gip 17 * Ò}j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 19 * ̳ÛØKèðfÚ·é±ÆD 20 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 21 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 22 * ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 28 * ñ·é±ÆD 29 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 30 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 31 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 32 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 * 免責すること. 34 30 * 35 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨36 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI37 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF38 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»39 * ÌÓCðíÈ¢D31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 40 36 * 41 37 * @(#) $Id$ … … 43 39 44 40 /* 45 * kernel.h ÌvZbT˶iRX630pj41 * kernel.hのプロセッサ依存部(RX630用) 46 42 * 47 * ±ÌCN[ht@CÍCtarget_kernel.hiܽÍC»±©çCN48 * [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç49 * ¼ÚCN[hµÄÍÈçÈ¢D43 * このインクルードファイルは,target_kernel.h(または,そこからインク 44 * ルードされるファイル)のみからインクルードされる.他のファイルから 45 * 直接インクルードしてはならない. 50 46 */ 51 47 … … 54 50 55 51 /* 56 * J[l{ÌðRpC·é½ßÌ}Nè`52 * カーネル本体をコンパイルするためのマクロ定義 57 53 * 58 * {«ÅÍ1Öð1IuWFNgt@CÉRpC·é±ÆªÅ«È¢½ßC59 * ALLFUNC }Nðè`·éD54 * 本環境では1関数を1オブジェクトファイルにコンパイルすることができないため, 55 * ALLFUNCマクロを定義する. 60 56 */ 61 57 #define ALLFUNC … … 63 59 64 60 /* 65 * T|[g·é@\Ìè`61 * サポートする機能の定義 66 62 */ 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をサポートする */ 69 65 70 66 71 67 /* 72 * J[lÇÌÝDæxÌÍÍ68 * カーネル管理の割込み優先度の範囲 73 69 * 74 * TMIN_INTPRI Ìè`ðÏX·é±ÆÅCÇÌxæèà¢ÝDæx75 * ðÂàÌðJ[lÇOÌÝÆ·é©ðÏXÅ«éD70 * TMIN_INTPRIの定義を変更することで,どのレベルよりも高い割込み優先度 71 * を持つものをカーネル管理外の割込みとするかを変更できる. 76 72 * 77 * TMIN_INTPRI ÉÝèÅ«élÍC-15`-1ÌÍÍÅ éDá¦ÎTMIN_INTPRI78 * ð-14ÉÝè·éÆCNMIÉÁ¦Äx7ÌݪJ[lÇOÆÈéD79 * TMIN_INTPRI ð-15ÉÝè·éÆCNMIÈOÉJ[lÇOÌÝð80 * ݯȢ±ÆÉÈéD73 * TMIN_INTPRIに設定できる値は,-15〜-1の範囲である.例えばTMIN_INTPRI 74 * を-14に設定すると,NMIに加えてレベル7の割込みがカーネル管理外となる. 75 * TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを 76 * 設けないことになる. 81 77 */ 82 78 #ifndef TMIN_INTPRI 83 #define TMIN_INTPRI ( -15 ) /* ÝDæxÌŬliÅlj*/79 #define TMIN_INTPRI ( -15 ) /* 割込み優先度の最小値(最高値)*/ 84 80 #endif /* TMIN_INTPRI */ 85 #define TMAX_INTPRI ( -1 ) /* ÝDæxÌÅåliÅálj*/81 #define TMAX_INTPRI ( -1 ) /* 割込み優先度の最大値(最低値) */ 86 82 87 83 88 84 /* 89 * Ý®«Ìè`85 * 割込み属性の定義 90 86 */ 91 #define TA_POSEDGE TA_EDGE /* |WeBuGbWgK*/92 #define TA_NEGEDGE UINT_C( 0x04 ) /* lKeBuGbWgK*/93 #define TA_BOTHEDGE UINT_C( 0x08 ) /* ¼GbWgK*/87 #define TA_POSEDGE TA_EDGE /* ポジティブエッジトリガ */ 88 #define TA_NEGEDGE UINT_C( 0x04 ) /* ネガティブエッジトリガ */ 89 #define TA_BOTHEDGE UINT_C( 0x08 ) /* 両エッジトリガ */ 94 90 95 #define TA_LOWLEVEL UINT_C( 0x10 ) /* L x*/91 #define TA_LOWLEVEL UINT_C( 0x10 ) /* Lレベル */ 96 92 97 93 98 94 /* 99 * ftHgÌÝ/áOnhÌL³95 * デフォルトの割込み/例外ハンドラの有無 100 96 */ 101 97 /*#define OMIT_DEFAULT_INT_HANDLER*/ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_offset.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 1 1 $ 2 $ ItZbgt@C¶¬pev[gt@CiRX630pj2 $ オフセットファイル生成用テンプレートファイル(RX630用) 3 3 $ 4 4 5 5 $ 6 $ ItZbglÌ}Nè`̶¬6 $ オフセット値のマクロ定義の生成 7 7 $ 8 8 $DEFINE("TCB_p_tinib", offsetof_TCB_p_tinib)$ … … 15 15 16 16 $ 17 $ rbgItZbglÌ}Nè`̶¬17 $ ビットオフセット値等のマクロ定義の生成 18 18 $ 19 19 $DEFINE_BIT("TCB_enatex", sizeof_TCB, "B")$ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_rename.def
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
-
Property svn:mime-type
set to
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_rename.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
-
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_sil.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 5 5 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 6 6 * 7 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 8 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 9 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 10 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 11 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 12 * XR[hÉÜÜêÄ¢é±ÆD 13 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 14 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 15 gip 16 * Ò}j 17 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 18 * ̳ÛØKèðfÚ·é±ÆD 19 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 20 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 21 * ÆD 22 * (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌ 25 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 26 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 27 * ñ·é±ÆD 28 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 29 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 30 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 31 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 * 免責すること. 33 29 * 34 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨35 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI36 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF37 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»38 * ÌÓCðíÈ¢D30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 * の責任を負わない. 39 35 * 40 36 * @(#) $Id$ … … 42 38 43 39 /* 44 * sil.h ÌvZbT˶iRX630pj40 * sil.hのプロセッサ依存部(RX630用) 45 41 */ 46 42 … … 55 51 56 52 /* 57 * SÝÖ~53 * 全割込み禁止 58 54 */ 59 55 Inline uint32_t … … 70 66 71 67 /* 72 * SÝÂ68 * 全割込み許可 73 69 */ 74 70 Inline void … … 82 78 83 79 /* 84 * SÝbNóÔ̧ä80 * 全割込みロック状態の制御 85 81 */ 86 82 #define SIL_PRE_LOC uint32_t TOPPERS_i_psw; … … 90 86 91 87 /* 92 * GfBA̽]88 * エンディアンの反転 93 89 * 94 * {J«ÅÍGfBAÏ·½ßª¶Ý·é½ß,95 * A[LeN`˶ÉÄ}Nðã«·é.90 * 本開発環境ではエンディアン変換命令が存在するため, 91 * アーキテクチャ依存部にてマクロを上書きする. 96 92 */ 97 93 #define TOPPERS_SIL_REV_ENDIAN_UINT16( data ) \ … … 102 98 103 99 /* 104 * ÷ÔÒ¿100 * 微少時間待ち 105 101 */ 106 102 extern void sil_dly_nse( ulong_t dlytim ); … … 110 106 111 107 /* 112 * vZbTÌGfBA108 * プロセッサのエンディアン 113 109 */ 114 110 #ifdef __LIT 115 #define SIL_ENDIAN_LITTLE /* gGfBA*/111 #define SIL_ENDIAN_LITTLE /* リトルエンディアン */ 116 112 #endif 117 113 #ifdef __BIG 118 #define SIL_ENDIAN_BIG /* rbOGfBA*/114 #define SIL_ENDIAN_BIG /* ビッグエンディアン */ 119 115 #endif 120 116 121 117 122 118 /* 123 * 8 rbgPÊÌÇoµ^Ý119 * 8ビット単位の読出し/書込み 124 120 */ 125 121 #ifdef UINT8_MAX … … 145 141 146 142 /* 147 * 16 rbgPÊÌÇoµ^Ý143 * 16ビット単位の読出し/書込み 148 144 */ 149 145 … … 165 161 } 166 162 167 #ifdef SIL_ENDIAN_BIG /* rbOGfBAvZbT*/163 #ifdef SIL_ENDIAN_BIG /* ビッグエンディアンプロセッサ */ 168 164 169 165 #define sil_reh_bem(mem) sil_reh_mem(mem) … … 194 190 #endif /* TOPPERS_OMIT_SIL_WRH_LEM */ 195 191 #else /* SIL_ENDIAN_BIG */ 196 #ifdef SIL_ENDIAN_LITTLE /* gGfBAvZbT*/192 #ifdef SIL_ENDIAN_LITTLE /* リトルエンディアンプロセッサ */ 197 193 198 194 #define sil_reh_lem(mem) sil_reh_mem(mem) … … 230 226 231 227 /* 232 * 32 rbgPÊÌÇoµ^Ý228 * 32ビット単位の読出し/書込み 233 229 */ 234 230 … … 250 246 } 251 247 252 #ifdef SIL_ENDIAN_BIG /* rbOGfBAvZbT*/248 #ifdef SIL_ENDIAN_BIG /* ビッグエンディアンプロセッサ */ 253 249 254 250 #define sil_rew_bem(mem) sil_rew_mem(mem) … … 278 274 279 275 #endif /* TOPPERS_OMIT_SIL_WRW_LEM */ 280 #else /* SIL_ENDIAN_BIG */ /* gGfBAvZbT*/276 #else /* SIL_ENDIAN_BIG */ /* リトルエンディアンプロセッサ */ 281 277 282 278 #define sil_rew_lem(mem) sil_rew_mem(mem) -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_stddef.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 5 5 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 6 6 * 7 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 8 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 9 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 10 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 11 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 12 * XR[hÉÜÜêÄ¢é±ÆD 13 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 14 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 15 gip 16 * Ò}j 17 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 18 * ̳ÛØKèðfÚ·é±ÆD 19 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 20 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 21 * ÆD 22 * (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌ 25 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 26 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 27 * ñ·é±ÆD 28 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 29 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 30 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 31 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 * 免責すること. 33 29 * 34 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨35 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI36 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF37 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»38 * ÌÓCðíÈ¢D30 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 * の責任を負わない. 39 35 * 40 36 * @(#) $Id$ … … 42 38 43 39 /* 44 * t_stddef.h ÌvZbT˶iRX630pj40 * t_stddef.hのプロセッサ依存部(RX630用) 45 41 * 46 * ±ÌCN[ht@CÍCtarget_stddef.hiܽÍC»±©çCN47 * [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç48 * ¼ÚCN[hµÄÍÈçÈ¢D42 * このインクルードファイルは,target_stddef.h(または,そこからインク 43 * ルードされるファイル)のみからインクルードされる.他のファイルから 44 * 直接インクルードしてはならない. 49 45 */ 50 46 … … 53 49 54 50 /* 55 * ^[Qbgð¯Ê·é½ßÌ}NÌè`51 * ターゲットを識別するためのマクロの定義 56 52 */ 57 #define TOPPERS_RX630 /* vZbTªÌ*/53 #define TOPPERS_RX630 /* プロセッサ略称 */ 58 54 59 55 #endif /* TOPPERS_PRC_STDDEF_H */ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_support.src
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
r164 r167 11 11 ; Copyright (C) 2013 by Mitsuhiro Matsuura 12 12 ; 13 ; ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 14 ; Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 15 ; ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 16 ; (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 17 ; \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 18 ; XR[hÉÜÜêÄ¢é±ÆD 19 ; (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 20 ; pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 21 gip 22 ; Ò}j 23 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 24 ; ̳ÛØKèðfÚ·é±ÆD 25 ; (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 26 ; pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 27 ; ÆD 28 ; (a) Äzzɺ¤hL 29 gipÒ}j 30 AÈÇjÉCãLÌ 31 ; ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 32 ; (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 33 ; ñ·é±ÆD 34 ; (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 35 ; Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 36 ; ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 37 ; RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 ; 免責すること. 39 35 ; 40 ; {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨41 ; æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI42 ; ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF43 ; AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»44 ; ÌÓCðíÈ¢D36 ; 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 ; よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 ; に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 ; アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 ; の責任を負わない. 45 41 ; 46 42 ; @(#) $Id: prc_support.src 536 2014-10-09 23:11:40Z coas-nagasima $ … … 48 44 49 45 ; 50 ; vZbT˶W 51 [ AZu¾êiRX630pj 52 ; 53 54 ; 55 ; fBXpb`¨æÑÝ(CPUáO)oüèûÌ[: 56 ; ®ì[hðȺÌæ¤Éè`·é. 57 ; fBXpb`[h: 58 ; CPUbNóÔ, ÝDæx}XNSðóÔ, 59 ; ^XNReLXg(intnest = 0), ^XNX^bN 60 ; Ý(CPUáO)[h 61 ; SÝbNóÔ(PSWWX^Irbg = 0), 62 ; ÝDæx}XNSðÅÈ¢óÔ(IPL != 0) 63 ; ÝReLXg(intnest != 0), ÝX^bN 64 ; 65 ; J[lÇOÝÌT|[gL³Æ, CPUbNóÔ, ÝDæx 66 ; }XNSðóÔÌÖWÍȺÌÊèÅ é. 67 ; J[lÇOÝ¢T|[g: 68 ; CPUbNóÔ(PSWWX^Irbg = 0) 69 ; ÝDæx}XNSðóÔ(IPL = 0) 70 ; J[lÇOÝT|[g: 71 ; CPUbNóÔ 72 ; (PSWWX^Irbg = 0, IPL = IPL_LOCK, lock_flag = true) 73 ; ÝDæx}XNSðóÔ(saved_ipl = 0) 74 ; 75 ; e\¢Ì|C^ðȺÌæ¤ÉeWX^ÉATC·é. 76 ; r15 = p_runtsk ½¾µfBXpb`ÌeoûÅͳø 77 ; r14 = *p_runtsk dispatcher ÌÅÍ p_runtsk mèÉÄæ¾·é 78 ; eüèû©çÅÉÏANZX·éÆ«ÉãLWX^ÉÛ¶·é. 79 ; 80 ; \¢ÌACgÖÌÎ 81 ; \¢ÌACgª4Byte(ApbN)Ìê: 82 ; êÊIÈWX^ÎAhbVOªÂ\ 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 84 79 ; mov.l r0, TCB_sp[r15] 85 ; \¢ÌACgª4ByteÅÍÈ¢(pbN)Ìê:86 ; mov.l Ìæ¤ÉOTCYwèÌêAÎlÍ4Ì{ÌÝLø87 ; ±Ì½ß, êxÎÛAhXðßÄ©çANZX·éKvª é88 ; á: mov.l #__kernel_p_runtsk, r1580 ; 構造体アライメントが4Byteではない(パック)の場合: 81 ; mov.lのようにロングサイズ指定の場合、相対値は4の倍数のみ有効 82 ; このため, 一度対象アドレスを求めてからアクセスする必要がある 83 ; 例: mov.l #__kernel_p_runtsk, r15 89 84 ; add #TCB_sp, r15, r5 90 85 ; mov.l r0, [r5] 91 ; eItZbglð»fµ, ðAZuÉæèR[hðØèÖ¦é92 ; 93 94 ; 95 ; \¢ÌANZXÌItZbgè`86 ; 各オフセット値を判断し, 条件アセンブルによりコードを切り替える 87 ; 88 89 ; 90 ; 構造体アクセスのオフセット定義 96 91 ; 97 92 .include offset.inc 98 93 99 94 ; 100 ; eíEQUè`(Ht@CÌ#defineè`)95 ; 各種EQU定義(Hファイルの#define定義) 101 96 ; 102 97 .include asm_config.inc … … 150 145 151 146 ; 152 ; TCB_sp ÖÌÝ}N147 ; TCB_sp への書込みマクロ 153 148 ; 154 149 st_TCB_sp .macro src, tcb, tmp … … 162 157 163 158 ; 164 ; TCB_sp ©çÌÇoµ}N159 ; TCB_sp からの読出しマクロ 165 160 ; 166 161 ld_TCB_sp .macro dst, tcb, tmp … … 174 169 175 170 ; 176 ; TCB_pc ÖÌÝ}N171 ; TCB_pc への書込みマクロ 177 172 ; 178 173 st_TCB_pc .macro src, tcb, tmp … … 186 181 187 182 ; 188 ; TCB_pc ©çÌÇoµ}N183 ; TCB_pc からの読出しマクロ 189 184 ; 190 185 ld_TCB_pc .macro dst, tcb, tmp … … 198 193 199 194 ; 200 ; TCB_texptn ©çÌÇoµ}N195 ; TCB_texptn からの読出しマクロ 201 196 ; 202 197 ld_TCB_texptn .macro dst, tcb, tmp … … 210 205 211 206 ; 212 ; TCB_p_tinib ©çÌÇoµ}N207 ; TCB_p_tinib からの読出しマクロ 213 208 ; 214 209 ld_TCB_p_tinib .macro dst, tcb, tmp … … 222 217 223 218 ; 224 ; TINIB_exinf ©çÌÇoµ}N219 ; TINIB_exinf からの読出しマクロ 225 220 ; 226 221 ld_TINIB_exinf .macro dst, tinib, tmp … … 234 229 235 230 ; 236 ; TINIB_task ©çÌÇoµ}N231 ; TINIB_task からの読出しマクロ 237 232 ; 238 233 ld_TINIB_task .macro dst, tinib, tmp … … 249 244 250 245 ; 251 ; API ©çÌ^XNfBXpb`üû252 ; 253 ; ÄÑoµð:254 ; EfBXpb`[h(t@Cwb_QÆ)255 ; 256 ; ±±ÅÍ, ReLXgÌÞðÆ, ÀsÄJÔnÌÝèð·é.246 ; APIからのタスクディスパッチャ入口 247 ; 248 ; 呼び出し条件: 249 ; ・ディスパッチャモード(ファイルヘッダ参照) 250 ; 251 ; ここでは, コンテキストの退避と, 実行再開番地の設定をする. 257 252 ; 258 253 __kernel_dispatch: 259 pushm r6-r13 ; ñXNb`WX^Û¶254 pushm r6-r13 ; 非スクラッチレジスタ保存 260 255 mov.l #__kernel_p_runtsk, r15 261 256 mov.l [r15], r14 262 st_TCB_sp r0, r14, r5 ; X^bN|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に保存 264 259 bra dispatcher 265 260 266 261 ; 267 ; API ÖÌ^XNfBXpb`oû268 ; 269 ; ÄÑoµð:270 ; EfBXpb`[h(t@Cwb_QÆ)271 ; 272 ; ±±ÅÍ, ^XNáOnhÄoµÆ, ReLXgÌAð·é.262 ; APIへのタスクディスパッチャ出口 263 ; 264 ; 呼び出し条件: 265 ; ・ディスパッチャモード(ファイルヘッダ参照) 266 ; 267 ; ここでは, タスク例外ハンドラ呼出しと, コンテキストの復帰をする. 273 268 ; 274 269 dispatch_r: 275 btst #TCB_enatex_bit, TCB_enatex[r14] ; ^XNáOÂ?270 btst #TCB_enatex_bit, TCB_enatex[r14] ; タスク例外処理許可? 276 271 bz dispatch_r_rts 277 ld_TCB_texptn r5, r14, r4 ; Û¯áOvöª é©H272 ld_TCB_texptn r5, r14, r4 ; 保留例外要因があるか? 278 273 cmp #0, r5 279 274 bz dispatch_r_rts 280 bsr __kernel_call_texrtn ; ^XNáOnhÄoµÀs275 bsr __kernel_call_texrtn ; タスク例外ハンドラ呼出し処理実行 281 276 dispatch_r_rts: 282 popm r6-r13 ; ñXNb`WX^A283 rts ; dispatch ÄÑoµ³Ößé.284 285 ; 286 ; ^XNN®(^XNæªÖÌ^XNfBXpb`oû)287 ; 288 ; ÄÑoµð:289 ; EfBXpb`[h(t@Cwb_QÆ)290 ; 291 ; ±±ÅÍ, CPUbNðóÔɵ, ^XNðN®·é.277 popm r6-r13 ; 非スクラッチレジスタ復帰 278 rts ; dispatch 呼び出し元へ戻る. 279 280 ; 281 ; タスク起動処理(タスク先頭へのタスクディスパッチャ出口) 282 ; 283 ; 呼び出し条件: 284 ; ・ディスパッチャモード(ファイルヘッダ参照) 285 ; 286 ; ここでは, CPUロック解除状態にし, タスクを起動する. 292 287 ; 293 288 __kernel_start_r: 294 289 mov.l #_ext_tsk, r5 295 push.l r5 ; ßèÔnðX^bNÉÏÞ290 push.l r5 ; 戻り番地をスタックに積む 296 291 ld_TCB_p_tinib r5, r14, r4 297 ld_TINIB_exinf r1, r5, r4 ; g£îñðæêøÉÝè298 ld_TINIB_task r5, r5, r4 ; ^XNÌN®Ônðæ¾292 ld_TINIB_exinf r1, r5, r4 ; 拡張情報を第一引数に設定 293 ld_TINIB_task r5, r5, r4 ; タスクの起動番地を取得 299 294 .if TIPM_LOCK == -15 300 setpsw i ; ÝÂ(CPUbNðóÔ)301 .else 302 mov.l #__kernel_lock_flag, r4 ; CPU bNðóÔÖ303 mov.l #0, [r4] ; ±±ÉéÆ«ÍK¸ saved_ipl Ì304 mvtc #00010000H, psw ; lÍ 0 ̽ß, ¼lðÝè·é.305 ; SÝbNðóÔ( I = 1 )306 ; ÝDæx}XNSðóÔ( 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 ) 307 302 .endif 308 303 jmp r5 309 304 310 305 ; 311 ; J[lN®©çÌ^XNfBXpb`üû312 ; 313 ; ±Ì[`ÍCJ[lN®ÉC·×ÄÌÝðÖ~µ½óÔ314 ; iÝbNóÔƯjÅÄÑo³êéDܽCÝ[hiñ315 ; ^XNReLXgƯjÅÄÑo³êé±ÆðzèµÄ¢éD316 ; 317 ; ÄÑoµð:318 ; EÝ(CPUáO)[h(t@Cwb_QÆ)319 ; 320 ; ±±ÅÍ, fBXpb`[hÉÏX·é.306 ; カーネル起動からのタスクディスパッチャ入口 307 ; 308 ; このルーチンは,カーネル起動時に,すべての割込みを禁止した状態 309 ; (割込みロック状態と同等)で呼び出される.また,割込みモード(非 310 ; タスクコンテキストと同等)で呼び出されることを想定している. 311 ; 312 ; 呼び出し条件: 313 ; ・割込み(CPU例外)処理モード(ファイルヘッダ参照) 314 ; 315 ; ここでは, ディスパッチャモードに変更する. 321 316 ; 322 317 __kernel_start_dispatch: 323 318 mov.l #__kernel_intnest, r5 324 mov.w #0, [r5] ; ^XNReLXgÉØ·¦319 mov.w #0, [r5] ; タスクコンテキストに切換え 325 320 .if TIPM_LOCK != -15 326 mvtc #(IPL_LOCK | 00010000H), psw ; SÝbNðóÔ327 ; ÝDæx}XNSðÅÈ¢óÔ328 .endif 329 330 ; 331 ; ^XNI¹(»ÝÌReLXgðÌÄé)©çÌ^XNfBXpb`üû332 ; 333 ; ÄÑoµð:334 ; EfBXpb`[h(t@Cwb_QÆ)335 ; 336 ; ±±ÅÍ, ½à·é±ÆÍÈ¢.337 ; Ȩ, p_runtsk ÌAhXæ¾¾¯ÍsȤ.321 mvtc #(IPL_LOCK | 00010000H), psw ; 全割込みロック解除状態 322 ; 割込み優先度マスク全解除でない状態 323 .endif 324 325 ; 326 ; タスク終了(現在のコンテキストを捨てる)からのタスクディスパッチャ入口 327 ; 328 ; 呼び出し条件: 329 ; ・ディスパッチャモード(ファイルヘッダ参照) 330 ; 331 ; ここでは, 何もすることはない. 332 ; なお, p_runtsk のアドレス取得だけは行なう. 338 333 ; 339 334 __exit_and_dispatch: … … 341 336 342 337 ; 343 ; fBXpb`{Ì344 ; 345 ; ÄÑoµð:346 ; E·×ÄÌ^XNÌReLXgÍÛ¶³êÄ¢é.347 ; 348 ; dispatcher ÄoÌX^bN:349 ; E__kernel_dispatch ©ç«½ê : ^XNX^bN350 ; Eexit_and_dispatch ©ç«½ê:351 ; exit_task ©ç«½ê : ^XNX^bN352 ; J[lN®(__kernel_start_dispatch) : ÝX^bN353 ; Eret_int ©ç«½ê : ^XNX^bN354 ; Edispatcher_idle_loop ©ç«½ê : ÝX^bN338 ; ディスパッチャ本体 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 からきた場合 : 割込みスタック 355 350 ; 356 351 dispatcher: 357 352 .if LOG_DSP_ENTER == 1 358 353 push.l r15 359 mov.l r14, r1 ; ø(fBXpb`³TCB)ðÝè354 mov.l r14, r1 ; 引数(ディスパッチ元TCB)を設定 360 355 bsr _kernel_log_dsp_enter 361 356 pop.l r15 362 357 .endif 363 358 mov.l #__kernel_p_schedtsk, r5 364 mov.l [r5], [r15] ; p_schedtsk ð p_runtsk É359 mov.l [r5], [r15] ; p_schedtsk を p_runtsk に 365 360 mov.l [r15], r14 366 361 cmp #0, r14 367 bz dispatcher_pre_idle ; schedtsk ªÈ¯êÎACh[vÖ368 ld_TCB_sp r0, r14, r5 ; ^XNX^bN|C^ðA362 bz dispatcher_pre_idle ; schedtsk がなければアイドルループへ 363 ld_TCB_sp r0, r14, r5 ; タスクスタックポインタを復帰 369 364 .if LOG_DSP_LEAVE == 1 370 365 push.l r14 371 mov.l r14, r1 ; ø(fBXpb`æTCB)ðÝè366 mov.l r14, r1 ; 引数(ディスパッチ先TCB)を設定 372 367 bsr _kernel_log_dsp_leave 373 368 pop.l r14 374 369 .endif 375 370 ld_TCB_pc r5, r14, r4 376 jmp r5 ; ÀsÄJÔnÖWv377 378 ; 379 ; schdedtsk ªNULLÌêÍACh[vÉüé380 ; ACh[vÍÝ[hŮ쳹é381 ; 382 ; ±±ÅÝ[hÉØè·¦éÌÍC±±Å¶·éÝÉ383 ; ÇÌX^bNðg¤©Æ¢¤âèÌðÆCÝnhàÅÌ^384 ; XNfBXpb`Ìh~Æ¢¤2ÂÌÓ¡ª éD371 jmp r5 ; 実行再開番地へジャンプ 372 373 ; 374 ; schdedtskがNULLの場合はアイドルループに入る 375 ; アイドルループは割込み処理モードで動作させる 376 ; 377 ; ここで割込みモードに切り換えるのは,ここで発生する割込み処理に 378 ; どのスタックを使うかという問題の解決と,割込みハンドラ内でのタ 379 ; スクディスパッチの防止という2つの意味がある. 385 380 ; 386 381 dispatcher_pre_idle: 387 382 mov.l #__kernel_istkpt,r5 388 mov.l [r5], r0 ; ÝpÌX^bNÖØÖ¦389 mov.l #__kernel_intnest, r5 390 mov.w #1, [r5] ; ñ^XNReLXgÉØ·¦383 mov.l [r5], r0 ; 割込み用のスタックへ切替え 384 mov.l #__kernel_intnest, r5 385 mov.w #1, [r5] ; 非タスクコンテキストに切換え 391 386 .if TIPM_LOCK != -15 392 mov.l #__kernel_lock_flag, r5 ; CPU bNðóÔÖ387 mov.l #__kernel_lock_flag, r5 ; CPUロック解除状態へ 393 388 mov.l #0, [r5] 394 mvtc #0, psw ; Dæx0ÌÝðU389 mvtc #0, psw ; 優先度0の割込み処理中を偽装 395 390 .endif 396 391 397 392 dispatcher_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 なら 402 397 mov.l [r5], r4 403 398 cmp #0, r4 404 bz dispatcher_idle_loop ; ACh[vðJèÔ·405 mov.l #0, [r5] ; reqflg ªtrueÈçfalseÉ·é406 mov.l #__kernel_intnest, r5 407 mov.w #0, [r5] ; ^XNReLXgÉØ·¦399 bz dispatcher_idle_loop ; アイドルループを繰り返す 400 mov.l #0, [r5] ; reqflgがtrueならfalseにする 401 mov.l #__kernel_intnest, r5 402 mov.w #0, [r5] ; タスクコンテキストに切換え 408 403 .if TIPM_LOCK != -15 409 mov.l #__kernel_lock_flag, r5 ; CPU bNóÔÖ404 mov.l #__kernel_lock_flag, r5 ; CPUロック状態へ 410 405 mov.l #1, [r5] 411 406 mov.l #__kernel_saved_ipl, r5 412 407 mov.l #0, [r5] 413 mvtc #(IPL_LOCK | PSW_I_MASK), psw ; SÝbNðóÔ414 ; ÝDæx}XNSðÅÈ¢óÔ415 .endif 416 bra dispatcher ; dispatcher Ößé417 418 419 ; 420 ; J[lÌI¹ÌÄoµ421 ; 422 ; [hÆX^bNðñ^XNReLXgpÉØèÖ¦D408 mvtc #(IPL_LOCK | PSW_I_MASK), psw ; 全割込みロック解除状態 409 ; 割込み優先度マスク全解除でない状態 410 .endif 411 bra dispatcher ; dispatcher へ戻る 412 413 414 ; 415 ; カーネルの終了処理の呼出し 416 ; 417 ; モードとスタックを非タスクコンテキスト用に切り替え. 423 418 ; 424 419 .glb __kernel_call_exit_kernel 425 420 __kernel_call_exit_kernel: 426 421 .if TIPM_LOCK != -15 427 clrpsw i ; SÝÖ~428 mov.l #__kernel_lock_flag, r5 ; CPU bNðóÔÖ422 clrpsw i ; 全割込み禁止 423 mov.l #__kernel_lock_flag, r5 ; CPUロック解除状態へ 429 424 mov.l #0, [r5] 430 425 .endif 431 426 mov.l #__kernel_istkpt, r5 432 mov.l [r5], r0 ; ÝpÌX^bNÖØÖ¦433 mov.l #__kernel_intnest, r5 434 mov.w #1, [r5] ; ñ^XNReLXgÉØ·¦427 mov.l [r5], r0 ; 割込み用のスタックへ切替え 428 mov.l #__kernel_intnest, r5 429 mov.w #1, [r5] ; 非タスクコンテキストに切換え 435 430 bsr __kernel_exit_kernel 436 431 bra __kernel_call_exit_kernel … … 438 433 439 434 ; 440 ; Ý(CPUáO)©çÌ^XNfBXpb`üû441 ; 442 ; Äoµð:443 ; ESÝbNóÔ(PSWWX^Irbg= 0)444 ; EÝDæx}XNSðÅÈ¢óÔ(IPL != 0)445 ; E^XNReLXg(intnest=0)446 ; EgpX^bNÍ^XNX^bN447 ; Ereqflg = true448 ; 449 ; ±±ÅÍ, fBXpb`[hÉÏXµ, reqflgðOFFɵĩç,450 ; xfBXpb`ÌL³ð»f·é.451 ; 452 453 ; 454 ; ret_int æªÅX^bNÉÏÜêÄ¢éPSWWX^ÖÌItZbg435 ; 割込み(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レジスタへのオフセット 455 450 ; ACC + FPSW + R14--R15 + R1--R5 + PC 456 451 ; … … 459 454 ret_int: 460 455 .if TIPM_LOCK == -15 461 mov.l RET_INT_GET_PSW_OFFSET[r0], r5 ; Ý/CPUáO¶OÌIPLlæ¾456 mov.l RET_INT_GET_PSW_OFFSET[r0], r5 ; 割込み/CPU例外発生前のIPL値取得 462 457 and #PSW_IPL_MASK, r5 463 mvtc r5, psw ; SÝbN(CPUbN)óÔ464 ; Ý/CPUáO¶OÌÝDæx465 .else 466 mov.l #__kernel_lock_flag, r5 ; CPU bNóÔÖ458 mvtc r5, psw ; 全割込みロック(CPUロック)状態 459 ; 割込み/CPU例外発生前の割込み優先度 460 .else 461 mov.l #__kernel_lock_flag, r5 ; CPUロック状態へ 467 462 mov.l #1, [r5] 468 mov.l RET_INT_GET_PSW_OFFSET[r0], r5 ; Ý/CPUáO¶OÌIPLlæ¾463 mov.l RET_INT_GET_PSW_OFFSET[r0], r5 ; 割込み/CPU例外発生前のIPL値取得 469 464 and #PSW_IPL_MASK, r5 470 465 mov.l #__kernel_saved_ipl, r4 471 466 mov.l r5, [r4] 472 mvtc #(IPL_LOCK | PSW_I_MASK), psw ; SÝbNðóÔ473 ; ÝDæx}XNSðÅÈ¢óÔ467 mvtc #(IPL_LOCK | PSW_I_MASK), psw ; 全割込みロック解除状態 468 ; 割込み優先度マスク全解除でない状態 474 469 .endif 475 470 mov.l #__kernel_reqflg, r5 … … 477 472 mov.l #__kernel_p_runtsk, r15 478 473 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 へ 480 475 mov.l [r5], r5 481 476 cmp #0, r5 … … 483 478 mov.l #__kernel_p_schedtsk, r5 484 479 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 ; ñXNb`WX^Û¶488 st_TCB_sp r0, r14, r5 ; X^bN|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に保存 490 485 bra dispatcher 491 486 492 487 ; 493 ; Ý(CPUáO)ÖÌ^XNfBXpb`oû494 ; 495 ; ÄÑoµð:496 ; EfBXpb`[h(t@Cwb_QÆ)497 ; 498 ; ±±ÅÍ, ^XNáOnhÄoµÆ, Ý(CPUáO)[hÖÌ499 ; ÏXÆ, ReLXgÌAðs¢, Ý(CUPáO)¶³Ößé.500 ; 501 __kernel_break_wait: ; ^XNj^px488 ; 割込み(CPU例外)へのタスクディスパッチャ出口 489 ; 490 ; 呼び出し条件: 491 ; ・ディスパッチャモード(ファイルヘッダ参照) 492 ; 493 ; ここでは, タスク例外ハンドラ呼出しと, 割込み(CPU例外)処理モードへの 494 ; 変更と, コンテキストの復帰を行い, 割込み(CUP例外)発生元へ戻る. 495 ; 496 __kernel_break_wait: ;タスクモニタ用ラベル 502 497 ret_int_r: 503 popm r6-r13 ; ñXNb`WX^A498 popm r6-r13 ; 非スクラッチレジスタ復帰 504 499 ret_int_r_call_tex: 505 btst #TCB_enatex_bit, TCB_enatex[r14] ; ^XNáOÂ?500 btst #TCB_enatex_bit, TCB_enatex[r14] ; タスク例外処理許可? 506 501 bz ret_int_r_rte 507 ld_TCB_texptn r5, r14, r4 ; Û¯áOvöª é©H502 ld_TCB_texptn r5, r14, r4 ; 保留例外要因があるか? 508 503 cmp #0, r5 509 504 bz ret_int_r_rte 510 bsr __kernel_call_texrtn ; ^XNáOnhÄoµÀs505 bsr __kernel_call_texrtn ; タスク例外ハンドラ呼出し処理実行 511 506 ret_int_r_rte: 512 507 .if TIPM_LOCK != -15 513 clrpsw i ; SÝÖ~514 mov.l #__kernel_lock_flag, r5 ; CPU bNðóÔÖ508 clrpsw i ; 全割込み禁止 509 mov.l #__kernel_lock_flag, r5 ; CPUロック解除状態へ 515 510 mov.l #0, [r5] 516 511 .endif 517 popm r4-r5 ; AL 518 [^A 519 mvtaclo r5 ; ACCźÊ16bitÍ0ÅA 512 popm r4-r5 ; アキュムレータ復帰 513 mvtaclo r5 ; ACC最下位16bitは0で復帰 520 514 mvtachi r4 521 popc fpsw ; FPU Xe[^XWX^A522 popm r14-r15 ; WX^A515 popc fpsw ; FPUステータスレジスタ復帰 516 popm r14-r15 ; レジスタ復帰 523 517 popm r1-r5 524 rte ; ÝOÌÉßé525 526 527 ; 528 ; ÝÌoüû(AZu¾êLqª)529 ; 530 ; Äoµð:531 ; EݶÌH/WÉæè, PSWWX^ÌIrbg=0, IPLÍót¯532 ; ½ÝÌIPL.533 ; EX^bNͽdèÝÈçÝX^bN, »¤ÅȯêÎ534 ; ^XNX^bN535 ; EݶÌH/WÉæè,X^bNÉÝ©çÌAPCÆPSWª536 ; Û¶³êÄ¢é.537 ; ExN^e[uÉo^³ê½ÂÊÌüèûÉæè, X^bNÉ538 ; XNb`WX^(R1-R5)ªÛ¶³êÄ¢é.539 ; 540 ; ø:541 ; Er1:ÝvöÔ542 ; Er2:ÝnhÌAhX543 ; 544 ; WX^ªX^bNãÉÇÌæ¤ÉÛ¶³êÄ¢é©ðȺɦ·.545 ; ±Ì}ÅÍãªáÊ, ºªÊÌAhXÅ, X^bNͺ©ç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 ; 上方向に向かって積み上げられるものとする. 547 541 ; 548 542 ; ------------------------- … … 572 566 ; -------------------------(SP + 44) 573 567 ; 574 ; ±±ÅÍ, Ý[hÉÏXµÄnhðÀs·é.575 ; 576 ; nh©ç^[µ½ãÍ, ½dÝÅÈ, ©Â reqflg ª577 ; TRUE ÉÈÁ½ÉCret_int Öªò(xfBXpb`)·éD578 ; 579 ; ½dݩǤ©ÍÝlXgJE^ÌlÅ»è·é.580 ; intnest != 0 ÈçνdÝÅ éÆ»è·é.581 ; 582 ; reqflg ÍCPUbNóÔÅ`FbN·é. »¤ÅÈ¢ÆC583 ; reqflg `FbNãÉN®³ê½ÝnhàÅ584 ; fBXpb`ªv³ê½êÉCfBXpb`³êÈ¢.568 ; ここでは, 割込み処理モードに変更してハンドラを実行する. 569 ; 570 ; ハンドラからリターンした後は, 多重割込みでなく, かつ reqflg が 571 ; TRUE になった時に,ret_int へ分岐(遅延ディスパッチ)する. 572 ; 573 ; 多重割込みかどうかは割込みネストカウンタの値で判定する. 574 ; intnest != 0 ならば多重割込みであると判定する. 575 ; 576 ; reqflg はCPUロック状態でチェックする. そうでないと, 577 ; reqflg チェック後に起動された割込みハンドラ内で 578 ; ディスパッチが要求された場合に,ディスパッチされない. 585 579 ; 586 580 _kernel_interrupt: 587 pushm r14-r15 ; XNb`WX^ðÞð588 pushc fpsw ; FPU Xe[^XWX^Þð581 pushm r14-r15 ; スクラッチレジスタを退避 582 pushc fpsw ; FPUステータスレジスタ退避 589 583 mvfacmi r5 590 shll #16, r5 ; ACC źÊ16bitÍ0Æ·é584 shll #16, r5 ; ACC最下位16bitは0とする 591 585 mvfachi r4 592 pushm r4-r5 ; AL 593 [^Þð 586 pushm r4-r5 ; アキュムレータ退避 594 587 mov.l #__kernel_intnest, r5 595 588 mov.w [r5], r4 596 add #1, r4 ; lXgñðCNg589 add #1, r4 ; ネスト回数をインクリメント 597 590 mov.w r4, [r5] 598 cmp #1, r4 ; ½dèݩǤ©599 bnz interrupt_from_int ; ÁZOª0ÅȯêνdÝ600 ; iÌÝ601 mov.l r0, r3 ; X^bN|C^ðæèoµ602 mov.l #__kernel_istkpt, r5 ; ÝpÌX^bNÖØÖ¦é591 cmp #1, r4 ; 多重割り込みかどうか 592 bnz interrupt_from_int ; 加算前が0でなければ多重割込み 593 ; 初段の割込み 594 mov.l r0, r3 ; スタックポインタを取り出し 595 mov.l #__kernel_istkpt, r5 ; 割込み用のスタックへ切替える 603 596 mov.l [r5], r0 604 push.l r3 ; ^XNX^bNðÛ605 interrupt_from_int: ; ½dÝ606 setpsw i ; ÝÂ(CPUbNðóÔ)597 push.l r3 ; タスクスタックを保持 598 interrupt_from_int: ; 多重割込み 599 setpsw i ; 割込み許可(CPUロック解除状態) 607 600 608 601 .if LOG_INH_LEAVE == 1 609 push.l r1 ; Og[XÌøðÛ602 push.l r1 ; ログトレースの引数を保持 610 603 .endif 611 604 612 605 .if LOG_INH_ENTER == 1 613 606 push.l r2 614 bsr _kernel_log_inh_enter ; Og[XÖÌÄoµ615 ; øÌÝvöÔÍùÉr1ÉüÁÄ¢é607 bsr _kernel_log_inh_enter ; ログトレース関数の呼出し 608 ; 引数の割込み要因番号は既にr1に入っている 616 609 pop r2 617 610 .endif 618 611 619 jsr r2 ; C [`ÄÑoµ612 jsr r2 ; Cルーチン呼び出し 620 613 621 614 .if LOG_INH_LEAVE == 1 622 pop r1 ; øÉÝvöÔðÝè623 bsr _kernel_log_inh_leave ; Og[XÖÌÄoµ624 .endif 625 626 clrpsw i ; ÝÖ~(CPUbNóÔ)615 pop r1 ; 引数に割込み要因番号を設定 616 bsr _kernel_log_inh_leave ; ログトレース関数の呼出し 617 .endif 618 619 clrpsw i ; 割込み禁止(CPUロック状態) 627 620 mov.l #__kernel_intnest, r5 628 621 mov.w [r5], r4 629 sub #1, r4 ; lXgñðfNg622 sub #1, r4 ; ネスト回数をデクリメント 630 623 mov.w r4, [r5] 631 cmp #0, r4 ; ½dèݩǤ©632 bnz interrupt_return ; ½dèÝÈç^[633 ; iÌÝ634 pop r0 ; ^XNÌX^bNÉß·635 mov.l #__kernel_reqflg, r5 ; fBXpb`vªÈ¢©?624 cmp #0, r4 ; 多重割り込みかどうか 625 bnz interrupt_return ; 多重割り込みならリターン 626 ; 初段の割込み 627 pop r0 ; タスクのスタックに戻す 628 mov.l #__kernel_reqflg, r5 ; ディスパッチ要求がないか? 636 629 mov.l [r5], r5 637 630 cmp #1, r5 638 bz ret_int ; êÎ ret_int ÖWv631 bz ret_int ; あれば ret_int へジャンプ 639 632 interrupt_return: 640 popm r4-r5 ; AL 641 [^A 642 mvtaclo r5 ; ACCźÊ16bitÍ0ÅA 633 popm r4-r5 ; アキュムレータ復帰 634 mvtaclo r5 ; ACC最下位16bitは0で復帰 643 635 mvtachi r4 644 popc fpsw ; FPU Xe[^XWX^A645 popm r14-r15 ; WX^A636 popc fpsw ; FPUステータスレジスタ復帰 637 popm r14-r15 ; レジスタ復帰 646 638 popm r1-r5 647 rte ; ÝOÌÉßé648 649 650 ; 651 ; CPU áOÌoüû(AZu¾êLqª)652 ; 653 ; Äoµð:654 ; ECPUáO¶ÌH/WÉæè, PSWWX^ÌIrbg=0, IPL=0.655 ; EX^bNͽdèÝÈçÝX^bN, »¤ÅȯêÎ656 ; ^XNX^bN657 ; ECPUáO¶ÌH/WÉæè,X^bNÉCPUáO©çÌAPCÆ658 ; PSW ªÛ¶³êÄ¢é.659 ; ExN^e[uÉo^³ê½ÂÊÌüèûÉæè, X^bNÉ660 ; XNb`WX^(R1-R5)ªÛ¶³êÄ¢é.661 ; 662 ; ø:663 ; Er1:CPUáOvöÔ664 ; Er2:CPUáOnhÌAhX665 ; 666 ; WX^ªX^bNãÉÇÌæ¤ÉÛ¶³êÄ¢é©ðȺɦ·.667 ; ±Ì}ÅÍãªáÊ, ºªÊÌAhXÅ, X^bNͺ©ç668 ; ãûüÉü©ÁÄÏÝã°çêéàÌÆ·é.669 ; Ȩ, CPUáOvöÔÆR6-R13ÍCPUáOnhàÅîñðæ¾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 ; する目的で退避しており, 出口処理では保存内容を破棄すればよい. 671 663 ; 672 664 ; ------------------------- 673 ; | CPU áOvöÔ| <----- p_excinf665 ; | CPU例外要因番号 | <----- p_excinf 674 666 ; ------------------------- (intptr_t)(p_excinf + 0) 675 667 ; | R6(4byte) | … … 714 706 ; ------------------------- (intptr_t)(p_excinf + 80) 715 707 ; 716 ; ±±ÅÍ, Ý[hÉÏXµÄnhðÀs·é.717 ; CPU áOnhÉn·VP^ÌÏ p_excinf ƵÄISPÌln·D718 ; 719 ; nh©ç^[µ½ãÍ, ½dÝÅÈ, ©Â reqflg ª720 ; TRUE ÉÈÁ½ÉCret_int Öªò(xfBXpb`)·éD721 ; 722 ; ½dݩǤ©ÍÝlXgJE^ÌlÅ»è·é.723 ; intnest != 0 ÈçνdÝÅ éÆ»è·é.724 ; 725 ; reqflg ÍCPUbNóÔÅ`FbN·é. »¤ÅÈ¢ÆC726 ; reqflg `FbNãÉN®³ê½ÝnhàÅ727 ; fBXpb`ªv³ê½êÉCfBXpb`³êÈ¢.728 ; 729 ; 730 ; CPU áOüû731 ; 732 ; ±±ÅÍ, Ý[hÉÏXµÄnhðÀs·é.733 ; 734 735 ; 736 ; CPU áOnhÄoµãÉsvÆÈéX^bNîñÌTCY708 ; ここでは, 割込み処理モードに変更してハンドラを実行する. 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例外ハンドラ呼出し後に不要となるスタック情報のサイズ 737 729 ; EXCNO + R6--R13 738 730 ; … … 740 732 741 733 _kernel_exception: 742 pushm r14-r15 ; XNb`WX^ðÞð734 pushm r14-r15 ; スクラッチレジスタを退避 743 735 pushc fpsw 744 736 mvfacmi r5 745 shll #16, r5 ; ACC źÊ16bitÍ0Æ·é737 shll #16, r5 ; ACC最下位16bitは0とする 746 738 mvfachi r4 747 pushm r4-r5 ; AL 748 [^Þð 749 pushm r6-r13 ; ñXNb`WX^Û¶ 750 push.l r1 ; CPUáOvöÔðÛ 751 mov.l r0, r3 ; X^bN|C^ðæèoµ 739 pushm r4-r5 ; アキュムレータ退避 740 pushm r6-r13 ; 非スクラッチレジスタ保存 741 push.l r1 ; CPU例外要因番号を保持 742 mov.l r0, r3 ; スタックポインタを取り出し 752 743 mov.l EXC_GET_PSW_OFFSET[r3], r5 753 744 and #PSW_I_MASK, r5 754 bz exception_nonkernel ; SÝÖ~(CPUbN)óÔÈçÇO745 bz exception_nonkernel ; 全割込み禁止(CPUロック)状態なら管理外 755 746 .if TIPM_LOCK != -15 756 747 mov.l EXC_GET_PSW_OFFSET[r3], r5 757 748 and #PSW_IPL_MASK, r5 758 749 cmp #IPL_LOCK, r5 759 bgt exception_nonkernel ; IPL ªCPUbNxÈãÈçÇO750 bgt exception_nonkernel ; IPLがCPUロックレベル以上なら管理外 760 751 .endif 761 752 mov.l #__kernel_intnest, r5 762 753 mov.w [r5], r4 763 add #1, r4 ; lXgñðCNg754 add #1, r4 ; ネスト回数をインクリメント 764 755 mov.w r4, [r5] 765 cmp #1, r4 ; ½dèݩǤ©766 bnz exception_from_int ; ÁZOª0ÅȯêνdÝ767 ; iÌÝ768 mov.l #__kernel_istkpt, r5 ; ÝpÌX^bNÖØÖ¦é756 cmp #1, r4 ; 多重割り込みかどうか 757 bnz exception_from_int ; 加算前が0でなければ多重割込み 758 ; 初段の割込み 759 mov.l #__kernel_istkpt, r5 ; 割込み用のスタックへ切替える 769 760 mov.l [r5], r0 770 push.l r3 ; ^XNX^bNðÛ771 exception_from_int: ; ½dÝ761 push.l r3 ; タスクスタックを保持 762 exception_from_int: ; 多重割込み 772 763 mov.l EXC_GET_PSW_OFFSET[r3], r5 773 mvtc r5, psw ; CPU áO¶OÌóÔÉß·764 mvtc r5, psw ; CPU例外発生前の状態に戻す 774 765 .if LOG_EXC_LEAVE == 1 775 push.l r1 ; Og[XÌøðÛ766 push.l r1 ; ログトレースの引数を保持 776 767 .endif 777 768 778 769 .if LOG_EXC_ENTER == 1 779 770 pushm r2-r3 780 bsr _kernel_log_exc_enter ; Og[XÖÌÄoµ781 ; øÌÝvöÔÍùÉr1ÉüÁÄ¢é771 bsr _kernel_log_exc_enter ; ログトレース関数の呼出し 772 ; 引数の割込み要因番号は既にr1に入っている 782 773 popm r2-r3 783 774 .endif 784 775 785 mov.l r3, r1 ; øÌp_excinfðÝè786 jsr r2 ; C [`ÄÑoµ776 mov.l r3, r1 ; 引数のp_excinfを設定 777 jsr r2 ; Cルーチン呼び出し 787 778 788 779 .if LOG_EXC_LEAVE == 1 789 pop r1 ; øÉÝvöÔðÝè790 bsr _kernel_log_exc_leave ; Og[XÖÌÄoµ791 .endif 792 793 clrpsw i ; ±±©çÍK¸ÝÖ~780 pop r1 ; 引数に割込み要因番号を設定 781 bsr _kernel_log_exc_leave ; ログトレース関数の呼出し 782 .endif 783 784 clrpsw i ; ここからは必ず割込み禁止 794 785 mov.l #__kernel_intnest, r5 795 786 mov.w [r5], r4 796 sub #1, r4 ; lXgñðfNg787 sub #1, r4 ; ネスト回数をデクリメント 797 788 mov.w r4, [r5] 798 cmp #0, r4 ; ½dèݩǤ©799 bnz exception_return ; ½dèÝÈç^[800 ; iÌÝ801 pop r0 ; ^XNÌX^bNÉß·802 mov.l #__kernel_reqflg, r5 ; fBXpb`vªÈ¢©?789 cmp #0, r4 ; 多重割り込みかどうか 790 bnz exception_return ; 多重割り込みならリターン 791 ; 初段の割込み 792 pop r0 ; タスクのスタックに戻す 793 mov.l #__kernel_reqflg, r5 ; ディスパッチ要求がないか? 803 794 mov.l [r5], r5 804 795 cmp #1, r5 805 bnz exception_return ; ȯêÎ^[806 add #EXCINF_REG_SIZE, r0 ; CPU áOîñÌjü807 bra ret_int ; êÎ ret_int ÖWv796 bnz exception_return ; なければリターン 797 add #EXCINF_REG_SIZE, r0 ; CPU例外情報の破棄 798 bra ret_int ; あれば ret_int へジャンプ 808 799 809 800 exception_nonkernel: 810 801 mov.l #__kernel_intnest, r5 811 802 mov.w [r5], r4 812 add #1, r4 ; lXgñðCNg803 add #1, r4 ; ネスト回数をインクリメント 813 804 mov.w r4, [r5] 814 cmp #1, r4 ; ½dèݩǤ©815 bnz exception_from_nonkernelint ; ÁZOª0ÅȯêνdÝ816 ; iÌÝ817 mov.l #__kernel_istkpt, r5 ; ÝpÌX^bNÖØÖ¦é805 cmp #1, r4 ; 多重割り込みかどうか 806 bnz exception_from_nonkernelint ; 加算前が0でなければ多重割込み 807 ; 初段の割込み 808 mov.l #__kernel_istkpt, r5 ; 割込み用のスタックへ切替える 818 809 mov.l [r5], r0 819 push.l r3 ; ^XNX^bNðÛ820 exception_from_nonkernelint: ; ½dÝ810 push.l r3 ; タスクスタックを保持 811 exception_from_nonkernelint: ; 多重割込み 821 812 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 ; ここからは必ず割込み禁止 828 819 mov.l #__kernel_intnest, r5 829 820 mov.w [r5], r4 830 sub #1, r4 ; lXgñðfNg821 sub #1, r4 ; ネスト回数をデクリメント 831 822 mov.w r4, [r5] 832 cmp #0, r4 ; ½dèݩǤ©833 bnz exception_return ; ½dèÝÈç^[834 ; iÌÝ835 pop r0 ; ^XNÌX^bNÉß·823 cmp #0, r4 ; 多重割り込みかどうか 824 bnz exception_return ; 多重割り込みならリターン 825 ; 初段の割込み 826 pop r0 ; タスクのスタックに戻す 836 827 837 828 exception_return: 838 add #EXCINF_REG_SIZE, r0 ; CPUáOîñÌjü 839 popm r4-r5 ; AL 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で復帰 842 832 mvtachi r4 843 popc fpsw ; FPU Xe[^XWX^A844 popm r14-r15 ; WX^A833 popc fpsw ; FPUステータスレジスタ復帰 834 popm r14-r15 ; レジスタ復帰 845 835 popm r1-r5 846 rte ; ÝOÌÉßé847 848 849 ; 850 ; ÷ÔÒ¿836 rte ; 割込み前の処理に戻る 837 838 839 ; 840 ; 微少時間待ち 851 841 ; 852 842 _sil_dly_nse: -
Property svn:mime-type
set to
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_syssvc.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 7 7 * Copyright (C) 2013 by Mitsuhiro Matsuura 8 8 * 9 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 * ÆD 24 * (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 * ñ·é±ÆD 30 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 * ÆÓ·é±ÆD 9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 35 31 * 36 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨37 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI38 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF39 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»40 * ÌÓCðíÈ¢D32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 41 37 * 42 38 * @(#) $Id$ … … 44 40 45 41 /* 46 * eXgvOÌ^[Qbg˶è`iRX630pj42 * テストプログラムのターゲット依存定義(RX630用) 47 43 */ 48 44 … … 51 47 52 48 /* 53 * N®bZ[WÉ^[Qbg˶Ìì \¦ð54 * ÇÁ·é½ßÌ}ND49 * 起動メッセージにターゲット依存部の著作権表示を 50 * 追加するためのマクロ. 55 51 */ 56 52 #define PRC_COPYRIGHT \ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_test.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 6 6 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN 7 7 * 8 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 9 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 10 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 13 * XR[hÉÜÜêÄ¢é±ÆD 14 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 15 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gip 17 * Ò}j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 19 * ̳ÛØKèðfÚ·é±ÆD 20 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 21 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 22 * ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 28 * ñ·é±ÆD 29 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 30 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 31 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 32 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 * 免責すること. 34 30 * 35 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨36 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI37 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF38 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»39 * ÌÓCðíÈ¢D31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 40 36 * 41 37 * @(#) $Id$ … … 43 39 44 40 /* 45 * eXgvOÌ^[Qbg˶è`iRX630pj41 * テストプログラムのターゲット依存定義(RX630用) 46 42 */ 47 43 … … 49 45 #define TOPPERS_PRC_TEST_H 50 46 51 #define CPUEXC1 25 /* ®¬_áO*/47 #define CPUEXC1 25 /* 浮動小数点例外 */ 52 48 #define RAISE_CPU_EXCEPTION trigger_cpu_exception() 53 49 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_test.src
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
r164 r167 6 6 ;* Copyright (C) 2010 by Witz Corporation, JAPAN 7 7 ;* 8 ;* ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 9 ;* Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 10 ;* ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 11 ;* (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 12 ;* \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 13 ;* XR[hÉÜÜêÄ¢é±ÆD 14 ;* (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 15 ;* pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 16 gip 17 ;* Ò}j 18 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 19 ;* ̳ÛØKèðfÚ·é±ÆD 20 ;* (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 21 ;* pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 22 ;* ÆD 23 ;* (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 ;* ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 ;* (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 28 ;* ñ·é±ÆD 29 ;* (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 30 ;* Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 31 ;* ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 32 ;* RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 ;* 免責すること. 34 30 ;* 35 ;* {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨36 ;* æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI37 ;* ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF38 ;* AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»39 ;* ÌÓCðíÈ¢D31 ;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 ;* よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 ;* に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 ;* アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 ;* の責任を負わない. 40 36 ;* 41 37 ;* @(#) $Id: prc_test.src 536 2014-10-09 23:11:40Z coas-nagasima $ … … 48 44 _trigger_cpu_exception: 49 45 ; 50 ; CPU áO̶46 ; CPU例外の発生 51 47 ; 52 ; [èZðs¤±ÆÅ, ®¬_áOð53 ; ¶³¹é.48 ; ゼロ割り算を行うことで, 浮動小数点例外を 49 ; 発生させる. 54 50 ; 55 51 mvtc #00001000H, fpsw -
Property svn:mime-type
set to
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_unrename.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
-
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 7 7 * Copyright (C) 2013 by Mitsuhiro Matsuura 8 8 * 9 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 * ÆD 24 * (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 * ñ·é±ÆD 30 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 * ÆÓ·é±ÆD 9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 35 31 * 36 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨37 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI38 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF39 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»40 * ÌÓCðíÈ¢D32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 41 37 * 42 38 * @(#) $Id$ … … 44 40 45 41 /* 46 * RX630 É˶·éè`42 * RX630に依存する定義 47 43 */ 48 44 #ifndef TOPPERS_RX630_H … … 50 46 51 47 /* 52 * CPU áOnhÔÌè`(ÅèxN^e[u)48 * CPU例外ハンドラ番号の定義(固定ベクタテーブル) 53 49 * 54 * ÔÌÍÍÍ0 - 3155 */ 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}XJuèÝ*/60 #define INT_RESET 31 /* Zbg*/61 62 /* 63 * ÝÔÌè`(ÂÏxN^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 * 割込み番号の定義(可変ベクタテーブル) 64 60 */ 65 61 #define INT_BUSERR 16 … … 250 246 251 247 /* 252 * eW 253 [ÌWX^yÑÝèrbgîñ 248 * 各モジュールのレジスタ及び設定ビット情報 254 249 */ 255 250 … … 257 252 258 253 /* 259 * W 260 [XgbvRg[WX^AiMSTPCRAj 254 * モジュールストップコントロールレジスタA(MSTPCRA) 261 255 */ 262 256 #define SYSTEM_MSTPCRA_ADDR ( ( volatile uint32_t __evenaccess * )0x00080010 ) … … 296 290 297 291 /* 298 * W 299 [XgbvRg[WX^BiMSTPCRBj 292 * モジュールストップコントロールレジスタB(MSTPCRB) 300 293 */ 301 294 #define SYSTEM_MSTPCRB_ADDR ( ( volatile uint32_t __evenaccess * )0x00080014 ) … … 334 327 335 328 /* 336 * W 337 [XgbvRg[WX^CiMSTPCRCj 329 * モジュールストップコントロールレジスタC(MSTPCRC) 338 330 */ 339 331 #define SYSTEM_MSTPCRC_ADDR ( ( volatile uint32_t __evenaccess * )0x00080018 ) … … 372 364 373 365 /* 374 * NbN¶ñH366 * クロック発生回路 375 367 */ 376 368 #define SYSTEM_SCKCR_ADDR ( ( volatile uint32_t __evenaccess * )0x00080020 ) … … 392 384 393 385 /* 394 * veNgWX^386 * プロテクトレジスタ 395 387 */ 396 388 #define SYSTEM_PRCR_ADDR ( ( volatile uint16_t __evenaccess * )0x000803FE ) 397 389 398 390 /* 399 * èÝvWX^391 * 割り込み要求レジスタ 400 392 */ 401 393 #define ICU_IR000_ADDR ( ( volatile uint8_t __evenaccess * )0x00087000 ) … … 658 650 659 651 /* 660 * èÝvæÝèWX^652 * 割り込み要求先設定レジスタ 661 653 */ 662 654 #define ICU_ISELR000_ADDR ( ( volatile uint8_t __evenaccess * )0x00087100 ) … … 919 911 920 912 /* 921 * èÝvÂWX^913 * 割り込み要求許可レジスタ 922 914 */ 923 915 #define ICU_IER02_ADDR ( ( volatile uint8_t __evenaccess * )0x00087202 ) … … 960 952 961 953 /* 962 * èÝvövCIeBWX^i(i=0`253)ÌÝè954 * 割り込み要因プライオリティレジスタi(i=0〜253)の設定 963 955 */ 964 956 #define ICU_IPR000_ADDR ( ( volatile uint8_t __evenaccess * )0x00087300 ) … … 1222 1214 1223 1215 /* 1224 * IRQ Rg[WX^1216 * IRQコントロールレジスタ 1225 1217 */ 1226 1218 #define ICU_IRQ0_ADDR ( ( volatile uint8_t __evenaccess * )0x00087500 ) … … 1244 1236 1245 1237 /* 1246 * e`lÌWX^yÑÝèrbgîñ1238 * 各チャンネルのレジスタ及び設定ビット情報 1247 1239 */ 1248 1240 #define CMT_CMSTR0_ADDR ( ( volatile uint16_t __evenaccess * )0x00088000 ) … … 1353 1345 1354 1346 /* 1355 * I/O |[gÌWX^yÑÝèrbgîñ1347 * I/Oポートのレジスタ及び設定ビット情報 1356 1348 */ 1357 1349 #define PORT0_PDR_ADDR ( ( volatile uint8_t __evenaccess * )0x0008C000 ) … … 1523 1515 1524 1516 /* 1525 * }`t@NVsRg[ÌWX^îñ1517 * マルチファンクションピンコントローラのレジスタ情報 1526 1518 */ 1527 1519 #define MPC_PFUSB0_ADDR ( ( volatile uint8_t __evenaccess * )0x0008C114 ) … … 1662 1654 1663 1655 /* 1664 * A^CNbN1656 * リアルタイムクロック 1665 1657 */ 1666 1658 #define RTC_R64CNT_ADDR ( ( volatile uint8_t __evenaccess * )0x0008C400 ) … … 1674 1666 1675 1667 /* 1676 * 12 rbgA/D Ro[^1668 * 12 ビットA/D コンバータ 1677 1669 */ 1678 1670 #define S12AD_ADCSR_ADDR ( ( volatile uint8_t __evenaccess * )0x00089000 ) … … 1903 1895 1904 1896 /* 1905 * UART ÖAÌè`1897 * UART関連の定義 1906 1898 * 1907 * pdic Ìrx600/rx630_uart.cÅgp·éD1908 */ 1909 /* 1910 * VAI/OÌÂ1899 * pdicのrx600/rx630_uart.cで使用する. 1900 */ 1901 /* 1902 * シリアルI/Oの個数 1911 1903 */ 1912 1904 #define TNUM_SIOP ( 2 ) -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 1 1 $ 2 $ A[LeN`˶ev[giRX630pj2 $ アーキテクチャ依存テンプレート(RX630用) 3 3 $ 4 4 … … 11 11 12 12 $ 13 $ ÝÔÆÝnhÔÌè`13 $ 割込み番号と割込みハンドラ番号の定義 14 14 $ 15 $ RX630 ÅÍÝÔÆÝnhÔª1Î1ÅηéD15 $ RX630では割込み番号と割込みハンドラ番号が1対1で対応する. 16 16 $ 17 17 … … 20 20 21 21 $ 22 $ áOÔÌè`22 $ 例外番号の定義 23 23 $ 24 $ ÅèxN^e[uÌxN^e[uAhX̬³¢ÔÉáOÔðUéD25 $ ( \ñÌæàÜÞ)24 $ 固定ベクタテーブルのベクタテーブルアドレスの小さい順番に例外番号を割振る. 25 $ (予約領域も含む) 26 26 $ 27 27 … … 29 29 30 30 $ 31 $ INT ÝÌÔ31 $ INT割込みの番号 32 32 $ 33 33 … … 35 35 36 36 $ 37 $ ÝÔCÝnhÔCáOÔÌÍÍ37 $ 割込み番号,割込みハンドラ番号,例外番号の範囲 38 38 $ 39 $ ( \ñÌæàÜÞ)39 $ (予約領域も含む) 40 40 $ 41 41 … … 45 45 46 46 $ 47 $ vZbT˶Ìev[gt@CÌCN[h47 $ プロセッサ依存のテンプレートファイルのインクルード 48 48 $ 49 49 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630_config.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 7 7 * Copyright (C) 2013 by Mitsuhiro Matsuura 8 8 * 9 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 * ÆD 24 * (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 * ñ·é±ÆD 30 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 * ÆÓ·é±ÆD 9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 35 31 * 36 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨37 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI38 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF39 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»40 * ÌÓCðíÈ¢D32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 41 37 * 42 38 * @(#) $Id$ … … 44 40 45 41 /* 46 * vZbT˶W 47 [iRX630pj 42 * プロセッサ依存モジュール(RX630用) 48 43 */ 49 44 … … 52 47 53 48 /* 54 * ÝvövCIeBWX^AhXe[u49 * 割込み要因プライオリティレジスタアドレステーブル 55 50 */ 56 51 volatile 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 oXG[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 予約 */ 78 73 ICU_IPR001_ADDR, /* No.21 FCU FIFERR */ 79 NULL, /* No.22 \ñ*/74 NULL, /* No.22 予約 */ 80 75 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 予約 */ 84 79 ICU_IPR003_ADDR, /* No.27 SWINT */ 85 ICU_IPR004_ADDR, /* No.28 CMT jbg0 CMT0 */86 ICU_IPR005_ADDR, /* No.29 CMT jbg0 CMT1 */87 ICU_IPR006_ADDR, /* No.30 CMT jbg1 CMT2 */88 ICU_IPR007_ADDR, /* No.31 CMT jbg1 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 */ 89 84 ICU_IPR032_ADDR, /* No.32 ETHER */ 90 85 ICU_IPR033_ADDR, /* No.33 USB0 D0FIFO0 */ … … 115 110 ICU_IPR056_ADDR, /* No.58 CAN RXM2 */ 116 111 ICU_IPR056_ADDR, /* No.59 CAN TXM2 */ 117 NULL, /* No.60 \ñ*/118 NULL, /* No.61 \ñ*/112 NULL, /* No.60 予約 */ 113 NULL, /* No.61 予約 */ 119 114 ICU_IPR062_ADDR, /* No.62 RTC PRD */ 120 NULL, /* No.63 \ñ*/121 ICU_IPR064_ADDR, /* No.64 O[qIRQ0 */122 ICU_IPR065_ADDR, /* No.65 O[qIRQ1 */123 ICU_IPR066_ADDR, /* No.66 O[qIRQ2 */124 ICU_IPR067_ADDR, /* No.67 O[qIRQ3 */125 ICU_IPR068_ADDR, /* No.68 O[qIRQ4 */126 ICU_IPR069_ADDR, /* No.69 O[qIRQ5 */127 ICU_IPR070_ADDR, /* No.70 O[qIRQ6 */128 ICU_IPR071_ADDR, /* No.71 O[qIRQ7 */129 ICU_IPR072_ADDR, /* No.72 O[qIRQ8 */130 ICU_IPR073_ADDR, /* No.73 O[qIRQ9 */131 ICU_IPR074_ADDR, /* No.74 O[qIRQ10 */132 ICU_IPR075_ADDR, /* No.75 O[qIRQ11 */133 ICU_IPR076_ADDR, /* No.76 O[qIRQ12 */134 ICU_IPR077_ADDR, /* No.77 O[qIRQ13 */135 ICU_IPR078_ADDR, /* No.78 O[qIRQ14 */136 ICU_IPR079_ADDR, /* No.79 O[qIRQ15 */137 NULL, /* No.80 \ñ*/138 NULL, /* No.81 \ñ*/139 NULL, /* No.82 \ñ*/140 NULL, /* No.83 \ñ*/141 NULL, /* No.84 \ñ*/142 NULL, /* No.85 \ñ*/143 NULL, /* No.86 \ñ*/144 NULL, /* No.87 \ñ*/145 NULL, /* No.88 \ñ*/146 NULL, /* No.89 \ñ*/115 NULL, /* No.63 予約 */ 116 ICU_IPR064_ADDR, /* No.64 外部端子 IRQ0 */ 117 ICU_IPR065_ADDR, /* No.65 外部端子 IRQ1 */ 118 ICU_IPR066_ADDR, /* No.66 外部端子 IRQ2 */ 119 ICU_IPR067_ADDR, /* No.67 外部端子 IRQ3 */ 120 ICU_IPR068_ADDR, /* No.68 外部端子 IRQ4 */ 121 ICU_IPR069_ADDR, /* No.69 外部端子 IRQ5 */ 122 ICU_IPR070_ADDR, /* No.70 外部端子 IRQ6 */ 123 ICU_IPR071_ADDR, /* No.71 外部端子 IRQ7 */ 124 ICU_IPR072_ADDR, /* No.72 外部端子 IRQ8 */ 125 ICU_IPR073_ADDR, /* No.73 外部端子 IRQ9 */ 126 ICU_IPR074_ADDR, /* No.74 外部端子 IRQ10 */ 127 ICU_IPR075_ADDR, /* No.75 外部端子 IRQ11 */ 128 ICU_IPR076_ADDR, /* No.76 外部端子 IRQ12 */ 129 ICU_IPR077_ADDR, /* No.77 外部端子 IRQ13 */ 130 ICU_IPR078_ADDR, /* No.78 外部端子 IRQ14 */ 131 ICU_IPR079_ADDR, /* No.79 外部端子 IRQ15 */ 132 NULL, /* No.80 予約 */ 133 NULL, /* No.81 予約 */ 134 NULL, /* No.82 予約 */ 135 NULL, /* No.83 予約 */ 136 NULL, /* No.84 予約 */ 137 NULL, /* No.85 予約 */ 138 NULL, /* No.86 予約 */ 139 NULL, /* No.87 予約 */ 140 NULL, /* No.88 予約 */ 141 NULL, /* No.89 予約 */ 147 142 ICU_IPR090_ADDR, /* No.90 USBR0 */ 148 143 ICU_IPR091_ADDR, /* No.91 USBR1 */ 149 144 ICU_IPR092_ADDR, /* No.92 RTC ALM */ 150 145 ICU_IPR093_ADDR, /* No.93 RTC PRD */ 151 NULL, /* No.94 \ñ*/152 NULL, /* No.95 \ñ*/153 NULL, /* No.96 \ñ*/154 NULL, /* No.97 \ñ*/146 NULL, /* No.94 予約 */ 147 NULL, /* No.95 予約 */ 148 NULL, /* No.96 予約 */ 149 NULL, /* No.97 予約 */ 155 150 ICU_IPR098_ADDR, /* No.98 AD ADI0 */ 156 NULL, /* No.99 \ñ*/157 NULL, /* No.100 \ñ*/158 NULL, /* No.101 \ñ*/151 NULL, /* No.99 予約 */ 152 NULL, /* No.100 予約 */ 153 NULL, /* No.101 予約 */ 159 154 ICU_IPR102_ADDR, /* No.102 S12AD S12ADIO */ 160 NULL, /* No.103 \ñ*/161 NULL, /* No.104 \ñ*/162 NULL, /* No.105 \ñ*/155 NULL, /* No.103 予約 */ 156 NULL, /* No.104 予約 */ 157 NULL, /* No.105 予約 */ 163 158 ICU_IPR106_ADDR, /* No.106 ICU GROUP0 */ 164 159 ICU_IPR107_ADDR, /* No.107 ICU GROUP1 */ … … 168 163 ICU_IPR111_ADDR, /* No.111 ICU GROUP5 */ 169 164 ICU_IPR112_ADDR, /* No.112 ICU GROUP6 */ 170 NULL, /* No.113 \ñ*/165 NULL, /* No.113 予約 */ 171 166 ICU_IPR114_ADDR, /* No.114 ICU GROUP12 */ 172 NULL, /* No.115 \ñ*/173 NULL, /* No.116 \ñ*/174 NULL, /* No.117 \ñ*/175 NULL, /* No.118 \ñ*/176 NULL, /* No.119 \ñ*/177 NULL, /* No.120 \ñ*/178 NULL, /* No.121 \ñ*/167 NULL, /* No.115 予約 */ 168 NULL, /* No.116 予約 */ 169 NULL, /* No.117 予約 */ 170 NULL, /* No.118 予約 */ 171 NULL, /* No.119 予約 */ 172 NULL, /* No.120 予約 */ 173 NULL, /* No.121 予約 */ 179 174 ICU_IPR122_ADDR, /* No.122 SCI12 SCIX0 */ 180 175 ICU_IPR123_ADDR, /* No.123 SCI12 SCIX1 */ … … 223 218 ICU_IPR167_ADDR, /* No.166 POE OEI1 */ 224 219 ICU_IPR167_ADDR, /* No.167 POE OEI2 */ 225 NULL, /* No.168 \ñ*/226 NULL, /* No.169 \ñ*/220 NULL, /* No.168 予約 */ 221 NULL, /* No.169 予約 */ 227 222 ICU_IPR170_ADDR, /* No.170 TMR0 CMIA0 */ 228 223 ICU_IPR170_ADDR, /* No.171 TMR0 CMIB0 */ … … 259 254 ICU_IPR202_ADDR, /* No.202 EXDMAC EXDMACI0 */ 260 255 ICU_IPR203_ADDR, /* No.203 EXDMAC EXDMACI1 */ 261 NULL, /* No.204 \ñ*/262 NULL, /* No.205 \ñ*/263 NULL, /* No.206 \ñ*/264 NULL, /* No.207 \ñ*/265 NULL, /* No.208 \ñ*/266 NULL, /* No.209 \ñ*/267 NULL, /* No.210 \ñ*/268 NULL, /* No.211 \ñ*/269 NULL, /* No.212 \ñ*/270 NULL, /* No.213 \ñ*/256 NULL, /* No.204 予約 */ 257 NULL, /* No.205 予約 */ 258 NULL, /* No.206 予約 */ 259 NULL, /* No.207 予約 */ 260 NULL, /* No.208 予約 */ 261 NULL, /* No.209 予約 */ 262 NULL, /* No.210 予約 */ 263 NULL, /* No.211 予約 */ 264 NULL, /* No.212 予約 */ 265 NULL, /* No.213 予約 */ 271 266 ICU_IPR214_ADDR, /* No.214 SCI0 RXI0 */ 272 267 ICU_IPR214_ADDR, /* No.215 SCI0 TXI0 */ … … 309 304 ICU_IPR250_ADDR, /* No.252 SCI12 TEI12 */ 310 305 ICU_IPR253_ADDR, /* No.253 IEB IEBINT */ 311 NULL, /* No.254 \ñ*/312 NULL, /* No.255 \ñ*/306 NULL, /* No.254 予約 */ 307 NULL, /* No.255 予約 */ 313 308 }; 314 309 315 310 316 311 /* 317 * ÝvÂWX^AhXe[u312 * 割込み要求許可レジスタアドレステーブル 318 313 */ 319 314 const IER_INFO ier_reg_addr[ INHNO_MAX ] = { 320 { NULL, INVALID_OFFSET }, /* No.0 \ñ*/321 { NULL, INVALID_OFFSET }, /* No.1 \ñ*/322 { NULL, INVALID_OFFSET }, /* No.2 \ñ*/323 { NULL, INVALID_OFFSET }, /* No.3 \ñ*/324 { NULL, INVALID_OFFSET }, /* No.4 \ñ*/325 { NULL, INVALID_OFFSET }, /* No.5 \ñ*/326 { NULL, INVALID_OFFSET }, /* No.6 \ñ*/327 { NULL, INVALID_OFFSET }, /* No.7 \ñ*/328 { NULL, INVALID_OFFSET }, /* No.8 \ñ*/329 { NULL, INVALID_OFFSET }, /* No.9 \ñ*/330 { NULL, INVALID_OFFSET }, /* No.10 \ñ*/331 { NULL, INVALID_OFFSET }, /* No.11 \ñ*/332 { NULL, INVALID_OFFSET }, /* No.12 \ñ*/333 { NULL, INVALID_OFFSET }, /* No.13 \ñ*/334 { NULL, INVALID_OFFSET }, /* No.14 \ñ*/335 { NULL, INVALID_OFFSET }, /* No.15 \ñ*/336 { ICU_IER02_ADDR, ICU_IEN0_BIT }, /* No.16 oXG[BUSERR */337 { NULL, INVALID_OFFSET }, /* No.17 \ñ*/338 { NULL, INVALID_OFFSET }, /* No.18 \ñ*/339 { NULL, INVALID_OFFSET }, /* No.19 \ñ*/340 { NULL, INVALID_OFFSET }, /* No.20 \ñ*/315 { NULL, INVALID_OFFSET }, /* No.0 予約 */ 316 { NULL, INVALID_OFFSET }, /* No.1 予約 */ 317 { NULL, INVALID_OFFSET }, /* No.2 予約 */ 318 { NULL, INVALID_OFFSET }, /* No.3 予約 */ 319 { NULL, INVALID_OFFSET }, /* No.4 予約 */ 320 { NULL, INVALID_OFFSET }, /* No.5 予約 */ 321 { NULL, INVALID_OFFSET }, /* No.6 予約 */ 322 { NULL, INVALID_OFFSET }, /* No.7 予約 */ 323 { NULL, INVALID_OFFSET }, /* No.8 予約 */ 324 { NULL, INVALID_OFFSET }, /* No.9 予約 */ 325 { NULL, INVALID_OFFSET }, /* No.10 予約 */ 326 { NULL, INVALID_OFFSET }, /* No.11 予約 */ 327 { NULL, INVALID_OFFSET }, /* No.12 予約 */ 328 { NULL, INVALID_OFFSET }, /* No.13 予約 */ 329 { NULL, INVALID_OFFSET }, /* No.14 予約 */ 330 { NULL, INVALID_OFFSET }, /* No.15 予約 */ 331 { ICU_IER02_ADDR, ICU_IEN0_BIT }, /* No.16 バスエラー BUSERR */ 332 { NULL, INVALID_OFFSET }, /* No.17 予約 */ 333 { NULL, INVALID_OFFSET }, /* No.18 予約 */ 334 { NULL, INVALID_OFFSET }, /* No.19 予約 */ 335 { NULL, INVALID_OFFSET }, /* No.20 予約 */ 341 336 { ICU_IER02_ADDR, ICU_IEN5_BIT }, /* No.21 FCU FIFERR */ 342 { NULL, INVALID_OFFSET }, /* No.22 \ñ*/337 { NULL, INVALID_OFFSET }, /* No.22 予約 */ 343 338 { ICU_IER02_ADDR, ICU_IEN7_BIT }, /* No.23 FCU FRDYI */ 344 { NULL, INVALID_OFFSET }, /* No.24 \ñ*/345 { NULL, INVALID_OFFSET }, /* No.25 \ñ*/346 { NULL, INVALID_OFFSET }, /* No.26 \ñ*/339 { NULL, INVALID_OFFSET }, /* No.24 予約 */ 340 { NULL, INVALID_OFFSET }, /* No.25 予約 */ 341 { NULL, INVALID_OFFSET }, /* No.26 予約 */ 347 342 { ICU_IER03_ADDR, ICU_IEN3_BIT }, /* No.27 SWINT */ 348 { ICU_IER03_ADDR, ICU_IEN4_BIT }, /* No.28 CMT jbg0 CMT0 */349 { ICU_IER03_ADDR, ICU_IEN5_BIT }, /* No.29 CMT jbg0 CMT1 */350 { ICU_IER03_ADDR, ICU_IEN6_BIT }, /* No.30 CMT jbg1 CMT2 */351 { ICU_IER03_ADDR, ICU_IEN7_BIT }, /* No.31 CMT jbg1 CMT3 */343 { ICU_IER03_ADDR, ICU_IEN4_BIT }, /* No.28 CMTユニット0 CMT0 */ 344 { ICU_IER03_ADDR, ICU_IEN5_BIT }, /* No.29 CMTユニット0 CMT1 */ 345 { ICU_IER03_ADDR, ICU_IEN6_BIT }, /* No.30 CMTユニット1 CMT2 */ 346 { ICU_IER03_ADDR, ICU_IEN7_BIT }, /* No.31 CMTユニット1 CMT3 */ 352 347 { ICU_IER04_ADDR, ICU_IEN0_BIT }, /* No.32 ETHER */ 353 348 { ICU_IER04_ADDR, ICU_IEN1_BIT }, /* No.33 USB0 D0FIFO0 */ … … 378 373 { ICU_IER07_ADDR, ICU_IEN2_BIT }, /* No.58 CAN2 RXM2 */ 379 374 { ICU_IER07_ADDR, ICU_IEN3_BIT }, /* No.59 CAN2 TXM2 */ 380 { NULL, INVALID_OFFSET }, /* No.60 \ñ*/381 { NULL, INVALID_OFFSET }, /* No.61 \ñ*/375 { NULL, INVALID_OFFSET }, /* No.60 予約 */ 376 { NULL, INVALID_OFFSET }, /* No.61 予約 */ 382 377 { ICU_IER07_ADDR, ICU_IEN6_BIT }, /* No.62 RTC PRD */ 383 { NULL, INVALID_OFFSET }, /* No.63 \ñ*/384 { ICU_IER08_ADDR, ICU_IEN0_BIT }, /* No.64 O[qIRQ0 */385 { ICU_IER08_ADDR, ICU_IEN1_BIT }, /* No.65 O[qIRQ1 */386 { ICU_IER08_ADDR, ICU_IEN2_BIT }, /* No.66 O[qIRQ2 */387 { ICU_IER08_ADDR, ICU_IEN3_BIT }, /* No.67 O[qIRQ3 */388 { ICU_IER08_ADDR, ICU_IEN4_BIT }, /* No.68 O[qIRQ4 */389 { ICU_IER08_ADDR, ICU_IEN5_BIT }, /* No.69 O[qIRQ5 */390 { ICU_IER08_ADDR, ICU_IEN6_BIT }, /* No.70 O[qIRQ6 */391 { ICU_IER08_ADDR, ICU_IEN7_BIT }, /* No.71 O[qIRQ7 */392 { ICU_IER09_ADDR, ICU_IEN0_BIT }, /* No.72 O[qIRQ8 */393 { ICU_IER09_ADDR, ICU_IEN1_BIT }, /* No.73 O[qIRQ9 */394 { ICU_IER09_ADDR, ICU_IEN2_BIT }, /* No.74 O[qIRQ10 */395 { ICU_IER09_ADDR, ICU_IEN3_BIT }, /* No.75 O[qIRQ11 */396 { ICU_IER09_ADDR, ICU_IEN4_BIT }, /* No.76 O[qIRQ12 */397 { ICU_IER09_ADDR, ICU_IEN5_BIT }, /* No.77 O[qIRQ13 */398 { ICU_IER09_ADDR, ICU_IEN6_BIT }, /* No.78 O[qIRQ14 */399 { ICU_IER09_ADDR, ICU_IEN7_BIT }, /* No.79 O[qIRQ15 */400 { NULL, INVALID_OFFSET }, /* No.80 \ñ*/401 { NULL, INVALID_OFFSET }, /* No.81 \ñ*/402 { NULL, INVALID_OFFSET }, /* No.82 \ñ*/403 { NULL, INVALID_OFFSET }, /* No.83 \ñ*/404 { NULL, INVALID_OFFSET }, /* No.84 \ñ*/405 { NULL, INVALID_OFFSET }, /* No.85 \ñ*/406 { NULL, INVALID_OFFSET }, /* No.86 \ñ*/407 { NULL, INVALID_OFFSET }, /* No.87 \ñ*/408 { NULL, INVALID_OFFSET }, /* No.88 \ñ*/409 { NULL, INVALID_OFFSET }, /* No.89 \ñ*/378 { NULL, INVALID_OFFSET }, /* No.63 予約 */ 379 { ICU_IER08_ADDR, ICU_IEN0_BIT }, /* No.64 外部端子 IRQ0 */ 380 { ICU_IER08_ADDR, ICU_IEN1_BIT }, /* No.65 外部端子 IRQ1 */ 381 { ICU_IER08_ADDR, ICU_IEN2_BIT }, /* No.66 外部端子 IRQ2 */ 382 { ICU_IER08_ADDR, ICU_IEN3_BIT }, /* No.67 外部端子 IRQ3 */ 383 { ICU_IER08_ADDR, ICU_IEN4_BIT }, /* No.68 外部端子 IRQ4 */ 384 { ICU_IER08_ADDR, ICU_IEN5_BIT }, /* No.69 外部端子 IRQ5 */ 385 { ICU_IER08_ADDR, ICU_IEN6_BIT }, /* No.70 外部端子 IRQ6 */ 386 { ICU_IER08_ADDR, ICU_IEN7_BIT }, /* No.71 外部端子 IRQ7 */ 387 { ICU_IER09_ADDR, ICU_IEN0_BIT }, /* No.72 外部端子 IRQ8 */ 388 { ICU_IER09_ADDR, ICU_IEN1_BIT }, /* No.73 外部端子 IRQ9 */ 389 { ICU_IER09_ADDR, ICU_IEN2_BIT }, /* No.74 外部端子 IRQ10 */ 390 { ICU_IER09_ADDR, ICU_IEN3_BIT }, /* No.75 外部端子 IRQ11 */ 391 { ICU_IER09_ADDR, ICU_IEN4_BIT }, /* No.76 外部端子 IRQ12 */ 392 { ICU_IER09_ADDR, ICU_IEN5_BIT }, /* No.77 外部端子 IRQ13 */ 393 { ICU_IER09_ADDR, ICU_IEN6_BIT }, /* No.78 外部端子 IRQ14 */ 394 { ICU_IER09_ADDR, ICU_IEN7_BIT }, /* No.79 外部端子 IRQ15 */ 395 { NULL, INVALID_OFFSET }, /* No.80 予約 */ 396 { NULL, INVALID_OFFSET }, /* No.81 予約 */ 397 { NULL, INVALID_OFFSET }, /* No.82 予約 */ 398 { NULL, INVALID_OFFSET }, /* No.83 予約 */ 399 { NULL, INVALID_OFFSET }, /* No.84 予約 */ 400 { NULL, INVALID_OFFSET }, /* No.85 予約 */ 401 { NULL, INVALID_OFFSET }, /* No.86 予約 */ 402 { NULL, INVALID_OFFSET }, /* No.87 予約 */ 403 { NULL, INVALID_OFFSET }, /* No.88 予約 */ 404 { NULL, INVALID_OFFSET }, /* No.89 予約 */ 410 405 { ICU_IER0B_ADDR, ICU_IEN2_BIT }, /* No.90 USBR0 */ 411 406 { ICU_IER0B_ADDR, ICU_IEN3_BIT }, /* No.91 USBR1 */ 412 407 { ICU_IER0B_ADDR, ICU_IEN4_BIT }, /* No.92 RTC ALM */ 413 408 { ICU_IER0B_ADDR, ICU_IEN5_BIT }, /* No.92 RTC PRD */ 414 { NULL, INVALID_OFFSET }, /* No.94 \ñ*/415 { NULL, INVALID_OFFSET }, /* No.95 \ñ*/416 { NULL, INVALID_OFFSET }, /* No.96 \ñ*/417 { NULL, INVALID_OFFSET }, /* No.97 \ñ*/409 { NULL, INVALID_OFFSET }, /* No.94 予約 */ 410 { NULL, INVALID_OFFSET }, /* No.95 予約 */ 411 { NULL, INVALID_OFFSET }, /* No.96 予約 */ 412 { NULL, INVALID_OFFSET }, /* No.97 予約 */ 418 413 { ICU_IER0C_ADDR, ICU_IEN2_BIT }, /* No.98 AD0 ADI0 */ 419 { NULL, INVALID_OFFSET }, /* No.99 \ñ*/420 { NULL, INVALID_OFFSET }, /* No.100 \ñ*/421 { NULL, INVALID_OFFSET }, /* No.101 \ñ*/414 { NULL, INVALID_OFFSET }, /* No.99 予約 */ 415 { NULL, INVALID_OFFSET }, /* No.100 予約 */ 416 { NULL, INVALID_OFFSET }, /* No.101 予約 */ 422 417 { ICU_IER0C_ADDR, ICU_IEN6_BIT }, /* No.102 S12AD S12ADI00 */ 423 { NULL, INVALID_OFFSET }, /* No.103 \ñ*/424 { NULL, INVALID_OFFSET }, /* No.104 \ñ*/425 { NULL, INVALID_OFFSET }, /* No.105 \ñ*/418 { NULL, INVALID_OFFSET }, /* No.103 予約 */ 419 { NULL, INVALID_OFFSET }, /* No.104 予約 */ 420 { NULL, INVALID_OFFSET }, /* No.105 予約 */ 426 421 { ICU_IER0D_ADDR, ICU_IEN2_BIT }, /* No.106 ICU GROUP0 */ 427 422 { ICU_IER0D_ADDR, ICU_IEN3_BIT }, /* No.107 ICU GROUP1 */ … … 431 426 { ICU_IER0D_ADDR, ICU_IEN7_BIT }, /* No.111 ICU GROUP5 */ 432 427 { ICU_IER0E_ADDR, ICU_IEN0_BIT }, /* No.112 ICU GROUP6 */ 433 { NULL, INVALID_OFFSET }, /* No.113 \ñ*/428 { NULL, INVALID_OFFSET }, /* No.113 予約 */ 434 429 { ICU_IER0E_ADDR, ICU_IEN1_BIT }, /* No.114 ICU GROUP12 */ 435 { NULL, INVALID_OFFSET }, /* No.115 \ñ*/436 { NULL, INVALID_OFFSET }, /* No.116 \ñ*/437 { NULL, INVALID_OFFSET }, /* No.117 \ñ*/438 { NULL, INVALID_OFFSET }, /* No.118 \ñ*/439 { NULL, INVALID_OFFSET }, /* No.119 \ñ*/440 { NULL, INVALID_OFFSET }, /* No.120 \ñ*/441 { NULL, INVALID_OFFSET }, /* No.121 \ñ*/430 { NULL, INVALID_OFFSET }, /* No.115 予約 */ 431 { NULL, INVALID_OFFSET }, /* No.116 予約 */ 432 { NULL, INVALID_OFFSET }, /* No.117 予約 */ 433 { NULL, INVALID_OFFSET }, /* No.118 予約 */ 434 { NULL, INVALID_OFFSET }, /* No.119 予約 */ 435 { NULL, INVALID_OFFSET }, /* No.120 予約 */ 436 { NULL, INVALID_OFFSET }, /* No.121 予約 */ 442 437 { ICU_IER0F_ADDR, ICU_IEN2_BIT }, /* No.122 SCI12 SCIX0 */ 443 438 { ICU_IER0F_ADDR, ICU_IEN3_BIT }, /* No.123 SCI12 SCIX1 */ … … 486 481 { ICU_IER14_ADDR, ICU_IEN6_BIT }, /* No.166 POE OEI1 */ 487 482 { ICU_IER14_ADDR, ICU_IEN7_BIT }, /* No.167 POE OEI2 */ 488 { NULL, INVALID_OFFSET }, /* No.168 \ñ*/489 { NULL, INVALID_OFFSET }, /* No.169 \ñ*/483 { NULL, INVALID_OFFSET }, /* No.168 予約 */ 484 { NULL, INVALID_OFFSET }, /* No.169 予約 */ 490 485 { ICU_IER15_ADDR, ICU_IEN2_BIT }, /* No.170 TMR0 CMIA0 */ 491 486 { ICU_IER15_ADDR, ICU_IEN3_BIT }, /* No.171 TMR0 CMIB0 */ … … 522 517 { ICU_IER19_ADDR, ICU_IEN2_BIT }, /* No.202 EXDMAC EXDMAC0I */ 523 518 { ICU_IER19_ADDR, ICU_IEN3_BIT }, /* No.203 EXDMAC EXDMAC1I */ 524 { NULL, INVALID_OFFSET }, /* No.204 \ñ*/525 { NULL, INVALID_OFFSET }, /* No.205 \ñ*/526 { NULL, INVALID_OFFSET }, /* No.206 \ñ*/527 { NULL, INVALID_OFFSET }, /* No.207 \ñ*/528 { NULL, INVALID_OFFSET }, /* No.208 \ñ*/529 { NULL, INVALID_OFFSET }, /* No.209 \ñ*/530 { NULL, INVALID_OFFSET }, /* No.210 \ñ*/531 { NULL, INVALID_OFFSET }, /* No.211 \ñ*/532 { NULL, INVALID_OFFSET }, /* No.212 \ñ*/533 { NULL, INVALID_OFFSET }, /* No.213 \ñ*/519 { NULL, INVALID_OFFSET }, /* No.204 予約 */ 520 { NULL, INVALID_OFFSET }, /* No.205 予約 */ 521 { NULL, INVALID_OFFSET }, /* No.206 予約 */ 522 { NULL, INVALID_OFFSET }, /* No.207 予約 */ 523 { NULL, INVALID_OFFSET }, /* No.208 予約 */ 524 { NULL, INVALID_OFFSET }, /* No.209 予約 */ 525 { NULL, INVALID_OFFSET }, /* No.210 予約 */ 526 { NULL, INVALID_OFFSET }, /* No.211 予約 */ 527 { NULL, INVALID_OFFSET }, /* No.212 予約 */ 528 { NULL, INVALID_OFFSET }, /* No.213 予約 */ 534 529 { ICU_IER1A_ADDR, ICU_IEN6_BIT }, /* No.214 SCI0 RXI0 */ 535 530 { ICU_IER1A_ADDR, ICU_IEN7_BIT }, /* No.215 SCI0 TXI0 */ … … 572 567 { ICU_IER1F_ADDR, ICU_IEN4_BIT }, /* No.252 SCI12 TEI12 */ 573 568 { ICU_IER1F_ADDR, ICU_IEN5_BIT }, /* No.253 IEB IEBINT */ 574 { NULL, INVALID_OFFSET }, /* No.254 \ñ*/575 { NULL, INVALID_OFFSET }, /* No.255 \ñ*/569 { NULL, INVALID_OFFSET }, /* No.254 予約 */ 570 { NULL, INVALID_OFFSET }, /* No.255 予約 */ 576 571 }; 577 572 578 573 579 574 /* 580 * IRQ Rg[WX^AhXe[u575 * IRQコントロールレジスタアドレステーブル 581 576 */ 582 577 volatile uint8_t __evenaccess * const irqcr_reg_addr[ IRQ_MAX ] = { -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/rx630_config.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 7 7 * Copyright (C) 2013 by Mitsuhiro Matsuura 8 8 * 9 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 10 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 11 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 23 * ÆD 24 * (a) Äzzɺ¤hL 25 gipÒ}j 26 AÈÇjÉCãLÌ 27 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 28 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 29 * ñ·é±ÆD 30 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 31 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 32 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 33 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 34 * ÆÓ·é±ÆD 9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 35 31 * 36 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨37 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI38 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF39 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»40 * ÌÓCðíÈ¢D32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 41 37 * 42 38 * @(#) $Id$ … … 44 40 45 41 /* 46 * vZbT˶W 47 [iRX630pj 42 * プロセッサ依存モジュール(RX630用) 48 43 * 49 * ±ÌCN[ht@CÍCtarget_config.hiܽÍC»±©çCN50 * [h³êét@CjÌÝ©çCN[h³êéD¼Ìt@C©ç51 * ¼ÚCN[hµÄÍÈçÈ¢D44 * このインクルードファイルは,target_config.h(または,そこからインク 45 * ルードされるファイル)のみからインクルードされる.他のファイルから 46 * 直接インクルードしてはならない. 52 47 */ 53 48 … … 58 53 59 54 /* 60 * Ývö55 * 割込み要因数 61 56 */ 62 57 #define INHNO_MAX UINT_C( 256 ) … … 64 59 65 60 /* 66 * ݧäp^è`61 * 割込み制御用型定義 67 62 */ 68 63 typedef struct ier_info { … … 73 68 74 69 /* 75 * ݧäpè`70 * 割込み制御用定義 76 71 */ 77 72 #define INVALID_OFFSET ( 0xFFU ) … … 84 79 85 80 /* 86 * ݧäpe[u81 * 割込み制御用テーブル 87 82 */ 88 83 89 /* ÝvövCIeBWX^AhX*/84 /* 割込み要因プライオリティレジスタアドレス */ 90 85 extern volatile uint8_t __evenaccess * const ipr_reg_addr[]; 91 /* ÝvÂWX^AhX*/86 /* 割込み要求許可レジスタアドレス */ 92 87 extern const IER_INFO ier_reg_addr[]; 93 /* ÝvWX^AhX*/88 /* 割込み要求レジスタアドレス */ 94 89 extern volatile uint8_t __evenaccess * const ir_reg_addr[]; 95 /* IRQ Rg[WX^AhX*/90 /* IRQコントロールレジスタアドレス */ 96 91 extern volatile uint8_t __evenaccess * const irqcr_reg_addr[]; 97 92 98 93 99 94 /* 100 * vZbT˶W 101 [iRX630pj 95 * プロセッサ依存モジュール(RX630用) 102 96 */ 103 97 #include "rx630_ccrx/prc_config.h" -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/start.src
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
r164 r167 10 10 ;* Copyright (C) 2008-2010 by Witz Corporation, JAPAN 11 11 ;* 12 ;* ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 13 ;* Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 14 ;* ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 15 ;* (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 16 ;* \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 17 ;* XR[hÉÜÜêÄ¢é±ÆD 18 ;* (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 19 ;* pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 20 gip 21 ;* Ò}j 22 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 23 ;* ̳ÛØKèðfÚ·é±ÆD 24 ;* (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 25 ;* pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 26 ;* ÆD 27 ;* (a) Äzzɺ¤hL 28 gipÒ}j 29 AÈÇjÉCãLÌ 30 ;* ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 31 ;* (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 32 ;* ñ·é±ÆD 33 ;* (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 34 ;* Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 35 ;* ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 36 ;* RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 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 ;* 免責すること. 38 34 ;* 39 ;* {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨40 ;* æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI41 ;* ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF42 ;* AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»43 ;* ÌÓCðíÈ¢D35 ;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 36 ;* よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 37 ;* に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 38 ;* アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 39 ;* の責任を負わない. 44 40 ;* 45 41 ;* @(#) $Id: start.src 536 2014-10-09 23:11:40Z coas-nagasima $ … … 49 45 50 46 ; 51 ; }bvÌè`(^[Qbg˶)47 ; メモリマップの定義(ターゲット依存部) 52 48 ; 53 49 54 DFLRE .equ 007FC440H ; DFLRE WX^50 DFLRE .equ 007FC440H ; DFLREレジスタ 55 51 56 52 DB_BLOCK_ENABLE .equ 02D0FH 57 53 58 54 ; 59 ; ú»[`55 ; 初期化ルーチン 60 56 ; 61 57 .section P, CODE … … 69 65 _start: 70 66 ; 71 ; d¹üãÍx0, SÝÖ~óÔÅ é.72 ; J[lÅͬÝðgpµÈ¢½ßABPC, BPSWyÑFINTV73 ; Ìú»ÍsíÈ¢.67 ; 電源投入後はレベル0, 全割込み禁止状態である. 68 ; カーネルでは高速割込みを使用しないため、BPC, BPSW及びFINTV 69 ; の初期化は行わない. 74 70 ; 75 71 76 72 ; 77 ; à ROMif[^tbV 78 jÌæÌÝè 73 ; 内蔵ROM(データフラッシュ)領域の設定 79 74 ; 80 ; Zbgã, f[^tbV 81 ÌæÍÇÝoµÖ~ÆÈÁÄ¢é 82 ; ½ß, ÇÝoµÂÉÝè·é. 75 ; リセット後, データフラッシュ領域は読み出し禁止となっている 76 ; ため, 読み出し許可に設定する. 83 77 ; 84 78 mov.l #DFLRE, r5 … … 86 80 87 81 ; 88 ; X^bN|C^ÌÝè82 ; スタックポインタの設定 89 83 ; 90 ; [UÉÄñ^XNReLXgpX^bNÌæðpÓµ½ê,91 ; [UÌæðÝè·é.92 ; kernel_cfg.c ÉÄ"_kernel_istkpt"Ìlðè·é.84 ; ユーザにて非タスクコンテキスト用スタック領域を用意した場合, 85 ; ユーザ領域を設定する. 86 ; kernel_cfg.cにて"_kernel_istkpt"の値を決定する. 93 87 ; 94 88 mov.l #__kernel_istkpt, r5 95 mov.l [r5], r0 ; ñ^XNReLXgpX^bNÌæðÝè89 mov.l [r5], r0 ; 非タスクコンテキスト用スタック領域を設定 96 90 97 91 ; 98 ; ÂÏxN^e[uÌÝè92 ; 可変ベクタテーブルの設定 99 93 ; 100 mvtc #(topof C$VECT), intb ; xN^e[uÌÝè94 mvtc #(topof C$VECT), intb ; ベクタテーブルの設定 101 95 102 96 ; 103 ; n[hEFAÅLÌú»[`ÌÄoµ97 ; ハードウェア固有の初期化ルーチンの呼出し 104 98 ; 105 99 mov.l #_hardware_init_hook, r5 … … 109 103 110 104 ; 111 ; úl èÏÌæÌú»105 ; 初期値あり変数領域の初期化 112 106 ; 113 107 init_D: 114 108 mov.l #(sizeof R), r3 115 109 cmp #0, r3 116 beq.b init_D_2 ; TCY0Èçú»Kvȵ110 beq.b init_D_2 ; サイズ0なら初期化必要なし 117 111 mov.l #(topof R), r1 118 112 mov.l #(topof D), r2 … … 122 116 mov.l #(sizeof R_2), r3 123 117 cmp #0, r3 124 beq.b init_D_1 ; TCY0Èçú»Kvȵ118 beq.b init_D_1 ; サイズ0なら初期化必要なし 125 119 mov.l #(topof R_2), r1 126 120 mov.l #(topof D_2), r2 … … 130 124 mov.l #(sizeof R_1), r3 131 125 cmp #0, r3 132 beq.b clear_B ; TCY0Èçú»Kvȵ126 beq.b clear_B ; サイズ0なら初期化必要なし 133 127 mov.l #(topof R_1), r1 134 128 mov.l #(topof D_1), r2 … … 136 130 137 131 ; 138 ; úlȵÏÌæÌú»132 ; 初期値なし変数領域の初期化 139 133 ; 140 134 clear_B: … … 157 151 158 152 ; 159 ; software_init_hook ðÄoµi0 ÅÈ¢êj153 ; software_init_hook を呼出し(0 でない場合) 160 154 ; 161 ; \tgEFA«iÁÉCujÉ˶µÄKvÈú»162 ; ª éêÍCsoftware_init_hook Æ¢¤ÖðpÓ·êÎæ¢.155 ; ソフトウェア環境(特にライブラリ)に依存して必要な初期化処理 156 ; がある場合は,software_init_hook という関数を用意すればよい. 163 157 ; 164 158 mov.l #_software_init_hook, r5 … … 168 162 169 163 ; 170 ; J[lX^[g164 ; カーネルスタート 171 165 ; 172 166 kernel_link: -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.