Changeset 321 for EcnlProtoTool/trunk/asp3_dcre/arch
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- Location:
- EcnlProtoTool/trunk/asp3_dcre/arch
- Files:
-
- 47 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/Makefile.core
-
Property svn:mime-type
changed from
text/x-makefile
totext/x-makefile;charset=UTF-8
r270 r321 1 1 # 2 # Makefile ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼2 # Makefileのコア依存部(ARM用) 3 3 # 4 # $Id : Makefile.core 572 2016-02-01 14:40:09Z ertl-hiro$4 # $Id$ 5 5 # 6 6 7 7 # 8 # ã³ã¢ä¾åé¨ãã£ã¬ã¯ããªåã®å®ç¾©8 # コア依存部ディレクトリ名の定義 9 9 # 10 10 COREDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/common 11 11 12 12 # 13 # ãã¼ã«ä¾åé¨ãã£ã¬ã¯ããªåã®å®ç¾©13 # ツール依存部ディレクトリ名の定義 14 14 # 15 15 TOOLDIR = $(SRCDIR)/arch/$(TOOL) 16 16 17 17 # 18 # GNU éçºç°å¢ã®ã¿ã¼ã²ããã¢ã¼ããã¯ãã£ã®å®ç¾©18 # GNU開発環境のターゲットアーキテクチャの定義 19 19 # 20 20 ifndef GCC_TARGET … … 23 23 24 24 # 25 # ã³ã³ãã¤ã«ãªãã·ã§ã³25 # コンパイルオプション 26 26 # 27 27 INCLUDES := $(INCLUDES) -I$(COREDIR) -I$(TOOLDIR) … … 29 29 30 30 # 31 # ã«ã¼ãã«ã«é¢ããå®ç¾©31 # カーネルに関する定義 32 32 # 33 33 KERNEL_DIRS := $(KERNEL_DIRS) $(COREDIR) … … 36 36 37 37 # 38 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©38 # コンフィギュレータ関係の変数の定義 39 39 # 40 40 CFG_TABS := $(CFG_TABS) --symval-table $(COREDIR)/core_sym.def 41 41 42 42 # 43 # ãªãã»ãããã¡ã¤ã«çæã®ããã®å®ç¾©43 # オフセットファイル生成のための定義 44 44 # 45 45 TARGET_OFFSET_TRB = $(COREDIR)/core_offset.trb 46 46 47 47 # 48 # ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã«é¢ããå®ç¾©48 # スタートアップモジュールに関する定義 49 49 # 50 # START_OBJS ãstart.oã«è¨å®ãï¼LDFLAGSã«-nostdlibã追å ããï¼50 # START_OBJSをstart.oに設定し,LDFLAGSに-nostdlibを追加する. 51 51 # 52 52 START_OBJS = start.o -
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 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 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ARM ã³ã¢ãµãã¼ãã¢ã¸ã¥ã¼ã«41 * ARMコアサポートモジュール 57 42 */ 58 43 … … 60 45 61 46 /* 62 * ãã£ãã·ã¥ã®æä½47 * キャッシュの操作 63 48 */ 64 49 65 50 /* 66 * ãã¼ã¿ãã£ãã·ã¥ã®ã¤ãã¼ãã«51 * データキャッシュのイネーブル 67 52 */ 68 53 void … … 81 66 82 67 /* 83 * ãã¼ã¿ãã£ãã·ã¥ã®ãã£ã¹ã¨ã¼ãã«68 * データキャッシュのディスエーブル 84 69 * 85 * ãã¼ã¿ãã£ãã·ã¥ãç¡å¹ãªç¶æ 86 ã§clean_and_invalidateãå®è¡ããã¨æ´èµ° 87 * ããå ´åãããããï¼ãã¼ã¿ãã£ãã·ã¥ã®ç¶æ 88 ãå¤æãã¦ï¼ç¡å¹ãªå ´åã¯ï¼ 89 * ç¡å¹åã®ã¿ãè¡ãï¼ 70 * データキャッシュが無効な状態でclean_and_invalidateを実行すると暴走 71 * する場合があるため,データキャッシュの状態を判断して,無効な場合は, 72 * 無効化のみを行う. 90 73 */ 91 74 void … … 107 90 108 91 /* 109 * å½ä»¤ãã£ãã·ã¥ã®ã¤ãã¼ãã«92 * 命令キャッシュのイネーブル 110 93 */ 111 94 void … … 124 107 125 108 /* 126 * å½ä»¤ãã£ãã·ã¥ã®ãã£ã¹ã¨ã¼ãã«109 * 命令キャッシュのディスエーブル 127 110 */ 128 111 void … … 139 122 140 123 /* 141 * ARMv5 ã«ããããã¼ã¿ãã£ãã·ã¥ã®ã¯ãªã¼ã³ã¨ç¡å¹å124 * ARMv5におけるデータキャッシュのクリーンと無効化 142 125 */ 143 126 #if __TARGET_ARCH_ARM <= 5 … … 152 135 153 136 /* 154 * ARMv7 ã«ããããã¼ã¿ãã£ãã·ã¥ã®ç¡å¹å137 * ARMv7におけるデータキャッシュの無効化 155 138 * 156 * ã¬ãã«0ã®ãã£ãã·ã¥ã®ã¿ãç¡å¹åããï¼139 * レベル0のキャッシュのみを無効化する. 157 140 */ 158 141 #if __TARGET_ARCH_ARM == 7 … … 183 166 184 167 /* 185 * ARMv7 ã«ããããã¼ã¿ãã£ãã·ã¥ã®ã¯ãªã¼ã³ã¨ç¡å¹å168 * ARMv7におけるデータキャッシュのクリーンと無効化 186 169 * 187 * ã¬ãã«0ã®ãã£ãã·ã¥ã®ã¿ãã¯ãªã¼ã³ã¨ç¡å¹åããï¼170 * レベル0のキャッシュのみをクリーンと無効化する. 188 171 */ 189 172 #if __TARGET_ARCH_ARM == 7 -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * ARM ã³ã¢ãµãã¼ãã¢ã¸ã¥ã¼ã«43 * ARMコアサポートモジュール 59 44 */ 60 45 … … 65 50 66 51 /* 67 * ARM ã³ã¢ã®ç¹æ®å½ä»¤ã®ã¤ã³ã©ã¤ã³é¢æ°å®ç¾©52 * ARMコアの特殊命令のインライン関数定義 68 53 */ 69 54 #ifndef TOPPERS_MACRO_ONLY 70 55 #ifndef TECSGEN 71 #include "arm_insn.h" /* tecsgen ã解éã§ããªãããã¹ããã*/56 #include "arm_insn.h" /* tecsgenが解釈できないためスキップ */ 72 57 #endif /* TECSGEN */ 73 58 #endif /* TOPPERS_MACRO_ONLY */ 74 59 75 60 /* 76 * ARM ä¾å¤ãã¯ã¿61 * ARM例外ベクタ 77 62 */ 78 63 #define RESET_VECTOR UINT_C(0x00) … … 85 70 86 71 /* 87 * ARM ä¾å¤ãã¯ã¿çªå·72 * ARM例外ベクタ番号 88 73 */ 89 74 #define RESET_NUMBER UINT_C(0) … … 96 81 97 82 /* 98 * CPSR ã®å²è¾¼ã¿ç¦æ¢ããã83 * CPSRの割込み禁止ビット 99 84 */ 100 85 #define CPSR_INT_MASK UINT_C(0xc0) … … 103 88 104 89 /* 105 * CPSR ã®Thumbããã90 * CPSRのThumbビット 106 91 */ 107 92 #define CPSR_THUMB_BIT UINT_C(0x20) 108 93 109 94 /* 110 * CPSR ã®ã¢ã¼ãããã95 * CPSRのモードビット 111 96 */ 112 97 #define CPSR_MODE_MASK UINT_C(0x1f) … … 120 105 121 106 /* 122 * CP15 ã®ã·ã¹ãã å¶å¾¡ã¬ã¸ã¹ã¿ï¼SCTLRï¼ã®è¨å®å¤107 * CP15のシステム制御レジスタ(SCTLR)の設定値 123 108 * 124 * ARMv7 ã§ã¯ï¼CP15_SCTLR_EXTPAGEã¯å¸¸ã«1ã«ãªã£ã¦ããï¼109 * ARMv7では,CP15_SCTLR_EXTPAGEは常に1になっている. 125 110 */ 126 111 #if __TARGET_ARCH_ARM == 6 … … 134 119 135 120 /* 136 * CP15ã®ãã©ã¼ã«ãç¶æ 137 ã¬ã¸ã¹ã¿ã®åç 138 §å¤ 121 * CP15のフォールト状態レジスタの参照値 139 122 */ 140 123 #define CP15_FSR_FS_MASK UINT_C(0x0000040f) … … 146 129 147 130 /* 148 * CP15 ã®ããã©ã¼ãã³ã¹ã¢ãã¿å¶å¾¡ã¬ã¸ã¹ã¿ï¼PMCRï¼ã®è¨å®å¤131 * CP15のパフォーマンスモニタ制御レジスタ(PMCR)の設定値 149 132 */ 150 133 #define CP15_PMCR_ALLCNTR_ENABLE UINT_C(0x01) … … 152 135 153 136 /* 154 * CP15 ã®ããã©ã¼ãã³ã¹ã¢ãã¿ã«ã¦ã³ãã¤ãã¼ãã«ã»ããã¬ã¸ã¹ã¿ï¼PMCNTENSETï¼155 * ã®è¨å®å¤137 * CP15のパフォーマンスモニタカウントイネーブルセットレジスタ(PMCNTENSET) 138 * の設定値 156 139 */ 157 140 #define CP15_PMCNTENSET_CCNTR_ENABLE UINT_C(0x80000000) 158 141 159 142 /* 160 * CP15 ã®å¤æãã¼ãã«ãã¼ã¹ã¬ã¸ã¹ã¿ï¼TTBRï¼ã®è¨å®å¤143 * CP15の変換テーブルベースレジスタ(TTBR)の設定値 161 144 */ 162 145 #define CP15_TTBR_RGN_SHAREABLE UINT_C(0x00000002) … … 175 158 176 159 /* 177 * MMU é¢é£ã®å®ç¾©ï¼VMSAï¼178 */ 179 180 /* 181 * ã»ã¯ã·ã§ã³ã¨ãã¼ã¸ã®ãµã¤ãº160 * MMU関連の定義(VMSA) 161 */ 162 163 /* 164 * セクションとページのサイズ 182 165 */ 183 166 #define ARM_SSECTION_SIZE UINT_C(0x1000000) … … 187 170 188 171 /* 189 * ã»ã¯ã·ã§ã³ãã¼ãã«ã¨ãã¼ã¸ãã¼ãã«ã®ãµã¤ãº172 * セクションテーブルとページテーブルのサイズ 190 173 */ 191 174 #define ARM_SECTION_TABLE_SIZE UINT_C(0x4000) … … 198 181 199 182 /* 200 * 第1ã¬ãã«ãã£ã¹ã¯ãªãã¿ã®è¨å®å¤ 201 */ 202 #define ARM_MMU_DSCR1_FAULT 0x00000U /* ãã©ã«ã */ 203 #define ARM_MMU_DSCR1_PAGETABLE 0x00001U /* ã³ã¢ã¼ã¹ãã¼ã¸ãã¼ãã« */ 204 #define ARM_MMU_DSCR1_SECTION 0x00002U /* ã»ã¯ã·ã§ã³ */ 205 #define ARM_MMU_DSCR1_SSECTION 0x40002U /* ã¹ã¼ãã¼ã»ã¯ã·ã§ã³ */ 206 207 #define ARM_MMU_DSCR1_SHARED 0x10000U /* ããã»ããµéã§å 208 ±æ */ 209 #define ARM_MMU_DSCR1_TEX000 0x00000U /* TEXãããã000 */ 210 #define ARM_MMU_DSCR1_TEX001 0x01000U /* TEXãããã001 */ 211 #define ARM_MMU_DSCR1_TEX010 0x02000U /* TEXãããã010 */ 212 #define ARM_MMU_DSCR1_TEX100 0x04000U /* TEXãããã100 */ 213 #define ARM_MMU_DSCR1_AP01 0x00400U /* APãããã01 */ 214 #define ARM_MMU_DSCR1_AP10 0x00800U /* APãããã10 */ 215 #define ARM_MMU_DSCR1_AP11 0x00c00U /* APãããã11 */ 216 #define ARM_MMU_DSCR1_CB00 0x00000U /* Cãããã0ï¼Bãããã0 */ 217 #define ARM_MMU_DSCR1_CB01 0x00004U /* Cãããã0ï¼Bãããã1 */ 218 #define ARM_MMU_DSCR1_CB10 0x00008U /* Cãããã1ï¼Bãããã0 */ 219 #define ARM_MMU_DSCR1_CB11 0x0000cU /* Cãããã1ï¼Bãããã1 */ 183 * 第1レベルディスクリプタの設定値 184 */ 185 #define ARM_MMU_DSCR1_FAULT 0x00000U /* フォルト */ 186 #define ARM_MMU_DSCR1_PAGETABLE 0x00001U /* コアースページテーブル */ 187 #define ARM_MMU_DSCR1_SECTION 0x00002U /* セクション */ 188 #define ARM_MMU_DSCR1_SSECTION 0x40002U /* スーパーセクション */ 189 190 #define ARM_MMU_DSCR1_SHARED 0x10000U /* プロセッサ間で共有 */ 191 #define ARM_MMU_DSCR1_TEX000 0x00000U /* TEXビットが000 */ 192 #define ARM_MMU_DSCR1_TEX001 0x01000U /* TEXビットが001 */ 193 #define ARM_MMU_DSCR1_TEX010 0x02000U /* TEXビットが010 */ 194 #define ARM_MMU_DSCR1_TEX100 0x04000U /* TEXビットが100 */ 195 #define ARM_MMU_DSCR1_AP01 0x00400U /* APビットが01 */ 196 #define ARM_MMU_DSCR1_AP10 0x00800U /* APビットが10 */ 197 #define ARM_MMU_DSCR1_AP11 0x00c00U /* APビットが11 */ 198 #define ARM_MMU_DSCR1_CB00 0x00000U /* Cビットが0,Bビットが0 */ 199 #define ARM_MMU_DSCR1_CB01 0x00004U /* Cビットが0,Bビットが1 */ 200 #define ARM_MMU_DSCR1_CB10 0x00008U /* Cビットが1,Bビットが0 */ 201 #define ARM_MMU_DSCR1_CB11 0x0000cU /* Cビットが1,Bビットが1 */ 220 202 221 203 #if __TARGET_ARCH_ARM >= 6 222 #define ARMV6_MMU_DSCR1_NONGLOBAL 0x20000U /* ã°ãã¼ãã«ã§ãªã*/223 #define ARMV6_MMU_DSCR1_APX0 0x00000U /* APX ãããã0 */224 #define ARMV6_MMU_DSCR1_APX1 0x08000U /* APX ãããã1 */225 #define ARMV6_MMU_DSCR1_ECC 0x00200U /* ECC ãæå¹ï¼MPCoreï¼*/226 #define ARMV6_MMU_DSCR1_NOEXEC 0x00010U /* å®è¡ä¸å¯*/204 #define ARMV6_MMU_DSCR1_NONGLOBAL 0x20000U /* グローバルでない */ 205 #define ARMV6_MMU_DSCR1_APX0 0x00000U /* APXビットが0 */ 206 #define ARMV6_MMU_DSCR1_APX1 0x08000U /* APXビットが1 */ 207 #define ARMV6_MMU_DSCR1_ECC 0x00200U /* ECCが有効(MPCore)*/ 208 #define ARMV6_MMU_DSCR1_NOEXEC 0x00010U /* 実行不可 */ 227 209 #endif /* __TARGET_ARCH_ARM >= 6 */ 228 210 229 211 /* 230 * 第2ã¬ãã«ãã£ã¹ã¯ãªãã¿ã®è¨å®å¤231 */ 232 #define ARM_MMU_DSCR2_FAULT 0x0000U /* ãã©ã«ã*/233 #define ARM_MMU_DSCR2_LARGE 0x0001U /* ã©ã¼ã¸ãã¼ã¸*/234 #define ARM_MMU_DSCR2_SMALL 0x0002U /* ã¹ã¢ã¼ã«ãã¼ã¸*/235 236 #define ARM_MMU_DSCR2_CB00 0x0000U /* C ãããã0ï¼Bãããã0 */237 #define ARM_MMU_DSCR2_CB01 0x0004U /* C ãããã0ï¼Bãããã1 */238 #define ARM_MMU_DSCR2_CB10 0x0008U /* C ãããã1ï¼Bãããã0 */239 #define ARM_MMU_DSCR2_CB11 0x000cU /* C ãããã1ï¼Bãããã1 */212 * 第2レベルディスクリプタの設定値 213 */ 214 #define ARM_MMU_DSCR2_FAULT 0x0000U /* フォルト */ 215 #define ARM_MMU_DSCR2_LARGE 0x0001U /* ラージページ */ 216 #define ARM_MMU_DSCR2_SMALL 0x0002U /* スモールページ */ 217 218 #define ARM_MMU_DSCR2_CB00 0x0000U /* Cビットが0,Bビットが0 */ 219 #define ARM_MMU_DSCR2_CB01 0x0004U /* Cビットが0,Bビットが1 */ 220 #define ARM_MMU_DSCR2_CB10 0x0008U /* Cビットが1,Bビットが0 */ 221 #define ARM_MMU_DSCR2_CB11 0x000cU /* Cビットが1,Bビットが1 */ 240 222 241 223 #if __TARGET_ARCH_ARM < 6 242 224 243 #define ARMV5_MMU_DSCR2_AP01 0x0550U /* AP[0-3] ãããã01 */244 #define ARMV5_MMU_DSCR2_AP10 0x0aa0U /* AP[0-3] ãããã10 */245 #define ARMV5_MMU_DSCR2_AP11 0x0ff0U /* AP[0-3] ãããã11 */246 247 /* ã©ã¼ã¸ãã¼ã¸ã®ãã£ã¹ã¯ãªãã¿ç¨*/248 #define ARMV5_MMU_DSCR2L_TEX000 0x0000U /* TEX ãããã000 */249 #define ARMV5_MMU_DSCR2L_TEX001 0x1000U /* TEX ãããã001 */250 #define ARMV5_MMU_DSCR2L_TEX010 0x2000U /* TEX ãããã010 */251 #define ARMV5_MMU_DSCR2L_TEX100 0x4000U /* TEX ãããã100 */225 #define ARMV5_MMU_DSCR2_AP01 0x0550U /* AP[0-3]ビットが01 */ 226 #define ARMV5_MMU_DSCR2_AP10 0x0aa0U /* AP[0-3]ビットが10 */ 227 #define ARMV5_MMU_DSCR2_AP11 0x0ff0U /* AP[0-3]ビットが11 */ 228 229 /* ラージページのディスクリプタ用 */ 230 #define ARMV5_MMU_DSCR2L_TEX000 0x0000U /* TEXビットが000 */ 231 #define ARMV5_MMU_DSCR2L_TEX001 0x1000U /* TEXビットが001 */ 232 #define ARMV5_MMU_DSCR2L_TEX010 0x2000U /* TEXビットが010 */ 233 #define ARMV5_MMU_DSCR2L_TEX100 0x4000U /* TEXビットが100 */ 252 234 253 235 #else /* __TARGET_ARCH_ARM < 6 */ 254 236 255 #define ARMV6_MMU_DSCR2_NONGLOBAL 0x0800U /* ã°ãã¼ãã«ã§ãªã */ 256 #define ARMV6_MMU_DSCR2_SHARED 0x0400U /* ããã»ããµéã§å 257 ±æ */ 258 #define ARMV6_MMU_DSCR2_APX0 0x0000U /* APXãããã0 */ 259 #define ARMV6_MMU_DSCR2_APX1 0x0200U /* APXãããã1 */ 260 #define ARMV6_MMU_DSCR2_AP01 0x0010U /* APãããã01 */ 261 #define ARMV6_MMU_DSCR2_AP10 0x0020U /* APãããã10 */ 262 #define ARMV6_MMU_DSCR2_AP11 0x0030U /* APãããã11 */ 263 264 /* ã©ã¼ã¸ãã¼ã¸ã®ãã£ã¹ã¯ãªãã¿ç¨ */ 265 #define ARMV6_MMU_DSCR2L_TEX000 0x0000U /* TEXãããã000 */ 266 #define ARMV6_MMU_DSCR2L_TEX001 0x1000U /* TEXãããã001 */ 267 #define ARMV6_MMU_DSCR2L_TEX010 0x2000U /* TEXãããã010 */ 268 #define ARMV6_MMU_DSCR2L_TEX100 0x4000U /* TEXãããã100 */ 269 #define ARMV6_MMU_DSCR2L_NOEXEC 0x8000U /* å®è¡ä¸å¯ */ 270 271 /* ã¹ã¢ã¼ã«ãã¼ã¸ã®ãã£ã¹ã¯ãªãã¿ç¨ */ 272 #define ARMV6_MMU_DSCR2S_TEX000 0x0000U /* TEXãããã000 */ 273 #define ARMV6_MMU_DSCR2S_TEX001 0x0040U /* TEXãããã001 */ 274 #define ARMV6_MMU_DSCR2S_TEX010 0x0080U /* TEXãããã010 */ 275 #define ARMV6_MMU_DSCR2S_TEX100 0x0100U /* TEXãããã100 */ 276 #define ARMV6_MMU_DSCR2S_NOEXEC 0x0001U /* å®è¡ä¸å¯ */ 237 #define ARMV6_MMU_DSCR2_NONGLOBAL 0x0800U /* グローバルでない */ 238 #define ARMV6_MMU_DSCR2_SHARED 0x0400U /* プロセッサ間で共有 */ 239 #define ARMV6_MMU_DSCR2_APX0 0x0000U /* APXビットが0 */ 240 #define ARMV6_MMU_DSCR2_APX1 0x0200U /* APXビットが1 */ 241 #define ARMV6_MMU_DSCR2_AP01 0x0010U /* APビットが01 */ 242 #define ARMV6_MMU_DSCR2_AP10 0x0020U /* APビットが10 */ 243 #define ARMV6_MMU_DSCR2_AP11 0x0030U /* APビットが11 */ 244 245 /* ラージページのディスクリプタ用 */ 246 #define ARMV6_MMU_DSCR2L_TEX000 0x0000U /* TEXビットが000 */ 247 #define ARMV6_MMU_DSCR2L_TEX001 0x1000U /* TEXビットが001 */ 248 #define ARMV6_MMU_DSCR2L_TEX010 0x2000U /* TEXビットが010 */ 249 #define ARMV6_MMU_DSCR2L_TEX100 0x4000U /* TEXビットが100 */ 250 #define ARMV6_MMU_DSCR2L_NOEXEC 0x8000U /* 実行不可 */ 251 252 /* スモールページのディスクリプタ用 */ 253 #define ARMV6_MMU_DSCR2S_TEX000 0x0000U /* TEXビットが000 */ 254 #define ARMV6_MMU_DSCR2S_TEX001 0x0040U /* TEXビットが001 */ 255 #define ARMV6_MMU_DSCR2S_TEX010 0x0080U /* TEXビットが010 */ 256 #define ARMV6_MMU_DSCR2S_TEX100 0x0100U /* TEXビットが100 */ 257 #define ARMV6_MMU_DSCR2S_NOEXEC 0x0001U /* 実行不可 */ 277 258 278 259 #endif /* __TARGET_ARCH_ARM < 6 */ … … 281 262 282 263 /* 283 * ã³ããã»ããµ15ã®æä½é¢æ°284 */ 285 286 /* 287 * High exception vectors ã使ãããã«è¨å®264 * コプロセッサ15の操作関数 265 */ 266 267 /* 268 * High exception vectorsを使うように設定 288 269 */ 289 270 Inline void … … 298 279 299 280 /* 300 * Low exception vectors ã使ãããã«è¨å®281 * Low exception vectorsを使うように設定 301 282 */ 302 283 Inline void … … 311 292 312 293 /* 313 * åå²äºæ¸¬ãã¤ãã¼ãã«294 * 分岐予測をイネーブル 314 295 */ 315 296 Inline void … … 324 305 325 306 /* 326 * åå²äºæ¸¬ããã£ã¹ã¨ã¼ãã«307 * 分岐予測をディスエーブル 327 308 */ 328 309 Inline void … … 337 318 338 319 /* 339 * ããã»ããµçªå·ã®åå¾320 * プロセッサ番号の取得 340 321 * 341 * ãã«ãããã»ããµã¢ãã£ããã£ã¬ã¸ã¹ã¿ãèªãã§ï¼ãã®ä¸ä½8ããããè¿ãï¼342 * ARMv6 ã§ã¯ï¼ãã«ãããã»ããµããµãã¼ããã¦ããå ´åã«ã®ã¿ä½¿ç¨ã§ããï¼322 * マルチプロセッサアフィニティレジスタを読んで,その下位8ビットを返す. 323 * ARMv6では,マルチプロセッサをサポートしている場合にのみ使用できる. 343 324 */ 344 325 #if __TARGET_ARCH_ARM >= 6 … … 356 337 357 338 /* 358 * ãã£ãã·ã¥ã®æä½359 */ 360 361 /* 362 * å½ä»¤ï¼ãã¼ã¿ãã£ãã·ã¥ã®ã¤ãã¼ãã«ï¼ãã£ã¹ã¨ã¼ãã«339 * キャッシュの操作 340 */ 341 342 /* 343 * 命令/データキャッシュのイネーブル/ディスエーブル 363 344 */ 364 345 extern void arm_enable_icache(void); … … 368 349 369 350 /* 370 * ãã£ãã·ã¥ã®ã¤ãã¼ãã«351 * キャッシュのイネーブル 371 352 */ 372 353 Inline void … … 378 359 379 360 /* 380 * ãã£ãã·ã¥ã®ãã£ã¹ã¨ã¼ãã«361 * キャッシュのディスエーブル 381 362 */ 382 363 Inline void … … 388 369 389 370 /* 390 * ARMv5 ã«ããããã¼ã¿ãã£ãã·ã¥ã®ç¡å¹åï¼ã¯ãªã¼ã³371 * ARMv5におけるデータキャッシュの無効化/クリーン 391 372 */ 392 373 #if __TARGET_ARCH_ARM <= 5 … … 395 376 396 377 /* 397 * ARMv7 ã«ããããã¼ã¿ãã£ãã·ã¥ã®ç¡å¹åï¼ã¯ãªã¼ã³378 * ARMv7におけるデータキャッシュの無効化/クリーン 398 379 */ 399 380 #if __TARGET_ARCH_ARM == 7 … … 403 384 404 385 /* 405 * ãã¼ã¿ãã£ãã·ã¥ã¨çµ±åãã£ãã·ã¥ã®ç¡å¹å386 * データキャッシュと統合キャッシュの無効化 406 387 */ 407 388 Inline void … … 417 398 418 399 /* 419 * ãã¼ã¿ãã£ãã·ã¥ã¨çµ±åãã£ãã·ã¥ã®ã¯ãªã¼ã³ã¨ç¡å¹å400 * データキャッシュと統合キャッシュのクリーンと無効化 420 401 */ 421 402 Inline void … … 433 414 434 415 /* 435 * å½ä»¤ãã£ãã·ã¥ã®ç¡å¹å416 * 命令キャッシュの無効化 436 417 */ 437 418 Inline void … … 442 423 443 424 /* 444 * åå²äºæ¸¬ã®ç¡å¹å425 * 分岐予測の無効化 445 426 */ 446 427 Inline void … … 453 434 454 435 /* 455 * TLB ã®ç¡å¹å436 * TLBの無効化 456 437 */ 457 438 Inline void -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm_insn.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * ARM ã³ã¢ã®ç¹æ®å½ä»¤ã®ã¤ã³ã©ã¤ã³é¢æ°å®ç¾©59 * 60 * ãã®ããããã¡ã¤ã«ã¯ï¼arm.hããã¤ã³ã¯ã«ã¼ããããï¼arm.hããåé¢ã61 * ã¦ããã®ã¯ï¼ã³ã³ãã¤ã©ã«ããã¤ã³ã©ã¤ã³ã¢ã»ã³ãã©ã®è¨è¿°æ¹æ³ã®éãã62 * å¸åããããã«ï¼ãã®ãã¡ã¤ã«ã®ã¿ãç½®ãæããã°ããããã«ããããã§63 * ããï¼43 * ARMコアの特殊命令のインライン関数定義 44 * 45 * このヘッダファイルは,arm.hからインクルードされる.arm.hから分離し 46 * ているのは,コンパイラによるインラインアセンブラの記述方法の違いを 47 * 吸収するために,このファイルのみを置き換えればよいようにするためで 48 * ある. 64 49 */ 65 50 … … 70 55 71 56 /* 72 * CLZ ï¼Count Leading Zeroï¼å½ä»¤57 * CLZ(Count Leading Zero)命令 73 58 */ 74 59 #if __TARGET_ARCH_ARM >= 6 … … 86 71 87 72 /* 88 * ã¡ã¢ãªãå¤æ´ããããã¨ãã³ã³ãã¤ã©ã«ä¼ããããã®ãã¯ã73 * メモリが変更されることをコンパイラに伝えるためのマクロ 89 74 */ 90 75 #define ARM_MEMORY_CHANGED Asm("":::"memory") 91 76 92 77 /* 93 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®æä½é¢æ°78 * ステータスレジスタの操作関数 94 79 */ 95 80 #ifndef __thumb__ 96 81 97 82 /* 98 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®èªåºã83 * ステータスレジスタ(CPSR)の現在値の読出し 99 84 */ 100 85 Inline uint32_t … … 108 93 109 94 /* 110 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®å¤æ´95 * ステータスレジスタ(CPSR)の現在値の変更 111 96 */ 112 97 Inline void … … 118 103 #else /* __thumb__ */ 119 104 /* 120 * Thumb ã¢ã¼ãã§ã¯mrs/msrå½ä»¤ã使ç¨ã§ããªãããï¼é¢æ°ã¨ãã¦å®ç¾ãã¦ï¼121 * ARM ã¢ã¼ãã«ç§»è¡ãã¦å®è¡ããï¼122 */ 123 124 /* 125 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®èªåºã105 * Thumbモードではmrs/msr命令が使用できないため,関数として実現して, 106 * ARMモードに移行して実行する. 107 */ 108 109 /* 110 * ステータスレジスタ(CPSR)の現在値の読出し 126 111 */ 127 112 extern uint32_t current_cpsr(void); 128 113 129 114 /* 130 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®å¤æ´115 * ステータスレジスタ(CPSR)の現在値の変更 131 116 */ 132 117 extern void set_cpsr(uint32_t cpsr); … … 135 120 136 121 /* 137 * å²è¾¼ã¿ç¦æ¢ï¼è¨±å¯é¢æ° 138 * 139 * ARMv6ãã追å ãããã·ã¹ãã ç¶æ 140 ãå¤æ´ããå½ä»¤ã使ã£ãå²è¾¼ã¿ç¦æ¢ï¼è¨± 141 * å¯ã®ããã®é¢æ°ï¼ 142 */ 143 #if __TARGET_ARCH_ARM >= 6 144 145 /* 146 * IRQã®ç¦æ¢ 122 * 割込み禁止/許可関数 123 * 124 * ARMv6から追加されたシステム状態を変更する命令を使った割込み禁止/許 125 * 可のための関数. 126 */ 127 #if __TARGET_ARCH_ARM >= 6 128 129 /* 130 * IRQの禁止 147 131 */ 148 132 Inline void … … 153 137 154 138 /* 155 * IRQ ã®è¨±å¯139 * IRQの許可 156 140 */ 157 141 Inline void … … 162 146 163 147 /* 164 * FIQ ã®ç¦æ¢148 * FIQの禁止 165 149 */ 166 150 Inline void … … 171 155 172 156 /* 173 * FIQ ã®è¨±å¯157 * FIQの許可 174 158 */ 175 159 Inline void … … 180 164 181 165 /* 182 * FIQ ã¨IRQã®ç¦æ¢166 * FIQとIRQの禁止 183 167 */ 184 168 Inline void … … 189 173 190 174 /* 191 * FIQ ã¨IRQã®è¨±å¯175 * FIQとIRQの許可 192 176 */ 193 177 Inline void … … 200 184 201 185 /* 202 * CP15 ã®IDã¬ã¸ã¹ã¿æä½ãã¯ã203 */ 204 205 /* ã¡ã¤ã³IDã¬ã¸ã¹ã¿*/186 * CP15のIDレジスタ操作マクロ 187 */ 188 189 /* メインIDレジスタ */ 206 190 #define CP15_READ_MIDR(reg) Asm("mrc p15, 0, %0, c0, c0, 0":"=r"(reg)) 207 191 208 /* ãã«ãããã»ããµã¢ãã£ããã£ã¬ã¸ã¹ã¿ï¼ARMv6以éï¼*/192 /* マルチプロセッサアフィニティレジスタ(ARMv6以降)*/ 209 193 #if __TARGET_ARCH_ARM >= 6 210 194 #define CP15_READ_MPIDR(reg) Asm("mrc p15, 0, %0, c0, c0, 5":"=r"(reg)) 211 195 #endif /* __TARGET_ARCH_ARM >= 6 */ 212 196 213 /* ãã£ãã·ã¥ã¿ã¤ãã¬ã¸ã¹ã¿*/197 /* キャッシュタイプレジスタ */ 214 198 #define CP15_READ_CTR(reg) Asm("mrc p15, 0, %0, c0, c0, 1":"=r"(reg)) 215 199 216 200 #if __TARGET_ARCH_ARM == 7 217 /* ãã£ãã·ã¥ã¬ãã«IDã¬ã¸ã¹ã¿ï¼ARMv7ï¼*/201 /* キャッシュレベルIDレジスタ(ARMv7) */ 218 202 #define CP15_READ_CLIDR(reg) Asm("mrc p15, 1, %0, c0, c0, 1":"=r"(reg)) 219 203 220 /* ãã£ãã·ã¥ãµã¤ãºé¸æã¬ã¸ã¹ã¿ï¼ARMv7ï¼*/204 /* キャッシュサイズ選択レジスタ(ARMv7)*/ 221 205 #define CP15_WRITE_CSSELR(reg) Asm("mcr p15, 2, %0, c0, c0, 0"::"r"(reg)) 222 206 223 /* ãã£ãã·ã¥ãµã¤ãºIDã¬ã¸ã¹ã¿ï¼ARMv7ï¼*/207 /* キャッシュサイズIDレジスタ(ARMv7)*/ 224 208 #define CP15_READ_CCSIDR(reg) Asm("mrc p15, 1, %0, c0, c0, 0":"=r"(reg)) 225 209 #endif /* __TARGET_ARCH_ARM == 7 */ 226 210 227 211 /* 228 * CP15 ã®ã·ã¹ãã å¶å¾¡ã¬ã¸ã¹ã¿æä½ãã¯ã229 */ 230 231 /* ã·ã¹ãã å¶å¾¡ã¬ã¸ã¹ã¿*/212 * CP15のシステム制御レジスタ操作マクロ 213 */ 214 215 /* システム制御レジスタ */ 232 216 #define CP15_READ_SCTLR(reg) Asm("mrc p15, 0, %0, c1, c0, 0":"=r"(reg)) 233 217 #define CP15_WRITE_SCTLR(reg) Asm("mcr p15, 0, %0, c1, c0, 0"::"r"(reg)) 234 218 235 /* è£å©å¶å¾¡ã¬ã¸ã¹ã¿ï¼æ©è½ã¯ãããä¾åï¼*/219 /* 補助制御レジスタ(機能はチップ依存)*/ 236 220 #define CP15_READ_ACTLR(reg) Asm("mrc p15, 0, %0, c1, c0, 1":"=r"(reg)) 237 221 #define CP15_WRITE_ACTLR(reg) Asm("mcr p15, 0, %0, c1, c0, 1"::"r"(reg)) 238 222 239 223 /* 240 * CP15ã«ãããã£ãã·ã¥æä½ãã¯ã 241 */ 242 243 /* å½ä»¤ãã£ãã·ã¥å 244 ¨ä½ã®ç¡å¹å */ 224 * CP15によるキャッシュ操作マクロ 225 */ 226 227 /* 命令キャッシュ全体の無効化 */ 245 228 #define CP15_INVALIDATE_ICACHE() \ 246 229 Asm("mcr p15, 0, %0, c7, c5, 0"::"r"(0)) 247 230 248 /* åå²äºæ¸¬å 249 ¨ä½ã®ç¡å¹å */ 231 /* 分岐予測全体の無効化 */ 250 232 #define CP15_INVALIDATE_BP() Asm("mcr p15, 0, %0, c7, c5, 6"::"r"(0)) 251 233 252 /* ãã¼ã¿ãã£ãã·ã¥å 253 ¨ä½ã®ç¡å¹åï¼ARMv6以åï¼*/ 234 /* データキャッシュ全体の無効化(ARMv6以前)*/ 254 235 #if __TARGET_ARCH_ARM <= 6 255 236 #define CP15_INVALIDATE_DCACHE() Asm("mcr p15, 0, %0, c7, c6, 0"::"r"(0)) 256 237 #endif /* __TARGET_ARCH_ARM <= 6 */ 257 238 258 /* çµ±åãã£ãã·ã¥å 259 ¨ä½ã®ç¡å¹åï¼ARMv6以åï¼*/ 239 /* 統合キャッシュ全体の無効化(ARMv6以前)*/ 260 240 #if __TARGET_ARCH_ARM <= 6 261 241 #define CP15_INVALIDATE_UCACHE() Asm("mcr p15, 0, %0, c7, c7, 0"::"r"(0)) 262 242 #endif /* __TARGET_ARCH_ARM <= 6 */ 263 243 264 /* ãã¼ã¿ãã£ãã·ã¥å 265 ¨ä½ã®ã¯ãªã¼ã³ã¨ç¡å¹åï¼ARMv5ã®ã¿ï¼*/ 244 /* データキャッシュ全体のクリーンと無効化(ARMv5のみ)*/ 266 245 #if __TARGET_ARCH_ARM <= 5 267 246 #define ARMV5_CLEAN_AND_INVALIDATE_DCACHE() \ … … 269 248 #endif /* __TARGET_ARCH_ARM <= 5 */ 270 249 271 /* ãã¼ã¿ãã£ãã·ã¥å 272 ¨ä½ã®ã¯ãªã¼ã³ã¨ç¡å¹åï¼ARMv6ã®ã¿ï¼*/ 250 /* データキャッシュ全体のクリーンと無効化(ARMv6のみ)*/ 273 251 #if __TARGET_ARCH_ARM == 6 274 252 #define CP15_CLEAN_AND_INVALIDATE_DCACHE() \ … … 276 254 #endif /* __TARGET_ARCH_ARM == 6 */ 277 255 278 /* çµ±åãã£ãã·ã¥å 279 ¨ä½ã®ã¯ãªã¼ã³ã¨ç¡å¹åï¼ARMv6ã®ã¿ï¼*/ 256 /* 統合キャッシュ全体のクリーンと無効化(ARMv6のみ)*/ 280 257 #if __TARGET_ARCH_ARM == 6 281 258 #define CP15_CLEAN_AND_INVALIDATE_UCACHE() \ … … 283 260 #endif /* __TARGET_ARCH_ARM == 6 */ 284 261 285 /* ãã¼ã¿ãã£ãã·ã¥ã®ã»ããï¼ã¦ã§ã¤åä½ã®ç¡å¹å*/262 /* データキャッシュのセット/ウェイ単位の無効化 */ 286 263 #define CP15_WRITE_DCISW(reg) Asm("mcr p15, 0, %0, c7, c6, 2"::"r"(reg)) 287 264 288 /* ãã¼ã¿ãã£ãã·ã¥ã®ã»ããï¼ã¦ã§ã¤åä½ã®ã¯ãªã¼ã³ã¨ç¡å¹å*/265 /* データキャッシュのセット/ウェイ単位のクリーンと無効化 */ 289 266 #define CP15_WRITE_DCCISW(reg) Asm("mcr p15, 0, %0, c7, c14, 2"::"r"(reg)) 290 267 291 268 /* 292 * CP15ã®ãã©ã¼ã«ãç¶æ 293 ï¼ã¢ãã¬ã¹ã®æä½ãã¯ã 269 * CP15のフォールト状態/アドレスの操作マクロ 294 270 */ 295 271 #if __TARGET_ARCH_ARM >= 6 … … 304 280 305 281 /* 306 * CP15 ã«ããMMUã®æä½ãã¯ãï¼VMSAï¼307 */ 308 309 /* å¤æãã¼ãã«ãã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼ARMv6以éï¼*/282 * CP15によるMMUの操作マクロ(VMSA) 283 */ 284 285 /* 変換テーブルベース制御レジスタ(ARMv6以降)*/ 310 286 #if __TARGET_ARCH_ARM >= 6 311 287 #define CP15_WRITE_TTBCR(reg) Asm("mcr p15, 0, %0, c2, c0, 2"::"r"(reg)) 312 288 #endif /* __TARGET_ARCH_ARM >= 6 */ 313 289 314 /* å¤æãã¼ãã«ãã¼ã¹ã¬ã¸ã¹ã¿0 */290 /* 変換テーブルベースレジスタ0 */ 315 291 #define CP15_READ_TTBR0(reg) Asm("mrc p15, 0, %0, c2, c0, 0":"=r"(reg)) 316 292 #define CP15_WRITE_TTBR0(reg) Asm("mcr p15, 0, %0, c2, c0, 0"::"r"(reg)) 317 293 318 /* ãã¡ã¤ã³ã¢ã¯ã»ã¹å¶å¾¡ã¬ã¸ã¹ã¿*/294 /* ドメインアクセス制御レジスタ */ 319 295 #define CP15_WRITE_DACR(reg) Asm("mcr p15, 0, %0, c3, c0, 0":: "r"(reg)) 320 296 321 /* ã³ã³ããã¹ãIDã¬ã¸ã¹ã¿ï¼ARMv6以éï¼*/297 /* コンテキストIDレジスタ(ARMv6以降)*/ 322 298 #if __TARGET_ARCH_ARM >= 6 323 299 #define CP15_WRITE_CONTEXTIDR(reg) Asm("mcr p15, 0, %0, c13, c0, 1" ::"r"(reg)) … … 325 301 326 302 /* 327 * CP15ã«ããTLBæä½ãã¯ãï¼VMSAï¼ 328 */ 329 330 /* TLBå 331 ¨ä½ã®ç¡å¹å */ 303 * CP15によるTLB操作マクロ(VMSA) 304 */ 305 306 /* TLB全体の無効化 */ 332 307 #define CP15_INVALIDATE_TLB() Asm("mcr p15, 0, %0, c8, c7, 0"::"r"(0)) 333 308 334 309 /* 335 * CP15 ã®ããã©ã¼ãã³ã¹ã¢ãã¿æä½ãã¯ãï¼ARMv7ã®ã¿ï¼310 * CP15のパフォーマンスモニタ操作マクロ(ARMv7のみ) 336 311 */ 337 312 #if __TARGET_ARCH_ARM == 7 338 313 339 /* ããã©ã¼ãã³ã¹ã¢ãã¿å¶å¾¡ã¬ã¸ã¹ã¿*/314 /* パフォーマンスモニタ制御レジスタ */ 340 315 #define CP15_READ_PMCR(reg) Asm("mrc p15, 0, %0, c9, c12, 0":"=r"(reg)) 341 316 #define CP15_WRITE_PMCR(reg) Asm("mcr p15, 0, %0, c9, c12, 0"::"r"(reg)) 342 317 343 /* ããã©ã¼ãã³ã¹ã¢ãã¿ã«ã¦ã³ãã¤ãã¼ãã«ã»ããã¬ã¸ã¹ã¿*/318 /* パフォーマンスモニタカウントイネーブルセットレジスタ */ 344 319 #define CP15_READ_PMCNTENSET(reg) Asm("mrc p15, 0, %0, c9, c12, 1":"=r"(reg)) 345 320 #define CP15_WRITE_PMCNTENSET(reg) Asm("mcr p15, 0, %0, c9, c12, 1"::"r"(reg)) 346 321 347 /* ããã©ã¼ãã³ã¹ã¢ãã¿ã«ã¦ã³ã¿ãµã¤ã¯ã«ã¬ã¸ã¹ã¿*/322 /* パフォーマンスモニタカウンタサイクルレジスタ */ 348 323 #define CP15_READ_PMCCNTR(reg) Asm("mrc p15, 0, %0, c9, c13, 0":"=r"(reg)) 349 324 #define CP15_WRITE_PMCCNTR(reg) Asm("mcr p15, 0, %0, c9, c13, 0"::"r"(reg)) … … 352 327 353 328 /* 354 * CP15 ã«ããã¡ã¢ãªããªã¢æä½ãã¯ã329 * CP15によるメモリバリア操作マクロ 355 330 */ 356 331 #define CP15_INST_SYNC_BARRIER() \ … … 362 337 363 338 /* 364 * ã¡ã¢ãªããªã¢ 365 * 366 * ARMv6ã¨ARMv7ãæã¤3ã¤ã®ã¡ã¢ãªããªã¢æ©è½ã使ç¨ããããã®é¢æ°ï¼ã¡ã¢ãª 367 * ããªã¢ã¯ï¼ARMv7ã§ã¯å°ç¨å½ä»¤ï¼ARMv6ã§ã¯CP15ã¸ã®æ¸è¾¼ã¿ã§å®ç¾ãããï¼ 368 * ARMv7ã®ã¡ã¢ãªããªã¢å½ä»¤ã¯ï¼åæãåãç¯å²ãæå®ã§ãããï¼ä»¥ä¸ã®é¢æ° 369 * ã§ã¯æ大ç¯å²ï¼ã·ã¹ãã å 370 ¨ä½ï¼ãªã¼ãï¼ã©ã¤ãã®ä¸¡æ¹ï¼ã§åæãåãï¼ 371 * 372 * ARMv5以åã§ã¯ï¼ã¡ã¢ãªããªã¢æ©è½ã¯å®è£ 373 ä¾åã§ããããï¼ããããï¼ 374 * DATA_MEMORY_BARRIERï¼DATA_SYNC_BARRIERï¼INST_SYNC_BARRIERãå®ç¾©ãã 375 * ãã¨ã«ãã£ã¦ï¼é¢æ°ã®å 376 容ãå 377 ¥ãæããããããã«ãã¦ããï¼ 378 */ 379 380 /* 381 * ãã¼ã¿ã¡ã¢ãªããªã¢ 382 * 383 * ãã®ããªã¢ã®åå¾ã§ï¼ã¡ã¢ãªã¢ã¯ã»ã¹ã®é åºãå 384 ¥ãæãããªãããã«ããï¼ 385 * ãã«ãã³ã¢ï¼å³å¯ã«ã¯ãã«ããã¹ã¿ï¼ã§ã®ä½¿ç¨ãæ³å®ããå½ä»¤ï¼ 339 * メモリバリア 340 * 341 * ARMv6とARMv7が持つ3つのメモリバリア機能を使用するための関数.メモリ 342 * バリアは,ARMv7では専用命令,ARMv6ではCP15への書込みで実現される. 343 * ARMv7のメモリバリア命令は,同期を取る範囲を指定できるが,以下の関数 344 * では最大範囲(システム全体,リード/ライトの両方)で同期を取る. 345 * 346 * ARMv5以前では,メモリバリア機能は実装依存であるため,それぞれ, 347 * DATA_MEMORY_BARRIER,DATA_SYNC_BARRIER,INST_SYNC_BARRIERを定義する 348 * ことによって,関数の内容を入れ換えられるようにしている. 349 */ 350 351 /* 352 * データメモリバリア 353 * 354 * このバリアの前後で,メモリアクセスの順序が入れ換わらないようにする. 355 * マルチコア(厳密にはマルチマスタ)での使用を想定した命令. 386 356 */ 387 357 Inline void … … 398 368 399 369 /* 400 * ãã¼ã¿åæããªã¢ 401 * 402 * å 403 è¡ããã¡ã¢ãªã¢ã¯ã»ã¹ãå®äºããã®ãå¾ 404 ã¤ï¼ã¡ã¢ãªã¢ã¯ã»ã¹ãå¯ä½ç¨ã 405 * æã¤æã«ï¼ãã®å¯ä½ç¨ãèµ·ããã®ãå¾ 406 ã¤ããã®ä½¿ç¨ãæ³å®ããå½ä»¤ï¼ 370 * データ同期バリア 371 * 372 * 先行するメモリアクセスが完了するのを待つ.メモリアクセスが副作用を 373 * 持つ時に,その副作用が起こるのを待つための使用を想定した命令. 407 374 */ 408 375 Inline void … … 419 386 420 387 /* 421 * å½ä»¤åæããªã¢ 422 * 423 * ããã°ã©ã ãæ¸ãæããããï¼ã¾ãã¯ï¼ã·ã¹ãã ç¶æ 424 ã®å¤åã«ããå®è¡ã 425 * ã¹ãããã°ã©ã ãå¤ãã£ãï¼æã«ï¼ãã¤ãã©ã¤ã³ããã©ãã·ã¥ãããªã©ï¼ 426 * æ°ããããã°ã©ã ãèªã¿è¾¼ãããã«ããï¼ARMv6ã§ã¯ï¼ããªãã§ãããã©ã 427 * ã·ã¥ã¨å¼ã°ãã¦ããï¼ 388 * 命令同期バリア 389 * 390 * プログラムが書き換えられた(または,システム状態の変化により実行す 391 * べきプログラムが変わった)時に,パイプラインをフラッシュするなど, 392 * 新しいプログラムを読み込むようにする.ARMv6では,プリフェッチフラッ 393 * シュと呼ばれている. 428 394 */ 429 395 Inline void … … 440 406 441 407 /* 442 * CP15 ã®ã»ãã¥ãªãã£æ¡å¼µã¬ã¸ã¹ã¿æä½ãã¯ãï¼ARMv7ã®ã¿ï¼408 * CP15のセキュリティ拡張レジスタ操作マクロ(ARMv7のみ) 443 409 */ 444 410 #if __TARGET_ARCH_ARM == 7 445 411 446 /* ãã¯ã¿ãã¼ã¹ã¢ãã¬ã¹ã¬ã¸ã¹ã¿*/412 /* ベクタベースアドレスレジスタ */ 447 413 #define CP15_READ_VBAR(reg) Asm("mrc p15, 0, %0, c12, c0, 0":"=r"(reg)) 448 414 #define CP15_WRITE_VBAR(reg) Asm("mcr p15, 0, %0, c12, c0, 0"::"r"(reg)) -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_cfg1_out.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 1 1 /* 2 * cfg1_out.cã®ãªã³ã¯ã«å¿ 3 è¦ãªã¹ã¿ãã®å®ç¾© 2 * cfg1_out.cのリンクに必要なスタブの定義 4 3 * 5 4 * $Id$ … … 7 6 8 7 /* 9 * cfg1_out.cã®ãªã³ã¯ã«å¿ 10 è¦ãªå®ç¾© 8 * cfg1_out.cのリンクに必要な定義 11 9 */ 12 10 … … 17 15 18 16 /* 19 * offset.h ãçæããããã®å®ç¾©17 * offset.hを生成するための定義 20 18 */ 21 19 const uint8_t MAGIC_1 = 0x12; -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_check.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼3 # パス3の生成スクリプトのコア依存部(ARM用) 4 4 # 5 # $Id : core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro$5 # $Id$ 6 6 # 7 7 8 8 # 9 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã9 # ターゲット非依存部のインクルード 10 10 # 11 11 IncludeTrb("kernel/kernel_check.trb") 12 12 13 13 # 14 # å²è¾¼ã¿ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯14 # 割込みハンドラテーブルに関するチェック 15 15 # 16 # DEF_INH ã§ç»é²ããå²è¾¼ã¿ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼ã³ã³ãã£17 # ã®ã¥ã¬ã¼ã¿ã§çæããå²è¾¼ã¿ãã³ãã©ãï¼default_int_handlerã®ãã§ãã¯ã¯18 # è¡ããªãï¼16 # DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ 17 # ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは 18 # 行わない. 19 19 # 20 20 inhTable = SYMBOL("_kernel_inh_table") … … 23 23 inthdr = PEEK(inhTable + offset + params[:inhno] * $sizeof_FP, $sizeof_FP) 24 24 25 # å²è¾¼ã¿ãã³ãã©ã®å 26 é çªå°ã®ãã§ãã¯ï¼»NGKI3056ï¼½ 25 # 割込みハンドラの先頭番地のチェック[NGKI3056] 27 26 if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0 28 27 error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned") … … 34 33 35 34 # 36 # CPU ä¾å¤ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯35 # CPU例外ハンドラテーブルに関するチェック 37 36 # 38 # DEF_EXC ã§ç»é²ããCPUä¾å¤ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼39 # default_exc_handler ã®ãã§ãã¯ã¯è¡ããªãï¼37 # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと, 38 # default_exc_handlerのチェックは行わない. 40 39 # 41 40 excTable = SYMBOL("_kernel_exc_table") … … 43 42 exchdr = PEEK(excTable + params[:excno] * $sizeof_FP, $sizeof_FP) 44 43 45 # CPUä¾å¤ãã³ãã©ã®å 46 é çªå°ã®ãã§ãã¯ï¼»NGKI3135ï¼½ 44 # CPU例外ハンドラの先頭番地のチェック[NGKI3135] 47 45 if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0 48 46 error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned") -
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * kernel.h ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼44 * kernel.hのコア依存部(ARM用) 60 45 * 61 * ãã®ããããã¡ã¤ã«ã¯ï¼target_kernel.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ã62 * ããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤63 * ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼46 * このヘッダファイルは,target_kernel.h(または,そこからインクルード 47 * されるファイル)のみからインクルードされる.他のファイルから直接イ 48 * ンクルードしてはならない. 64 49 */ 65 50 … … 68 53 69 54 /* 70 * ã¹ã¿ãã¯ã®å55 * スタックの型 71 56 * 72 * ARMã§ã¯ï¼ã¹ã¿ãã¯ã8ãã¤ãå¢çã«é 73 ç½®ããå¿ 74 è¦ãããï¼ 57 * ARMでは,スタックを8バイト境界に配置する必要がある. 75 58 */ 76 59 #define TOPPERS_STK_T long long 77 60 78 61 /* 79 * CPU ä¾å¤ãã³ãã©çªå·ã®æ°62 * CPU例外ハンドラ番号の数 80 63 */ 81 64 #define TNUM_EXCNO 6 82 65 83 66 /* 84 * CPU ä¾å¤ãã³ãã©çªå·ã®å®ç¾©67 * CPU例外ハンドラ番号の定義 85 68 */ 86 69 #define EXCNO_UNDEF 0 … … 94 77 95 78 /* 96 * CPUä¾å¤ã®æ 97 å ±ãè¨æ¶ãã¦ããã¡ã¢ãªé åã®æ§é 79 * CPU例外の情報を記憶しているメモリ領域の構造 98 80 */ 99 81 #if __TARGET_ARCH_ARM < 6 100 82 101 83 typedef struct t_excinf { 102 uint32_t nest_count; /* ä¾å¤ãã¹ãã«ã¦ã³ã */ 103 uint32_t intpri; /* å²è¾¼ã¿åªå 104 度ãã¹ã¯ */ 105 uint32_t cpsr; /* CPUä¾å¤çºçæã®CPSR */ 84 uint32_t nest_count; /* 例外ネストカウント */ 85 uint32_t intpri; /* 割込み優先度マスク */ 86 uint32_t cpsr; /* CPU例外発生時のCPSR */ 106 87 uint32_t r0; 107 88 uint32_t r1; … … 112 93 uint32_t r12; 113 94 uint32_t lr; 114 uint32_t pc; /* æ»ãçªå°*/95 uint32_t pc; /* 戻り番地 */ 115 96 } T_EXCINF; 116 97 … … 118 99 119 100 typedef struct t_excinf { 120 uint32_t nest_count; /* ä¾å¤ãã¹ãã«ã¦ã³ã */ 121 uint32_t intpri; /* å²è¾¼ã¿åªå 122 度ãã¹ã¯ */ 101 uint32_t nest_count; /* 例外ネストカウント */ 102 uint32_t intpri; /* 割込み優先度マスク */ 123 103 uint32_t r0; 124 104 uint32_t r1; … … 129 109 uint32_t r12; 130 110 uint32_t lr; 131 uint32_t pc; /* æ»ãçªå°*/132 uint32_t cpsr; /* CPU ä¾å¤çºçæã®CPSR */111 uint32_t pc; /* 戻り番地 */ 112 uint32_t cpsr; /* CPU例外発生時のCPSR */ 133 113 } T_EXCINF; 134 114 -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 9 9 # Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 # 11 # ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 # å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 # ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 # è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 # ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 # ã¨ï¼ 30 # (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 # (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 # å ±åãããã¨ï¼ 38 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 # 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 # å 46 責ãããã¨ï¼ 11 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 # スコード中に含まれていること. 17 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 # の無保証規定を掲載すること. 21 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 # と. 24 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 # 報告すること. 28 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 # 免責すること. 47 33 # 48 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 # ã®è²¬ä»»ãè² ããªãï¼ 34 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 # の責任を負わない. 54 39 # 55 # $Id : core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro$40 # $Id$ 56 41 # 57 42 58 43 # 59 # ãã¹2ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼44 # パス2の生成スクリプトのコア依存部(ARM用) 60 45 # 61 46 62 47 # 63 # æå¹ãªCPUä¾å¤ãã³ãã©çªå·48 # 有効なCPU例外ハンドラ番号 64 49 # 65 50 $EXCNO_VALID = [ 0, 1, 2, 3, 4, 5 ] 66 51 67 52 # 68 # DEF_EXC ã§ä½¿ç¨ã§ããCPUä¾å¤ãã³ãã©çªå·53 # DEF_EXCで使用できるCPU例外ハンドラ番号 69 54 # 70 55 $EXCNO_DEFEXC_VALID = [ 0, 1, 2, 3, 5 ] 71 56 72 57 # 73 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã58 # ターゲット非依存部のインクルード 74 59 # 75 60 IncludeTrb("kernel/kernel.trb") 76 61 77 62 # 78 # å²è¾¼ã¿ãã³ãã©ãã¼ãã«63 # 割込みハンドラテーブル 79 64 # 80 65 $kernelCfgC.comment_header("Interrupt Handler Table") … … 94 79 95 80 # 96 # å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«81 # 割込み要求ライン設定テーブル 97 82 # 98 83 if $USE_INTCFG_TABLE … … 114 99 115 100 # 116 # CPU ä¾å¤ãã³ãã©ãã¼ãã«101 # CPU例外ハンドラテーブル 117 102 # 118 103 $kernelCfgC.comment_header("CPU Exception Handler Table") -
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel_impl.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã«ã¼ãã«ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼44 * カーネルのコア依存部(ARM用) 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ã³ã³ããã¹ãåç 69 §ã®ããã®å¤æ° 70 */ 71 uint32_t excpt_nest_count; /* ä¾å¤ãã¹ãã«ã¦ã³ã */ 72 73 /* 74 * MMUé¢é£ã®æä½ï¼VMSAï¼ 53 * コンテキスト参照のための変数 54 */ 55 uint32_t excpt_nest_count; /* 例外ネストカウント */ 56 57 /* 58 * MMU関連の操作(VMSA) 75 59 */ 76 60 #ifdef USE_ARM_MMU 77 61 78 #define CP15_DACR_D0_CLIENT 0x01U /* å¤æãã¼ãã«ã«å¾ããã¡ã¤ã³0ã«ã¢ã¯ã»ã¹*/79 #define DEFAULT_ASID 1 /* 使ç¨ããASID */80 81 /* 82 * ã»ã¯ã·ã§ã³ãã¼ãã«62 #define CP15_DACR_D0_CLIENT 0x01U /* 変換テーブルに従いドメイン0にアクセス */ 63 #define DEFAULT_ASID 1 /* 使用するASID */ 64 65 /* 66 * セクションテーブル 83 67 */ 84 68 static uint32_t section_table[ARM_SECTION_TABLE_ENTRY] … … 86 70 87 71 /* 88 * MMU ã®ã»ã¯ã·ã§ã³ãã¼ãã«ã¨ã³ããªã®è¨å®72 * MMUのセクションテーブルエントリの設定 89 73 */ 90 74 Inline void … … 121 105 122 106 /* 123 * MMU ã®åæå107 * MMUの初期化 124 108 */ 125 109 void … … 130 114 131 115 /* 132 * MMU ã®ã»ã¯ã·ã§ã³ãã¼ãã«ã®è¨å®116 * MMUのセクションテーブルの設定 133 117 */ 134 118 for (i = 0; i < ARM_SECTION_TABLE_ENTRY; i++) { … … 140 124 141 125 /* 142 * TTBR0 ãç¨ããããã«æå®ï¼ARMv6以éï¼126 * TTBR0を用いるように指定(ARMv6以降) 143 127 */ 144 128 #if __TARGET_ARCH_ARM >= 6 … … 147 131 148 132 /* 149 * å¤æãã¼ãã«ã¨ãã¦ï¼section_tableã使ç¨ããï¼133 * 変換テーブルとして,section_tableを使用する. 150 134 */ 151 135 reg = ((uint32_t) &(section_table[0])) | TTBR_CONFIG; … … 153 137 154 138 /* 155 * ãã¡ã¤ã³ã¢ã¯ã»ã¹å¶å¾¡ã®è¨å®139 * ドメインアクセス制御の設定 156 140 */ 157 141 CP15_WRITE_DACR(CP15_DACR_D0_CLIENT); 158 142 159 143 /* 160 * ASID ã®è¨å®144 * ASIDの設定 161 145 */ 162 146 #if __TARGET_ARCH_ARM >= 6 … … 165 149 166 150 /* 167 * TLBå 168 ¨ä½ã®ç¡å¹å 151 * TLB全体の無効化 169 152 */ 170 153 arm_invalidate_tlb(); 171 154 172 155 /* 173 * MMU ãæå¹ã«ããï¼ARMv6ã§ã¯ï¼æ¡å¼µãã¼ã¸ãã¼ãã«è¨å®ã使ãï¼ãµã174 * ãã¼ã¸ã¯ä½¿ããªãï¼ããã«è¨å®ããï¼156 * MMUを有効にする.ARMv6では,拡張ページテーブル設定を使う(サブ 157 * ページは使わない)ように設定する. 175 158 */ 176 159 CP15_READ_SCTLR(reg); … … 187 170 188 171 /* 189 * ã³ã¢ä¾åã®åæå172 * コア依存の初期化 190 173 */ 191 174 void … … 193 176 { 194 177 /* 195 * ã«ã¼ãã«èµ·åæã¯éã¿ã¹ã¯ã³ã³ããã¹ãã¨ãã¦åä½ãããããã«ï¼ä¾å¤196 * ã®ãã¹ãåæ°ã1ã«åæåããï¼178 * カーネル起動時は非タスクコンテキストとして動作させるために,例外 179 * のネスト回数を1に初期化する. 197 180 */ 198 181 excpt_nest_count = 1U; 199 182 200 183 /* 201 * MMU ãæå¹ã«184 * MMUを有効に 202 185 */ 203 186 #ifdef USE_ARM_MMU … … 206 189 207 190 /* 208 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®åæå191 * パフォーマンスモニタの初期化 209 192 */ 210 193 #if defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7 … … 214 197 215 198 /* 216 * ã³ã¢ä¾åã®çµäºå¦ç199 * コア依存の終了処理 217 200 */ 218 201 void … … 222 205 223 206 /* 224 * CPU ä¾å¤ã®çºçç¶æ³ã®ãã°åºå207 * CPU例外の発生状況のログ出力 225 208 */ 226 209 #ifndef OMIT_XLOG_SYS 227 210 228 211 /* 229 * CPUä¾å¤ãã³ãã©ã®ä¸ããï¼CPUä¾å¤æ 230 å ±ãã¤ã³ã¿ï¼p_excinfï¼ãå¼æ°ã¨ã 231 * ã¦å¼ã³åºããã¨ã§ï¼CPUä¾å¤ã®çºçç¶æ³ãã·ã¹ãã ãã°ã«åºåããï¼ 212 * CPU例外ハンドラの中から,CPU例外情報ポインタ(p_excinf)を引数とし 213 * て呼び出すことで,CPU例外の発生状況をシステムログに出力する. 232 214 */ 233 215 void … … 246 228 247 229 /* 248 * ããªãã§ããï¼ãã¼ã¿ã¢ãã¼ããçºçããç¶æ³ï¼ç¶æ 249 ã¨ã¢ãã¬ã¹ï¼ãã·ã¹ 250 * ãã ãã°ã«åºåããï¼ 230 * プリフェッチ/データアボートが発生した状況(状態とアドレス)をシス 231 * テムログに出力する. 251 232 */ 252 233 void … … 282 263 283 264 /* 284 * æªå®ç¾©ã®å²è¾¼ã¿ãå 285 ¥ã£ãå ´åã®å¦ç 265 * 未定義の割込みが入った場合の処理 286 266 */ 287 267 #ifndef OMIT_DEFAULT_INT_HANDLER … … 297 277 298 278 /* 299 * æªå®ç¾©ã®ä¾å¤ãå 300 ¥ã£ãå ´åã®å¦ç 279 * 未定義の例外が入った場合の処理 301 280 */ 302 281 #ifndef OMIT_DEFAULT_EXC_HANDLER -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel_impl.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 33 * 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * kernel_impl.h ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼60 * 61 * ãã®ããããã¡ã¤ã«ã¯ï¼target_kernel_impl.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯62 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã63 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼44 * kernel_impl.hのコア依存部(ARM用) 45 * 46 * このヘッダファイルは,target_kernel_impl.h(または,そこからインク 47 * ルードされるファイル)のみからインクルードされる.他のファイルから 48 * 直接インクルードしてはならない. 64 49 */ 65 50 … … 70 55 71 56 /* 72 * ã¨ã©ã¼ãã§ãã¯æ¹æ³ã®æå®73 */ 74 #define CHECK_STKSZ_ALIGN 8 /* ã¹ã¿ãã¯ãµã¤ãºã®ã¢ã©ã¤ã³åä½*/75 #define CHECK_INTPTR_ALIGN 4 /* intptr_t åã®å¤æ°ã®ã¢ã©ã¤ã³åä½*/76 #define CHECK_INTPTR_NONNULL /* intptr_t åã®å¤æ°ã®éNULLãã§ãã¯*/57 * エラーチェック方法の指定 58 */ 59 #define CHECK_STKSZ_ALIGN 8 /* スタックサイズのアライン単位 */ 60 #define CHECK_INTPTR_ALIGN 4 /* intptr_t型の変数のアライン単位 */ 61 #define CHECK_INTPTR_NONNULL /* intptr_t型の変数の非NULLチェック */ 77 62 #ifndef __thumb__ 78 #define CHECK_FUNC_ALIGN 4 /* é¢æ°ã®ã¢ã©ã¤ã³åä½*/63 #define CHECK_FUNC_ALIGN 4 /* 関数のアライン単位 */ 79 64 #endif /* __thumb__ */ 80 #define CHECK_FUNC_NONNULL /* é¢æ°ã®éNULLãã§ãã¯*/81 #define CHECK_STACK_ALIGN 8 /* ã¹ã¿ãã¯é åã®ã¢ã©ã¤ã³åä½*/82 #define CHECK_STACK_NONNULL /* ã¹ã¿ãã¯é åã®éNULLãã§ãã¯*/83 #define CHECK_MPF_ALIGN 4 /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®ã¢ã©ã¤ã³åä½*/84 #define CHECK_MPF_NONNULL /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®éNULLãã§ãã¯*/85 #define CHECK_MB_ALIGN 4 /* 管çé åã®ã¢ã©ã¤ã³åä½*/65 #define CHECK_FUNC_NONNULL /* 関数の非NULLチェック */ 66 #define CHECK_STACK_ALIGN 8 /* スタック領域のアライン単位 */ 67 #define CHECK_STACK_NONNULL /* スタック領域の非NULLチェック */ 68 #define CHECK_MPF_ALIGN 4 /* 固定長メモリプール領域のアライン単位 */ 69 #define CHECK_MPF_NONNULL /* 固定長メモリプール領域の非NULLチェック */ 70 #define CHECK_MB_ALIGN 4 /* 管理領域のアライン単位 */ 86 71 87 72 #ifndef TOPPERS_MACRO_ONLY 88 73 89 74 /* 90 * ã¬ãã£ãã¥ã¼ãµã¼ãã®ããã®ãããããããµã¼ãé¢æ° 91 * 92 * CLZå½ä»¤ã¯æä¸ä½ããããããµã¼ãããããï¼æä¸ä½ããããæé«åªå 93 度㫠94 * 対å¿ãããï¼ 75 * レディキューサーチのためのビットマップサーチ関数 76 * 77 * CLZ命令は最上位ビットからサーチするため,最上位ビットを最高優先度に 78 * 対応させる. 95 79 */ 96 80 #if __TARGET_ARCH_ARM >= 6 … … 108 92 109 93 /* 110 * ã³ã³ããã¹ãã®åç 111 § 112 * 113 * ARMä¾åé¨ã§ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã¨éã¿ã¹ã¯ã³ã³ããã¹ãã®ä¸¡æ¹ãã¹ã¼ 114 * ããã¤ã¶ã¢ã¼ãã§åä½ãããããï¼ããã»ããµã¢ã¼ãã§å¤æãããã¨ã㧠115 * ããªãï¼ãã®ããï¼å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ã®ãã¹ã段æ°ï¼ãã 116 * ãï¼ä¾å¤ãã¹ãã«ã¦ã³ãã¨å¼ã¶ï¼ã§ç®¡çãï¼ä¾å¤ãã¹ãã«ã¦ã³ãã0ã®æã« 117 * ã¿ã¹ã¯ã³ã³ããã¹ãï¼0ãã大ããå ´åã«éã¿ã¹ã¯ã³ã³ããã¹ãã§ããã¨å¤ 118 * æããï¼ 119 */ 120 extern uint32_t excpt_nest_count; /* ä¾å¤ãã¹ãã«ã¦ã³ã */ 94 * コンテキストの参照 95 * 96 * ARM依存部では,タスクコンテキストと非タスクコンテキストの両方をスー 97 * パバイザモードで動作させるため,プロセッサモードで判断することがで 98 * きない.そのため,割込みハンドラ/CPU例外ハンドラのネスト段数(これ 99 * を,例外ネストカウントと呼ぶ)で管理し,例外ネストカウントが0の時に 100 * タスクコンテキスト,0より大きい場合に非タスクコンテキストであると判 101 * 断する. 102 */ 103 extern uint32_t excpt_nest_count; /* 例外ネストカウント */ 121 104 122 105 Inline bool_t … … 129 112 130 113 /* 131 * TOPPERSæ¨æºå²è¾¼ã¿å¦çã¢ãã«ã®å®ç¾ 132 * 133 * ARMã³ã¢ä¾åé¨ã§ã¯ï¼å²è¾¼ã¿ã®æ±ãã«é¢ãã¦ï¼æ¬¡ã®2ã¤ã®æ¹æ³ããµãã¼ãã 134 * ãï¼ 135 * 136 * (1) ã«ã¼ãã«ãåä½ã§ä½¿ç¨ããå ´åãSafeGã®ãã³ã»ãã¥ã¢ã¢ã¼ãã§ä½¿ç¨ã 137 * ãå ´åï¼IRQãã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ï¼FIQãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¨ã 138 * ãï¼ããã©ã«ãã§ã¯ï¼ãã®æ¹æ³ã使ç¨ãããï¼ 139 * 140 * (2) SafeGã®ã»ãã¥ã¢ã¢ã¼ãã§ä½¿ç¨ããå ´åï¼FIQãã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ 141 * ã¨ãï¼ã«ã¼ãã«ã®åä½ä¸ã¯IRQã常ã«ãã¹ã¯ããï¼ãã®æ¹æ³ã使ç¨ããå ´å 142 * ã«ã¯ï¼TOPPERS_SAFEG_SECUREããã¯ãå®ç¾©ããï¼ 143 * 144 * TOPPERSæ¨æºå²è¾¼ã¿å¦çã¢ãã«ã®ä¸ã§ï¼å²è¾¼ã¿åªå 145 度ãã¹ã¯ã¨å²è¾¼ã¿è¦æ±ç¦ 146 * æ¢ãã©ã°ã«é¢ãã¦ã¯ï¼å²è¾¼ã¿ã³ã³ããã¼ã©ã«ãã£ã¦å®ç¾æ¹æ³ãç°ãªãããï¼ 147 * ARMã³ã¢ä¾åé¨ã§ã¯æ±ããªãï¼ 148 */ 149 150 /* 151 * FIQã¨IRQã®ä¸¡æ¹ãç¦æ¢ããCPSRã®ããããã¿ã¼ã³ 114 * TOPPERS標準割込み処理モデルの実現 115 * 116 * ARMコア依存部では,割込みの扱いに関して,次の2つの方法をサポートす 117 * る. 118 * 119 * (1) カーネルを単体で使用する場合やSafeGのノンセキュアモードで使用す 120 * る場合:IRQをカーネル管理の割込み,FIQをカーネル管理外の割込みとす 121 * る.デフォルトでは,この方法が使用される. 122 * 123 * (2) SafeGのセキュアモードで使用する場合:FIQをカーネル管理の割込み 124 * とし,カーネルの動作中はIRQを常にマスクする.この方法を使用する場合 125 * には,TOPPERS_SAFEG_SECUREをマクロ定義する. 126 * 127 * TOPPERS標準割込み処理モデルの中で,割込み優先度マスクと割込み要求禁 128 * 止フラグに関しては,割込みコントローラによって実現方法が異なるため, 129 * ARMコア依存部では扱わない. 130 */ 131 132 /* 133 * FIQとIRQの両方を禁止するCPSRのビットパターン 152 134 */ 153 135 #ifndef TOPPERS_MACRO_ONLY … … 158 140 159 141 /* 160 * CPUããã¯ã»å²è¾¼ã¿ããã¯ã§ãªãç¶æ 161 ã§ã®CPSRã®ããããã¿ã¼ã³ 142 * CPUロック・割込みロックでない状態でのCPSRのビットパターン 162 143 */ 163 144 #ifndef TOPPERS_SAFEG_SECURE … … 168 149 169 150 /* 170 * CPUããã¯ç¶æ 171 ã§ã®CPSRã®ããããã¿ã¼ã³ 151 * CPUロック状態でのCPSRのビットパターン 172 152 */ 173 153 #ifndef TOPPERS_SAFEG_SECURE … … 178 158 179 159 /* 180 * å²è¾¼ã¿ããã¯ç¶æ 181 ã§ã®CPSRã®ããããã¿ã¼ã³ 160 * 割込みロック状態でのCPSRのビットパターン 182 161 */ 183 162 #define CPSR_INTLOCK CPSR_FIQ_IRQ_BIT … … 186 165 187 166 /* 188 * CPUããã¯ç¶æ 189 ã¸ã®é·ç§» 167 * CPUロック状態への遷移 190 168 */ 191 169 Inline void … … 203 181 204 182 /* 205 * ã¡ã¢ãªåç 206 §ãï¼ãã®é¢æ°ãè¶ 207 ãã¦æé©åããããã¨ãææ¢ 183 * メモリ参照が,この関数を超えて最適化されることを抑止 208 184 */ 209 185 ARM_MEMORY_CHANGED; … … 211 187 212 188 /* 213 * CPUããã¯ç¶æ 214 ã¸ã®ç§»è¡ï¼ãã£ã¹ãããã§ããç¶æ 215 ï¼ 189 * CPUロック状態への移行(ディスパッチできる状態) 216 190 */ 217 191 #define lock_cpu_dsp() lock_cpu() 218 192 219 193 /* 220 * CPUããã¯ç¶æ 221 ã®è§£é¤ 194 * CPUロック状態の解除 222 195 */ 223 196 Inline void … … 225 198 { 226 199 /* 227 * ã¡ã¢ãªåç 228 §ãï¼ãã®é¢æ°ãè¶ 229 ãã¦æé©åããããã¨ãææ¢ 200 * メモリ参照が,この関数を超えて最適化されることを抑止 230 201 */ 231 202 ARM_MEMORY_CHANGED; … … 243 214 244 215 /* 245 * CPUããã¯ç¶æ 246 ã®è§£é¤ï¼ãã£ã¹ãããã§ããç¶æ 247 ï¼ 216 * CPUロック状態の解除(ディスパッチできる状態) 248 217 */ 249 218 #define unlock_cpu_dsp() unlock_cpu() 250 219 251 220 /* 252 * CPUããã¯ç¶æ 253 ã®åç 254 § 221 * CPUロック状態の参照 255 222 */ 256 223 Inline bool_t … … 265 232 266 233 /* 267 * å²è¾¼ã¿ãåãä»ããããã®é 268 延å¦ç 234 * 割込みを受け付けるための遅延処理 269 235 */ 270 236 Inline void … … 274 240 275 241 /* 276 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯åæå¤242 * 非タスクコンテキスト用のスタック初期値 277 243 */ 278 244 #define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz))) 279 245 280 246 /* 281 * ã¿ã¹ã¯ã³ã³ããã¹ããããã¯ã®å®ç¾©247 * タスクコンテキストブロックの定義 282 248 */ 283 249 typedef struct task_context_block { 284 void *sp; /* ã¹ã¿ãã¯ãã¤ã³ã¿*/285 FP pc; /* å®è¡åéçªå°*/250 void *sp; /* スタックポインタ */ 251 FP pc; /* 実行再開番地 */ 286 252 } TSKCTXB; 287 253 288 254 /* 289 * ã¿ã¹ã¯ãã£ã¹ããã㣠290 */ 291 292 /* 293 * æé«åªå 294 é ä½ã¿ã¹ã¯ã¸ã®ãã£ã¹ãããï¼core_support.Sï¼ 295 * 296 * dispatchã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãããå¼ã³åºããããµã¼ãã¹ã³ã¼ã«å¦çã 297 * ãå¼ã³åºãã¹ããã®ã§ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã»CPUããã¯ç¶æ 298 ã»ãã£ã¹ãã 299 * ã許å¯ç¶æ 300 ã»ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 301 度ãã¹ã¯å 302 ¨è§£é¤ç¶æ 303 ã§å¼ã³åºã㪠304 * ããã°ãªããªãï¼ 255 * タスクディスパッチャ 256 */ 257 258 /* 259 * 最高優先順位タスクへのディスパッチ(core_support.S) 260 * 261 * dispatchは,タスクコンテキストから呼び出されたサービスコール処理か 262 * ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ 263 * チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな 264 * ければならない. 305 265 */ 306 266 extern void dispatch(void); 307 267 308 268 /* 309 * éã¿ã¹ã¯ã³ã³ããã¹ãããã®ãã£ã¹ãããè¦æ±269 * 非タスクコンテキストからのディスパッチ要求 310 270 */ 311 271 #define request_dispatch() 312 272 313 273 /* 314 * ãã£ã¹ãããã£ã®åä½éå§ï¼core_support.Sï¼ 315 * 316 * start_dispatchã¯ï¼ã«ã¼ãã«èµ·åæã«å¼ã³åºãã¹ããã®ã§ï¼ãã¹ã¦ã®å²è¾¼ 317 * ã¿ãç¦æ¢ããç¶æ 318 ï¼å²è¾¼ã¿ããã¯ç¶æ 319 ã¨åçã®ç¶æ 320 ï¼ã§å¼ã³åºããªããã° 321 * ãªããªãï¼ 274 * ディスパッチャの動作開始(core_support.S) 275 * 276 * start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込 277 * みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ 278 * ならない. 322 279 */ 323 280 extern void start_dispatch(void) NoReturn; 324 281 325 282 /* 326 * ç¾å¨ã®ã³ã³ããã¹ããæ¨ã¦ã¦ãã£ã¹ãããï¼core_support.Sï¼ 327 * 328 * exit_and_dispatchã¯ï¼ext_tskããå¼ã³åºãã¹ããã®ã§ï¼ã¿ã¹ã¯ã³ã³ãã 329 * ã¹ãã»CPUããã¯ç¶æ 330 ã»ãã£ã¹ããã許å¯ç¶æ 331 ã»ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 332 333 * 度ãã¹ã¯å 334 ¨è§£é¤ç¶æ 335 ã§å¼ã³åºããªããã°ãªããªãï¼ 283 * 現在のコンテキストを捨ててディスパッチ(core_support.S) 284 * 285 * exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ 286 * スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先 287 * 度マスク全解除状態で呼び出さなければならない. 336 288 */ 337 289 extern void exit_and_dispatch(void) NoReturn; 338 290 339 291 /* 340 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºãï¼core_support.Sï¼341 * 342 * call_exit_kernel ã¯ï¼ã«ã¼ãã«ã®çµäºæã«å¼ã³åºãã¹ããã®ã§ï¼éã¿ã¹ã¯343 * ã³ã³ããã¹ãã«åãæãã¦ï¼ã«ã¼ãã«ã®çµäºå¦çï¼exit_kernelï¼ãå¼ã³åº344 * ãï¼292 * カーネルの終了処理の呼出し(core_support.S) 293 * 294 * call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク 295 * コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出 296 * す. 345 297 */ 346 298 extern void call_exit_kernel(void) NoReturn; 347 299 348 300 /* 349 * ã¿ã¹ã¯ã³ã³ããã¹ãã®åæå 350 * 351 * ã¿ã¹ã¯ãä¼æ¢ç¶æ 352 ããå®è¡ã§ããç¶æ 353 ã«é·ç§»ããæã«å¼ã°ããï¼ãã®æç¹ 354 * ã§ã¹ã¿ãã¯é åã使ã£ã¦ã¯ãªããªãï¼ 355 * 356 * activate_contextãï¼ã¤ã³ã©ã¤ã³é¢æ°ã§ã¯ãªããã¯ãå®ç¾©ã¨ãã¦ããã®ã¯ï¼ 357 * ãã®æç¹ã§ã¯TCBãå®ç¾©ããã¦ããªãããã§ããï¼ 301 * タスクコンテキストの初期化 302 * 303 * タスクが休止状態から実行できる状態に遷移する時に呼ばれる.この時点 304 * でスタック領域を使ってはならない. 305 * 306 * activate_contextを,インライン関数ではなくマクロ定義としているのは, 307 * この時点ではTCBが定義されていないためである. 358 308 */ 359 309 extern void start_r(void); … … 367 317 368 318 /* 369 * æ¨æºã®å²è¾¼ã¿ç®¡çæ©è½ã®åæåå¦çãç¨ããªã319 * 標準の割込み管理機能の初期化処理を用いない 370 320 */ 371 321 #define OMIT_INITIALIZE_INTERRUPT 372 322 373 323 /* 374 * å²è¾¼ã¿ãã³ãã©ãã¼ãã«ï¼kernel_cfg.cï¼324 * 割込みハンドラテーブル(kernel_cfg.c) 375 325 */ 376 326 extern FP inh_table[TNUM_INHNO]; 377 327 378 328 /* 379 * å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«ï¼kernel_cfg.cï¼380 * 381 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ãã¦å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããã°1ï¼è¨å®ããã¦ã382 * ãªããã°0ãä¿æãããã¼ãã«ï¼329 * 割込み要求ライン設定テーブル(kernel_cfg.c) 330 * 331 * 割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい 332 * なければ0を保持するテーブル. 383 333 */ 384 334 #ifdef USE_INTCFG_TABLE … … 387 337 388 338 /* 389 * æ¨æºã®ä¾å¤ç®¡çæ©è½ã®åæåå¦çãç¨ããªã339 * 標準の例外管理機能の初期化処理を用いない 390 340 */ 391 341 #define OMIT_INITIALIZE_EXCEPTION 392 342 393 343 /* 394 * CPU ä¾å¤ãã³ãã©ãã¼ãã«ï¼kernel_cfg.cï¼344 * CPU例外ハンドラテーブル(kernel_cfg.c) 395 345 */ 396 346 extern const FP exc_table[TNUM_EXCNO]; 397 347 398 348 /* 399 * CPU ä¾å¤ãã³ãã©ã®åæå349 * CPU例外ハンドラの初期化 400 350 */ 401 351 Inline void … … 405 355 406 356 /* 407 * CPUä¾å¤ã®çºçããæã®ã³ã³ããã¹ãã®åç 408 § 409 * 410 * CPUä¾å¤ã®çºçããæã®ã³ã³ããã¹ããï¼ã¿ã¹ã¯ã³ã³ããã¹ãã®æã«falseï¼ 411 * ããã§ãªãæã«trueãè¿ãï¼ 357 * CPU例外の発生した時のコンテキストの参照 358 * 359 * CPU例外の発生した時のコンテキストが,タスクコンテキストの時にfalse, 360 * そうでない時にtrueを返す. 412 361 */ 413 362 Inline bool_t … … 418 367 419 368 /* 420 * CPUä¾å¤ã®çºçããæã®å²è¾¼ã¿åªå 421 度ãã¹ã¯ã®åç 422 § 369 * CPU例外の発生した時の割込み優先度マスクの参照 423 370 */ 424 371 Inline PRI … … 429 376 430 377 /* 431 * CPUããã¯ç¶æ 432 ã¾ãã¯å²è¾¼ã¿ããã¯ç¶æ 433 ãã®åç 434 § 378 * CPUロック状態または割込みロック状態かの参照 435 379 */ 436 380 Inline bool_t … … 446 390 447 391 /* 448 * CPUä¾å¤ã®çºçããæã®ã³ã³ããã¹ãã¨å²è¾¼ã¿ã®ãã¹ã¯ç¶æ 449 ã®åç 450 § 451 * 452 * CPUä¾å¤ã®çºçããæã®ã·ã¹ãã ç¶æ 453 ãï¼ã«ã¼ãã«å®è¡ä¸ã§ãªãï¼ã¿ã¹ã¯ã³ 454 * ã³ããã¹ãã§ããï¼å 455 ¨å²è¾¼ã¿ããã¯ç¶æ 456 ã§ãªãï¼CPUããã¯ç¶æ 457 ã§ãªãï¼å² 458 * è¾¼ã¿åªå 459 度ãã¹ã¯å 460 ¨è§£é¤ç¶æ 461 ã§ããæã«trueï¼ããã§ãªãæã«falseãè¿ã 462 * ï¼CPUä¾å¤ãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿å¦çä¸ã§çºçããå ´åã«ãfalseãè¿ 463 * ãï¼ï¼ 392 * CPU例外の発生した時のコンテキストと割込みのマスク状態の参照 393 * 394 * CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ 395 * ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,割 396 * 込み優先度マスク全解除状態である時にtrue,そうでない時にfalseを返す 397 * (CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返 398 * す). 464 399 * 465 400 */ … … 475 410 476 411 /* 477 * MMU é¢é£ã®æä½ï¼VMSAï¼412 * MMU関連の操作(VMSA) 478 413 */ 479 414 #ifdef USE_ARM_MMU 480 415 481 416 /* 482 * å¤æãã¼ãã«ãã¼ã¹ã¬ã¸ã¹ã¿ï¼TTBRï¼ã®è¨å®å¤417 * 変換テーブルベースレジスタ(TTBR)の設定値 483 418 */ 484 419 #if __TARGET_ARCH_ARM < 6 … … 495 430 496 431 /* 497 * MMUã®è¨å®æ 498 å ±ã®ãã¼ã¿å 432 * MMUの設定情報のデータ型 499 433 */ 500 434 typedef struct arm_mmu_config { 501 uint32_t vaddr; /* ä»®æ³ã¢ãã¬ã¹*/502 uint32_t paddr; /* ç©çã¢ãã¬ã¹*/503 uint32_t size; /* ãµã¤ãº*/504 uint32_t attr; /* ã»ã¯ã·ã§ã³å±æ§*/435 uint32_t vaddr; /* 仮想アドレス */ 436 uint32_t paddr; /* 物理アドレス */ 437 uint32_t size; /* サイズ */ 438 uint32_t attr; /* セクション属性 */ 505 439 } ARM_MMU_CONFIG; 506 440 507 441 /* 508 * MMUã®è¨å®æ 509 å ±ã®æ°ï¼ã¡ã¢ãªã¨ãªã¢ã®æ°ï¼ï¼target_kernel_impl.cï¼ 442 * MMUの設定情報の数(メモリエリアの数)(target_kernel_impl.c) 510 443 */ 511 444 extern const uint_t arm_tnum_memory_area; 512 445 513 446 /* 514 * MMUã®è¨å®æ 515 å ±ï¼ã¡ã¢ãªã¨ãªã¢ã®æ 516 å ±ï¼ï¼target_kernel_impl.cï¼ 447 * MMUの設定情報(メモリエリアの情報)(target_kernel_impl.c) 517 448 */ 518 449 extern ARM_MMU_CONFIG arm_memory_area[]; 519 450 520 451 /* 521 * MMU ã®åæå452 * MMUの初期化 522 453 */ 523 454 extern void arm_mmu_initialize(void); … … 529 460 530 461 /* 531 * ã³ã¢ä¾åã®åæå462 * コア依存の初期化 532 463 */ 533 464 extern void core_initialize(void); 534 465 535 466 /* 536 * ã³ã¢ä¾åã®çµäºå¦ç467 * コア依存の終了処理 537 468 */ 538 469 extern void core_terminate(void); 539 470 540 471 /* 541 * CPU ä¾å¤ã®çºçç¶æ³ã®ãã°åºå472 * CPU例外の発生状況のログ出力 542 473 */ 543 474 #ifndef OMIT_XLOG_SYS … … 547 478 548 479 /* 549 * æªå®ç¾©ã®å²è¾¼ã¿ãå 550 ¥ã£ãå ´åã®å¦ç 480 * 未定義の割込みが入った場合の処理 551 481 */ 552 482 extern void default_int_handler(void); 553 483 554 484 /* 555 * æªå®ç¾©ã®ä¾å¤ãå 556 ¥ã£ãå ´åã®å¦ç 485 * 未定義の例外が入った場合の処理 557 486 */ 558 487 extern void default_exc_handler(void *p_excinf, EXCNO excno); -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_offset.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãªãã»ãããã¡ã¤ã«çæç¨Rubyãã³ãã¬ã¼ãï¼ARMç¨ï¼3 # オフセットファイル生成用Rubyテンプレート(ARM用) 4 4 # 5 # $Id : core_offset.trb 572 2016-02-01 14:40:09Z ertl-hiro$5 # $Id$ 6 6 # 7 7 8 8 # 9 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã9 # ターゲット非依存部のインクルード 10 10 # 11 11 IncludeTrb("kernel/genoffset.trb") 12 12 13 13 # 14 # ãã£ã¼ã«ãã®ãªãã»ããã®å®ç¾©ã®çæ14 # フィールドのオフセットの定義の生成 15 15 # 16 16 GenerateDefine("TCB_p_tinib", $offsetof_TCB_p_tinib) -
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_pl310.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 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 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * L2 ãã£ãã·ã¥ã³ã³ããã¼ã©ï¼PL310ï¼ã®æä½ã©ã¤ãã©ãª41 * L2キャッシュコントローラ(PL310)の操作ライブラリ 57 42 */ 58 43 … … 67 52 aux = sil_rew_mem(PL310_AUX_CTRL); 68 53 if ((aux & PL310_AUX_CTRL_ASSOCIATIVITY) != 0U) { 69 /* 16 ã¦ã§ã¤*/54 /* 16ウェイ */ 70 55 return(0x0000ffffU); 71 56 } 72 57 else { 73 /* 8 ã¦ã§ã¤*/58 /* 8ウェイ */ 74 59 return(0x000000ffU); 75 60 } … … 87 72 uint32_t way_mask = get_way_mask(); 88 73 89 /* ãã¹ã¦ã®ã¦ã§ã¤ãç¡å¹åãã*/74 /* すべてのウェイを無効化する */ 90 75 sil_wrw_mem(PL310_INV_WAY, 0xffff); 91 76 while ((sil_rew_mem(PL310_INV_WAY) & way_mask) != 0U) ; … … 100 85 101 86 /* 102 * PL310 ã®åæå87 * PL310の初期化 103 88 */ 104 89 void … … 109 94 uint32_t prefetch_val = 0U; 110 95 111 /* L2 ãã£ãã·ã¥ããã£ã¹ã¨ã¼ãã«ã®å ´åã®ã¿åæåãè¡ã*/96 /* L2キャッシュがディスエーブルの場合のみ初期化を行う */ 112 97 if ((sil_rew_mem(PL310_CTRL) & 0x01) == 0U) { 113 /* å 114 ±æå±æ§ãç¡è¦ãã */ 98 /* 共有属性を無視する */ 115 99 aux_val |= PL310_AUX_CTRL_IGNORE_SHARE; 116 100 117 /* å½ä»¤ããªãã§ãããã¤ãã¼ãã«*/101 /* 命令プリフェッチをイネーブル */ 118 102 aux_val |= PL310_AUX_CTRL_INST_PREFETCH; 119 103 prefetch_val |= PL310_AUX_CTRL_INST_PREFETCH; 120 104 121 /* ãã¼ã¿ããªãã§ãããã¤ãã¼ãã«*/105 /* データプリフェッチをイネーブル */ 122 106 aux_val |= PL310_AUX_CTRL_DATA_PREFETCH; 123 107 prefetch_val |= PL310_AUX_CTRL_DATA_PREFETCH; 124 108 125 /* ããã«ã©ã¤ã³ãã£ã«ãã¤ãã¼ãã«*/109 /* ダブルラインフィルをイネーブル */ 126 110 prefetch_val |= PL310_PREFETCH_CTRL_DLINEFILL; 127 111 prefetch_val |= PL310_PREFETCH_CTRL_INCR_DLINEFILL; 128 112 129 /* è£å©å¶å¾¡ã¬ã¸ã¹ã¿ãè¨å®*/113 /* 補助制御レジスタを設定 */ 130 114 aux = sil_rew_mem(PL310_AUX_CTRL); 131 115 sil_wrw_mem(PL310_AUX_CTRL, ((aux & aux_mask) | aux_val)); 132 116 133 /* ããªãã§ããå¶å¾¡ã¬ã¸ã¹ã¿ãè¨å®*/117 /* プリフェッチ制御レジスタを設定 */ 134 118 prefetch = sil_rew_mem(PL310_PREFETCH_CTRL); 135 119 sil_wrw_mem(PL310_PREFETCH_CTRL, (prefetch | prefetch_val)); 136 120 137 /* L2ãã£ãã·ã¥ã®å 138 ¨ä½ã®ç¡å¹å */ 121 /* L2キャッシュの全体の無効化 */ 139 122 pl310_inv_all(); 140 123 141 /* ã¯ããã¯ã²ã¼ãã£ã³ã°ã¨ã¹ã¿ã³ãã¤ã¢ã¼ããã¤ãã¼ãã«*/124 /* クロックゲーティングとスタンバイモードをイネーブル */ 142 125 sil_wrw_mem(PL310_POWER_CTRL, 0x03); 143 126 144 /* L2 ãã£ãã·ã¥ã®ã¤ãã¼ãã«*/127 /* L2キャッシュのイネーブル */ 145 128 sil_wrw_mem(PL310_CTRL, 0x01); 146 129 } … … 148 131 149 132 /* 150 * L2 ãã£ãã·ã¥ã®ãã£ã¹ã¨ã¼ãã«133 * L2キャッシュのディスエーブル 151 134 */ 152 135 void … … 158 141 159 142 /* 160 * L2ãã£ãã·ã¥å 161 ¨ä½ã®ç¡å¹åï¼æ¸ãæ»ããªãï¼ 143 * L2キャッシュ全体の無効化(書き戻さない) 162 144 */ 163 145 void … … 170 152 171 153 /* 172 * L2ãã£ãã·ã¥å 173 ¨ä½ã®ã¯ãªã¼ã³ã¨ç¡å¹å 154 * L2キャッシュ全体のクリーンと無効化 174 155 */ 175 156 void -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_pl310.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 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 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * L2 ãã£ãã·ã¥ã³ã³ããã¼ã©ï¼PL310ï¼ã«é¢ããå®ç¾©41 * L2キャッシュコントローラ(PL310)に関する定義 57 42 */ 58 43 … … 61 46 62 47 /* 63 * åãã£ã¹ããè¡ããã¯ãã®å®ç¾©48 * 型キャストを行うマクロの定義 64 49 */ 65 50 #ifndef CAST … … 68 53 69 54 /* 70 * PL310 ã®ã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©55 * PL310のレジスタの番地の定義 71 56 */ 72 57 #define PL310_CACHE_ID CAST(uint32_t *, PL310_BASE + 0x000) … … 101 86 102 87 /* 103 * ãã£ãã·ã¥è£å©å¶å¾¡ã¬ã¸ã¹ã¿ï¼PL310_AUX_CTRLï¼ã®è¨å®å¤88 * キャッシュ補助制御レジスタ(PL310_AUX_CTRL)の設定値 104 89 */ 105 90 #define PL310_AUX_CTRL_ASSOCIATIVITY 0x00010000 … … 114 99 115 100 /* 116 * ããªãã§ããå¶å¾¡ã¬ã¸ã¹ã¿ï¼PL310_PREFETCH_CTRLï¼ã®è¨å®å¤101 * プリフェッチ制御レジスタ(PL310_PREFETCH_CTRL)の設定値 117 102 */ 118 103 #define PL310_PREFETCH_CTRL_INCR_DLINEFILL 0x00800000 … … 124 109 125 110 /* 126 * L2 ãã£ãã·ã¥ã®åæåã¨ã¤ãã¼ãã«111 * L2キャッシュの初期化とイネーブル 127 112 */ 128 113 extern void pl310_initialize(uint32_t aux_val, uint32_t aux_mask); 129 114 130 115 /* 131 * L2 ãã£ãã·ã¥ã®ãã£ã¹ã¨ã¼ãã«116 * L2キャッシュのディスエーブル 132 117 */ 133 118 extern void pl310_disable(void); 134 119 135 120 /* 136 * L2ãã£ãã·ã¥å 137 ¨ä½ã®ç¡å¹åï¼æ¸ãæ»ããªãï¼ 121 * L2キャッシュ全体の無効化(書き戻さない) 138 122 */ 139 123 extern void pl310_invalidate_all(void); 140 124 141 125 /* 142 * L2ãã£ãã·ã¥å 143 ¨ä½ã®ã¯ãªã¼ã³ã¨ç¡å¹å 126 * L2キャッシュ全体のクリーンと無効化 144 127 */ 145 128 extern void pl310_clean_and_invalidate_all(void); -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_rename.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_sil.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * sil.h ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼43 * sil.hのコア依存部(ARM用) 59 44 * 60 * ãã®ããããã¡ã¤ã«ã¯ï¼target_sil.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ãã61 * ãããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤ã³62 * ã¯ã«ã¼ããã¦ã¯ãªããªãï¼45 * このヘッダファイルは,target_sil.h(または,そこからインクルードさ 46 * れるファイル)のみからインクルードされる.他のファイルから直接イン 47 * クルードしてはならない. 63 48 */ 64 49 … … 72 57 73 58 /* 74 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®èªåºã59 * ステータスレジスタ(CPSR)の現在値の読出し 75 60 */ 76 61 Inline uint32_t … … 84 69 85 70 /* 86 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®å¤æ´71 * ステータスレジスタ(CPSR)の現在値の変更 87 72 */ 88 73 Inline void … … 94 79 #else /* __thumb__ */ 95 80 /* 96 * Thumb ã¢ã¼ãã§ã¯mrs/msrå½ä»¤ã使ç¨ã§ããªãããï¼é¢æ°ã¨ãã¦å®ç¾ãã¦ï¼97 * ARM ã¢ã¼ãã«ç§»è¡ãã¦å®è¡ããï¼81 * Thumbモードではmrs/msr命令が使用できないため,関数として実現して, 82 * ARMモードに移行して実行する. 98 83 */ 99 84 100 85 /* 101 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®èªåºã86 * ステータスレジスタ(CPSR)の現在値の読出し 102 87 */ 103 88 extern uint32_t current_cpsr(void); … … 105 90 106 91 /* 107 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼CPSRï¼ã®ç¾å¨å¤ã®å¤æ´92 * ステータスレジスタ(CPSR)の現在値の変更 108 93 */ 109 94 extern void set_cpsr(uint32_t cpsr); … … 113 98 114 99 /* 115 * ãã¹ã¦ã®å²è¾¼ã¿ï¼FIQã¨IRQï¼ã®ç¦æ¢100 * すべての割込み(FIQとIRQ)の禁止 116 101 */ 117 102 Inline uint32_t … … 133 118 134 119 /* 135 * FIQ ã¨IRQã®ç¦æ¢ãããã®å¾©å¸°120 * FIQとIRQの禁止ビットの復帰 136 121 */ 137 122 Inline void … … 147 132 148 133 /* 149 * å 150 ¨å²è¾¼ã¿ããã¯ç¶æ 151 ã®å¶å¾¡ 134 * 全割込みロック状態の制御 152 135 */ 153 136 #define SIL_PRE_LOC uint32_t TOPPERS_fiq_irq_mask -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_stddef.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * t_stddef.h ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼43 * t_stddef.hのコア依存部(ARM用) 59 44 * 60 * ãã®ããããã¡ã¤ã«ã¯ï¼target_stddef.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ã61 * ããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤62 * ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼45 * このヘッダファイルは,target_stddef.h(または,そこからインクルード 46 * されるファイル)のみからインクルードされる.他のファイルから直接イ 47 * ンクルードしてはならない. 63 48 */ 64 49 … … 67 52 68 53 /* 69 * ã¿ã¼ã²ãããèå¥ããããã®ãã¯ãã®å®ç¾©54 * ターゲットを識別するためのマクロの定義 70 55 */ 71 #define TOPPERS_ARM /* ã³ã¢ç¥ç§°*/56 #define TOPPERS_ARM /* コア略称 */ 72 57 73 58 #endif /* TOPPERS_CORE_STDDEF_H */ -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_support.S
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r279 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã«ã¼ãã«ã®ã³ã¢ä¾åé¨ã®ã¢ã»ã³ããªè¨èªé¨ï¼ARMç¨ï¼44 * カーネルのコア依存部のアセンブリ言語部(ARM用) 60 45 */ 61 46 62 47 #define TOPPERS_MACRO_ONLY 63 48 #define TOPPERS_ASM_MACRO 64 #define UINT_C(val) (val) /* uint_t åã®å®æ°ãä½ããã¯ã*/65 #define ULONG_C(val) (val) /* ulong_t åã®å®æ°ãä½ããã¯ã*/66 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/49 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 50 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 51 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 67 52 #include "kernel_impl.h" 68 53 #include "offset.h" … … 70 55 71 56 /* 72 * ä¾å¤ãã¯ã¿57 * 例外ベクタ 73 58 */ 74 59 ASECTION(.vector) … … 76 61 AGLOBAL(vector_table) 77 62 ALABEL(vector_table) 78 ldr pc, reset_vector /* ãªã»ãã*/79 ldr pc, undef_vector /* æªå®ç¾©å½ä»¤*/80 ldr pc, svc_vector /* ã½ããã¦ã§ã¢å²è¾¼ã¿*/81 ldr pc, pabort_vector /* ããªãã§ããã¢ãã¼ã*/82 ldr pc, dabort_vector /* ãã¼ã¿ã¢ãã¼ã*/83 ldr pc, reset_vector /* æªä½¿ç¨*/63 ldr pc, reset_vector /* リセット */ 64 ldr pc, undef_vector /* 未定義命令 */ 65 ldr pc, svc_vector /* ソフトウェア割込み */ 66 ldr pc, pabort_vector /* プリフェッチアボート */ 67 ldr pc, dabort_vector /* データアボート */ 68 ldr pc, reset_vector /* 未使用 */ 84 69 ldr pc, irq_vector /* IRQ */ 85 70 ldr pc, fiq_vector /* FIQ */ 86 71 87 72 /* 88 * ä¾å¤ãã¯ã¿ã®å½ä»¤ããåç 89 §ãããã¸ã£ã³ãå 90 ã¢ãã¬ã¹ 73 * 例外ベクタの命令から参照されるジャンプ先アドレス 91 74 */ 92 75 AGLOBAL(vector_ref_table) … … 108 91 109 92 /* 110 * ã¿ã¹ã¯ãã£ã¹ãããã£93 * タスクディスパッチャ 111 94 */ 112 95 ATEXT … … 115 98 ALABEL(dispatch) 116 99 /* 117 * ãã®ã«ã¼ãã³ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã»CPUããã¯ç¶æ 118 ã»å²è¾¼ã¿åªå 119 度 120 * ãã¹ã¯å 121 ¨è§£é¤ç¶æ 122 ã»ãã£ã¹ããã許å¯ç¶æ 123 ã§å¼ã³åºãããï¼ 124 */ 125 push {r12,lr} /* æ»ãçªå°ãä¿åï¼r12ã¯ããã¼ */ 100 * このルーチンは,タスクコンテキスト・CPUロック状態・割込み優先度 101 * マスク全解除状態・ディスパッチ許可状態で呼び出される. 102 */ 103 push {r12,lr} /* 戻り番地を保存,r12はダミー */ 126 104 #ifdef TOPPERS_SUPPORT_OVRHDR 127 105 bl ovrtimer_stop 128 106 #endif /* TOPPERS_SUPPORT_OVRHDR */ 129 stmfd sp!, {r4-r11} /* éã¹ã¯ã©ããã¬ã¸ã¹ã¿ã®ä¿å*/130 ldr r0, =p_runtsk /* p_runtsk âr0 */107 stmfd sp!, {r4-r11} /* 非スクラッチレジスタの保存 */ 108 ldr r0, =p_runtsk /* p_runtsk → r0 */ 131 109 ldr r0, [r0] 132 str sp, [r0,#TCB_sp] /* ã¹ã¿ãã¯ãã¤ã³ã¿ãä¿å*/110 str sp, [r0,#TCB_sp] /* スタックポインタを保存 */ 133 111 adr r1, dispatch_r 134 str r1, [r0,#TCB_pc] /* å®è¡åéçªå°ãä¿å*/135 b dispatcher /* r0 ã«ã¯p_runtskãæ ¼ç´ããã¦ãã*/112 str r1, [r0,#TCB_pc] /* 実行再開番地を保存 */ 113 b dispatcher /* r0にはp_runtskが格納されている */ 136 114 137 115 ALABEL(dispatch_r) 138 ldmfd sp!, {r4-r11} /* éã¹ã¯ã©ããã¬ã¸ã¹ã¿ã®å¾©å¸°*/116 ldmfd sp!, {r4-r11} /* 非スクラッチレジスタの復帰 */ 139 117 #ifdef TOPPERS_SUPPORT_OVRHDR 140 118 bl ovrtimer_start 141 119 #endif /* TOPPERS_SUPPORT_OVRHDR */ 142 pop {r12,lr} /* æ»ãçªå°ã復帰*/120 pop {r12,lr} /* 戻り番地を復帰 */ 143 121 bx lr 144 122 145 123 /* 146 * ãã£ã¹ãããã£ã®åä½éå§124 * ディスパッチャの動作開始 147 125 */ 148 126 AGLOBAL(start_dispatch) 149 127 ALABEL(start_dispatch) 150 128 /* 151 * ãã®ã«ã¼ãã³ã¯ï¼ã«ã¼ãã«èµ·åæã«ï¼éã¿ã¹ã¯ã³ã³ããã¹ãã§ï¼NMIã 152 * é¤ããã¹ã¦ã®å²è¾¼ã¿ãç¦æ¢ããç¶æ 153 ï¼å 154 ¨å²è¾¼ã¿ããã¯ç¶æ 155 ã¨åçï¼ã§ 156 * å¼ã³åºãããï¼ 129 * このルーチンは,カーネル起動時に,非タスクコンテキストで,NMIを 130 * 除くすべての割込みを禁止した状態(全割込みロック状態と同等)で 131 * 呼び出される. 157 132 * 158 * dispatcher_0ã¸åå²ããåã«ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã»CPUããã¯ç¶æ 159 ã» 160 * å²è¾¼ã¿åªå 161 度ãã¹ã¯å 162 ¨è§£é¤ç¶æ 163 ã«ãï¼ä½¿ç¨ããã¹ã¿ãã¯ãï¼IDã1ã®ã¿ 164 * ã¹ã¯ã®ã¹ã¿ãã¯é åã«åãæããªããã°ãªããªãï¼ 165 */ 166 167 /* 168 * ã¿ã¹ã¯ã³ã³ããã¹ãã«åãæããï¼ 169 */ 170 ldr r2, =excpt_nest_count /* ä¾å¤ãã¹ãã«ã¦ã³ãã0ã« */ 133 * dispatcher_0へ分岐する前に,タスクコンテキスト・CPUロック状態・ 134 * 割込み優先度マスク全解除状態にし,使用するスタックを,IDが1のタ 135 * スクのスタック領域に切り換えなければならない. 136 */ 137 138 /* 139 * タスクコンテキストに切り換える. 140 */ 141 ldr r2, =excpt_nest_count /* 例外ネストカウントを0に */ 171 142 mov r0, #0 172 143 str r0, [r2] 173 144 174 145 /* 175 * ID ã1ã®ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åã«åãæããï¼176 */ 177 ldr r0, =tcb_table /* tcb_table[0] âr0 */178 ldr r2, [r0,#TCB_p_tinib] /* tcb_table[0].p_tinib âr2 */146 * IDが1のタスクのスタック領域に切り換える. 147 */ 148 ldr r0, =tcb_table /* tcb_table[0] → r0 */ 149 ldr r2, [r0,#TCB_p_tinib] /* tcb_table[0].p_tinib → r2 */ 179 150 ldr r0, [r2,#TINIB_stk] 180 151 ldr r1, [r2,#TINIB_stksz] … … 182 153 183 154 /* 184 * CPUããã¯ç¶æ 185 ã«ãã¦ï¼ãã£ã¹ãããã£æ¬ä½ã¸åå²ããï¼ 155 * CPUロック状態にして,ディスパッチャ本体へ分岐する. 186 156 */ 187 157 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_CPULOCK) … … 189 159 190 160 /* 191 * ç¾å¨ã®ã³ã³ããã¹ããæ¨ã¦ã¦ãã£ã¹ããã161 * 現在のコンテキストを捨ててディスパッチ 192 162 */ 193 163 AGLOBAL(exit_and_dispatch) 194 164 ALABEL(exit_and_dispatch) 195 165 /* 196 * ãã®ã«ã¼ãã³ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã»CPUããã¯ç¶æ 197 ã»å²è¾¼ã¿åªå 198 度 199 * ãã¹ã¯å 200 ¨è§£é¤ç¶æ 201 ã»ãã£ã¹ããã許å¯ç¶æ 202 ã§å¼ã³åºãããï¼ 166 * このルーチンは,タスクコンテキスト・CPUロック状態・割込み優先度 167 * マスク全解除状態・ディスパッチ許可状態で呼び出される. 203 168 */ 204 169 #ifdef LOG_DSP_ENTER 205 ldr r0, =p_runtsk /* p_runtsk âr0 */170 ldr r0, =p_runtsk /* p_runtsk → r0 */ 206 171 ldr r0, [r0] 207 172 #endif /* LOG_DSP_ENTER */ 208 /* ãã£ã¹ãããã£æ¬ä½ï¼dispatcherï¼ã¸*/209 210 /* 211 * ãã£ã¹ãããã£æ¬ä½173 /* ディスパッチャ本体(dispatcher)へ */ 174 175 /* 176 * ディスパッチャ本体 212 177 */ 213 178 ALABEL(dispatcher) 214 179 #ifdef LOG_DSP_ENTER 215 180 /* 216 * ããã®æç¹ã®ã¬ã¸ã¹ã¿ç¶æ 217 ã 218 * r0ï¼p_runtskï¼ã¿ã¹ã¯åæãåï¼ 181 * 【この時点のレジスタ状態】 182 * r0:p_runtsk(タスク切換え前) 219 183 */ 220 184 bl log_dsp_enter … … 223 187 ALABEL(dispatcher_0) 224 188 /* 225 * ãã®ã«ã¼ãã³ã¯ï¼ã¿ã¹ã¯ã³ã³ããã¹ãã»CPUããã¯ç¶æ 226 ã»å²è¾¼ã¿åªå 227 度 228 * ãã¹ã¯å 229 ¨è§£é¤ç¶æ 230 ã»ãã£ã¹ããã許å¯ç¶æ 231 ã§å¼ã³åºãããï¼å®è¡åéçª 232 * å°ã¸ããã®ç¶æ 233 ã®ã¾ã¾åå²ããï¼ 234 */ 235 ldr r0, =p_schedtsk /* p_schedtsk â r4 â p_runtsk */ 189 * このルーチンは,タスクコンテキスト・CPUロック状態・割込み優先度 190 * マスク全解除状態・ディスパッチ許可状態で呼び出される.実行再開番 191 * 地へもこの状態のまま分岐する. 192 */ 193 ldr r0, =p_schedtsk /* p_schedtsk → r4 → p_runtsk */ 236 194 ldr r4, [r0] 237 195 ldr r1, =p_runtsk 238 196 str r4, [r1] 239 tst r4, r4 /* p_runtsk ãNULLãªãdispatcher_1ã¸*/197 tst r4, r4 /* p_runtskがNULLならdispatcher_1へ */ 240 198 beq dispatcher_1 241 ldr sp, [r4,#TCB_sp] /* ã¿ã¹ã¯ã¹ã¿ãã¯ã復帰*/199 ldr sp, [r4,#TCB_sp] /* タスクスタックを復帰 */ 242 200 #ifdef LOG_DSP_LEAVE 243 mov r0, r4 /* p_runtsk ããã©ã¡ã¼ã¿ã«æ¸¡ã*/201 mov r0, r4 /* p_runtskをパラメータに渡す */ 244 202 bl log_dsp_leave 245 203 #endif /* LOG_DSP_LEAVE */ 246 ldr r0, [r4,#TCB_pc] /* å®è¡åéçªå°ã復帰 */ 247 bx r0 /* p_runtskãr4ã«å 248 ¥ããç¶æ 249 ã§åå²ãã */ 250 251 /* 252 * ã¢ã¤ãã«å¦ç 204 ldr r0, [r4,#TCB_pc] /* 実行再開番地を復帰 */ 205 bx r0 /* p_runtskをr4に入れた状態で分岐する */ 206 207 /* 208 * アイドル処理 253 209 * 254 * å²è¾¼ã¿ããã¹ã¦è¨±å¯ãï¼CPUããã¯è§£é¤ç¶æ 255 ã«ãã¦å²è¾¼ã¿ãå¾ 256 ã¤ï¼ 210 * 割込みをすべて許可し,CPUロック解除状態にして割込みを待つ. 257 211 * 258 * ã¿ã¼ã²ããã«ãã£ã¦ã¯ï¼çé»åã¢ã¼ãçã«ç§»è¡ããããï¼æ¨æºã®æ¹æ³ 259 * ã¨ç°ãªãæé ãå¿ 260 è¦ãªå ´åãããï¼ãã®ãããªã¿ã¼ã²ããã§ã¯ï¼ã¿ã¼ 261 * ã²ããä¾åé¨ã§TOPPERS_CUSTOM_IDLEãå®ç¾©ãï¼ã¢ã»ã³ãã©ãã¯ãã¨ã 262 * ã¦ï¼toppers_asm_custom_idleãç¨æããã°ããï¼ 212 * ターゲットによっては,省電力モード等に移行するため,標準の方法 213 * と異なる手順が必要な場合がある.そのようなターゲットでは,ター 214 * ゲット依存部でTOPPERS_CUSTOM_IDLEを定義し,アセンブラマクロとし 215 * て,toppers_asm_custom_idleを用意すればよい. 263 216 */ 264 217 ALABEL(dispatcher_1) … … 266 219 toppers_asm_custom_idle 267 220 #else /* TOPPERS_CUSTOM_IDLE */ 268 msr cpsr_c, #CPSR_SVC_MODE /* å²è¾¼ã¿ã許å¯ï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãï¼*/221 msr cpsr_c, #CPSR_SVC_MODE /* 割込みを許可(スーパバイザモード)*/ 269 222 #endif /* TOPPERS_CUSTOM_IDLE */ 270 b dispatcher_1 /* å²è¾¼ã¿å¾ 271 ã¡ */ 272 273 /* 274 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºã 223 b dispatcher_1 /* 割込み待ち */ 224 225 /* 226 * カーネルの終了処理の呼出し 275 227 * 276 * å²è¾¼ã¿ããã¯ç¶æ 277 ã«ãï¼ä½¿ç¨ããã¹ã¿ãã¯ãéã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ã 278 * ã¯é åã«åãæ¿ãï¼exit_kernelãå¼ã³åºãï¼ 228 * 割込みロック状態にし,使用するスタックを非タスクコンテキスト用のスタッ 229 * ク領域に切り替え,exit_kernelを呼び出す. 279 230 */ 280 231 AGLOBAL(call_exit_kernel) 281 232 ALABEL(call_exit_kernel) 282 233 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_INTLOCK) 283 ldr r0, =istkpt /* éã¿ã¹ã¯ã³ã³ããã¹ãã®ã¹ã¿ãã¯ã¸*/234 ldr r0, =istkpt /* 非タスクコンテキストのスタックへ */ 284 235 ldr sp, [r0] 285 236 b exit_kernel 286 237 287 238 /* 288 * ã¿ã¹ã¯ã®å®è¡éå§æå¦ç239 * タスクの実行開始時処理 289 240 */ 290 241 ATEXT … … 292 243 AGLOBAL(start_r) 293 244 /* 294 * ãã£ã¹ãããã£æ¬ä½ããå¼ã³åºãããããï¼p_runtskã¯r4ã«å 295 ¥ã£ã¦ããï¼ 245 * ディスパッチャ本体から呼び出されるため,p_runtskはr4に入っている. 296 246 */ 297 247 ALABEL(start_r) … … 300 250 #endif /* TOPPERS_SUPPORT_OVRHDR */ 301 251 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_UNLOCK) 302 /* CPUããã¯è§£é¤ç¶æ 303 ã« */ 304 ldr lr, =ext_tsk /* ã¿ã¹ã¯æ¬ä½ããã®æ»ãçªå°ãè¨å® */ 305 ldr r2, [r4,#TCB_p_tinib] /* p_runtsk->p_tinib â r2 */ 306 ldr r0, [r2,#TINIB_exinf] /* exinfããã©ã¡ã¼ã¿ã« */ 307 ldr r1, [r2,#TINIB_task] /* ã¿ã¹ã¯èµ·åçªå°ã«ã¸ã£ã³ã */ 252 /* CPUロック解除状態に */ 253 ldr lr, =ext_tsk /* タスク本体からの戻り番地を設定 */ 254 ldr r2, [r4,#TCB_p_tinib] /* p_runtsk->p_tinib → r2 */ 255 ldr r0, [r2,#TINIB_exinf] /* exinfをパラメータに */ 256 ldr r1, [r2,#TINIB_task] /* タスク起動番地にジャンプ */ 308 257 bx r1 309 258 310 259 /* 311 * å²è¾¼ã¿ãã³ãã©ã®åºå 312 ¥å£å¦ç 260 * 割込みハンドラの出入口処理 313 261 */ 314 262 #ifndef OMIT_IRQ_HANDLER … … 318 266 ALABEL(irq_handler) 319 267 /* 320 * ããã«ã¯ï¼IRQã¢ã¼ãã§åå²ãã¦ããï¼321 */ 322 #if __TARGET_ARCH_ARM < 6 323 /* 324 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼268 * ここには,IRQモードで分岐してくる. 269 */ 270 #if __TARGET_ARCH_ARM < 6 271 /* 272 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 325 273 */ 326 274 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT) 327 stmfd sp!, {r0-r5,r12,lr,pc} /* pcã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã */ 328 329 /* 330 * IRQã¢ã¼ãã«æ»ãã¦ï¼æ»ãçªå°ã¨spsrï¼æ»ãå 331 ã®cpsrï¼ãåå¾ããï¼ 275 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 276 277 /* 278 * IRQモードに戻して,戻り番地とspsr(戻り先のcpsr)を取得する. 332 279 */ 333 280 msr cpsr_c, #(CPSR_IRQ_MODE AOR CPSR_IRQ_BIT) … … 336 283 337 284 /* 338 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼æ»ãçªå°ã¨spsrãä¿åããï¼285 * スーパバイザモードに切り換え,戻り番地とspsrを保存する. 339 286 */ 340 287 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT) 341 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å */ 342 push {r1} /* spsrãã¹ã¿ãã¯ã«ä¿å */ 343 #else /* __TARGET_ARCH_ARM < 6 */ 344 /* 345 * æ»ãå 346 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ããã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã« 347 * ä¿åããï¼ 348 */ 349 sub lr, lr, #4 /* æ»ãçªå°ã®ç®åº */ 288 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 289 push {r1} /* spsrをスタックに保存 */ 290 #else /* __TARGET_ARCH_ARM < 6 */ 291 /* 292 * 戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに 293 * 保存する. 294 */ 295 sub lr, lr, #4 /* 戻り番地の算出 */ 350 296 srsfd #CPSR_SVC_MODE! 351 297 352 298 /* 353 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼299 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 354 300 */ 355 301 cps #CPSR_SVC_MODE … … 358 304 359 305 /* 360 * ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´306 * スタックポインタの調整 361 307 */ 362 308 and r1, sp, #4 363 309 sub sp, sp, r1 364 push {r0,r1} /* r0 ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/365 366 /* 367 * ä¾å¤ãã¹ãã«ã¦ã³ããã¤ã³ã¯ãªã¡ã³ãããï¼å²è¾¼ã¿ãéã¿ã¹ã¯ã³ã³ãã368 * ã¹ãã§çºçããå ´åã«ã¯ï¼irq_handler_1ã¸åå²ããï¼310 push {r0,r1} /* r0はスペース確保のため */ 311 312 /* 313 * 例外ネストカウントをインクリメントする.割込みが非タスクコンテキ 314 * ストで発生した場合には,irq_handler_1へ分岐する. 369 315 */ 370 316 ldr r2, =excpt_nest_count … … 372 318 add r3, r3, #1 373 319 str r3, [r2] 374 teq r3, #1 /* å²è¾¼ã¿ãéã¿ã¹ã¯ã³ã³ããã¹ãã§çºç*/375 bne irq_handler_1 /* ãªãirq_handler_1ã«åå²*/320 teq r3, #1 /* 割込みが非タスクコンテキストで発生 */ 321 bne irq_handler_1 /* ならirq_handler_1に分岐 */ 376 322 377 323 #ifdef TOPPERS_SUPPORT_OVRHDR 378 324 /* 379 * ãªã¼ãã©ã³ã¿ã¤ããåæ¢ããï¼325 * オーバランタイマを停止する. 380 326 */ 381 327 bl ovrtimer_stop … … 383 329 384 330 /* 385 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã«åãæããï¼386 */ 387 mov r3, sp /* ãã®æç¹ã®ã¹ã¿ãã¯ãã¤ã³ã¿ãr3ã«*/388 ldr r2, =istkpt /* éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã«*/331 * 非タスクコンテキスト用のスタックに切り換える. 332 */ 333 mov r3, sp /* この時点のスタックポインタをr3に */ 334 ldr r2, =istkpt /* 非タスクコンテキスト用のスタックに */ 389 335 ldr sp, [r2] 390 push {r0,r3} /* åæãåã®ã¹ã¿ãã¯ãã¤ã³ã¿ãä¿å*/391 /* r0 ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/336 push {r0,r3} /* 切換え前のスタックポインタを保存 */ 337 /* r0はスペース確保のため */ 392 338 ALABEL(irq_handler_1) 393 339 /* 394 * å²è¾¼ã¿ã³ã³ããã¼ã©ãæä½ãï¼å²è¾¼ã¿çªå·ãåå¾ããï¼340 * 割込みコントローラを操作し,割込み番号を取得する. 395 341 */ 396 342 bl irc_begin_int 397 343 #if TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 398 cmp r4, #TNUM_INHNO /* TNUM_INHNO ã®å¤ã«ãã£ã¦ã¯ã¨ã©ã¼ã«ãªã*/344 cmp r4, #TNUM_INHNO /* TNUM_INHNOの値によってはエラーになる */ 399 345 #else /* TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 */ 400 346 movw r3, #TNUM_INHNO 401 347 cmp r4, r3 402 348 #endif /* TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 */ 403 bhs irq_handler_2 /* ã¹ããªã¢ã¹å²è¾¼ã¿ãªã */ 404 /* irq_handler_2ã«åå² */ 405 /* 406 * CPUããã¯è§£é¤ç¶æ 407 ã«ããï¼ 349 bhs irq_handler_2 /* スプリアス割込みなら */ 350 /* irq_handler_2に分岐 */ 351 /* 352 * CPUロック解除状態にする. 408 353 */ 409 354 #if __TARGET_ARCH_ARM < 6 … … 419 364 #ifdef LOG_INH_ENTER 420 365 /* 421 * ãã°åºåã®å¼åºã422 */ 423 mov r0, r4 /* å²è¾¼ã¿çªå·ããã©ã¡ã¼ã¿ã«æ¸¡ã*/366 * ログ出力の呼出し 367 */ 368 mov r0, r4 /* 割込み番号をパラメータに渡す */ 424 369 bl log_inh_enter 425 370 #endif /* LOG_INH_ENTER */ 426 371 427 372 /* 428 * å²è¾¼ã¿ãã³ãã©ã®å¼åºã429 */ 430 ldr r2, =inh_table /* å²è¾¼ã¿ãã³ãã©ãã¼ãã«ã®èªè¾¼ã¿*/431 ldr r1, [r2,r4,lsl #2] /* å²è¾¼ã¿ãã³ãã©ã®çªå° âr1 */432 mov lr, pc /* å²è¾¼ã¿ãã³ãã©ã®å¼åºã*/373 * 割込みハンドラの呼出し 374 */ 375 ldr r2, =inh_table /* 割込みハンドラテーブルの読込み */ 376 ldr r1, [r2,r4,lsl #2] /* 割込みハンドラの番地 → r1 */ 377 mov lr, pc /* 割込みハンドラの呼出し */ 433 378 bx r1 434 379 435 380 #ifdef LOG_INH_LEAVE 436 381 /* 437 * ãã°åºåã®å¼åºã438 */ 439 mov r0, r4 /* å²è¾¼ã¿çªå·ããã©ã¡ã¼ã¿ã«æ¸¡ã*/382 * ログ出力の呼出し 383 */ 384 mov r0, r4 /* 割込み番号をパラメータに渡す */ 440 385 bl log_inh_leave 441 386 #endif /* LOG_INH_LEAVE */ 442 387 443 388 /* 444 * ã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ãç¦æ¢ããï¼389 * カーネル管理の割込みを禁止する. 445 390 */ 446 391 #if __TARGET_ARCH_ARM < 6 … … 455 400 456 401 /* 457 * å²è¾¼ã¿ã³ã³ããã¼ã©ãæä½ããï¼402 * 割込みコントローラを操作する. 458 403 */ 459 404 ALABEL(irq_handler_2) … … 461 406 462 407 /* 463 * ä¾å¤ãã¹ãã«ã¦ã³ãããã¯ãªã¡ã³ãããï¼408 * 例外ネストカウントをデクリメントする. 464 409 */ 465 410 ldr r2, =excpt_nest_count 466 411 ldr r3, [r2] 467 412 subs r3, r3, #1 468 str r3, [r2] /* æ»ãå 469 ãéã¿ã¹ã¯ã³ã³ããã¹ããªã */ 470 bne irq_handler_5 /* irq_handler_5ã«åå² */ 471 472 /* 473 * ã¿ã¹ã¯ç¨ã®ã¹ã¿ãã¯ã«æ»ãï¼ 413 str r3, [r2] /* 戻り先が非タスクコンテキストなら */ 414 bne irq_handler_5 /* irq_handler_5に分岐 */ 415 416 /* 417 * タスク用のスタックに戻す. 474 418 */ 475 419 pop {r0,r3} … … 477 421 478 422 /* 479 * p_runtsk ãNULLãå¤å®ããï¼480 */ 481 ldr r0, =p_runtsk /* p_runtsk âr0 */423 * p_runtskがNULLか判定する. 424 */ 425 ldr r0, =p_runtsk /* p_runtsk → r0 */ 482 426 ldr r0, [r0] 483 tst r0, r0 /* p_runtskãNULLã§ãªããã° */ 484 bne irq_handler_3 /* irq_handler_3ã«åå² */ 485 486 /* 487 * ã¿ã¹ã¯ã®ã¹ã¿ãã¯ã«ä¿åããã¹ã¯ã©ããã¬ã¸ã¹ã¿çãæ¨ã¦ãï¼ 488 */ 489 pop {r0,r1} /* ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´ãå 490 ã«æ»ã */ 427 tst r0, r0 /* p_runtskがNULLでなければ */ 428 bne irq_handler_3 /* irq_handler_3に分岐 */ 429 430 /* 431 * タスクのスタックに保存したスクラッチレジスタ等を捨てる. 432 */ 433 pop {r0,r1} /* スタックポインタの調整を元に戻す */ 491 434 add sp, sp, r1 492 add sp, sp, #40 /* ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãæ¨ã¦ã*/435 add sp, sp, #40 /* スクラッチレジスタを捨てる */ 493 436 b dispatcher_0 494 437 495 438 /* 496 * ãã£ã¹ããããå¿ 497 è¦ãå¤å®ããï¼ 439 * ディスパッチが必要か判定する. 498 440 */ 499 441 ALABEL(irq_handler_3) 500 ldr r1, =p_schedtsk /* p_schedtsk âr1 */442 ldr r1, =p_schedtsk /* p_schedtsk → r1 */ 501 443 ldr r1, [r1] 502 teq r0, r1 /* p_runtsk ã¨p_schedtskãåããªã*/503 beq irq_handler_4 /* irq_handler_4 ã¸*/504 505 /* 506 * ã³ã³ããã¹ããä¿åããï¼507 */ 508 stmfd sp!, {r6-r11} /* éã¹ã¯ã©ããã¬ã¸ã¹ã¿ã®ä¿å*/509 str sp, [r0,#TCB_sp] /* ã¹ã¿ãã¯ãã¤ã³ã¿ãä¿å*/510 adr r1, ret_int_r /* å®è¡åéçªå°ãä¿å*/444 teq r0, r1 /* p_runtskとp_schedtskが同じなら */ 445 beq irq_handler_4 /* irq_handler_4へ */ 446 447 /* 448 * コンテキストを保存する. 449 */ 450 stmfd sp!, {r6-r11} /* 非スクラッチレジスタの保存 */ 451 str sp, [r0,#TCB_sp] /* スタックポインタを保存 */ 452 adr r1, ret_int_r /* 実行再開番地を保存 */ 511 453 str r1, [r0,#TCB_pc] 512 b dispatcher /* r0 ã«ã¯p_runtskãæ ¼ç´ããã¦ãã*/454 b dispatcher /* r0にはp_runtskが格納されている */ 513 455 514 456 ALABEL(ret_int_r) 515 457 /* 516 * ã³ã³ããã¹ãã復帰ããï¼517 */ 518 ldmfd sp!, {r6-r11} /* éã¹ã¯ã©ããã¬ã¸ã¹ã¿ã®å¾©å¸°*/458 * コンテキストを復帰する. 459 */ 460 ldmfd sp!, {r6-r11} /* 非スクラッチレジスタの復帰 */ 519 461 520 462 ALABEL(irq_handler_4) 521 463 #ifdef TOPPERS_SUPPORT_OVRHDR 522 464 /* 523 * ãªã¼ãã©ã³ã¿ã¤ããåä½éå§ããï¼465 * オーバランタイマを動作開始する. 524 466 */ 525 467 bl ovrtimer_start … … 527 469 528 470 /* 529 * å²è¾¼ã¿ï¼CPUä¾å¤å¦çããã®ãªã¿ã¼ã³471 * 割込み/CPU例外処理からのリターン 530 472 * 531 * å²è¾¼ã¿ï¼CPUä¾å¤å¦çããã®ãªã¿ã¼ã³ã«ããï¼CPUããã¯è§£é¤ç¶æ 532 ã«é· 533 * 移ããããã«ããå¿ 534 è¦ããããï¼ARMã¯CPSRã®ãããã«ãã£ã¦CPUãã 535 * ã¯ç¶æ 536 ã表ãã¦ããããï¼CPSRãå 537 ã«æ»ãã¦ãªã¿ã¼ã³ããã°ããï¼ 473 * 割込み/CPU例外処理からのリターンにより,CPUロック解除状態に遷 474 * 移するようにする必要があるが,ARMはCPSRのビットによってCPUロッ 475 * ク状態を表しているため,CPSRを元に戻してリターンすればよい. 538 476 */ 539 477 ALABEL(irq_handler_5) 540 pop {r0,r1} /* ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´ãå 541 ã«æ»ã */ 478 pop {r0,r1} /* スタックポインタの調整を元に戻す */ 542 479 add sp, sp, r1 543 480 544 481 #if __TARGET_ARCH_ARM < 6 545 ldmfd sp!, {r0} /* æ»ãå 546 ã®cpsrãspsrã«è¨å® */ 482 ldmfd sp!, {r0} /* 戻り先のcpsrをspsrに設定 */ 547 483 msr spsr_cxsf, r0 548 ldmfd sp!, {r0-r5,r12,lr,pc}^ /* ã³ã³ããã¹ãã®å¾©å¸°*/549 /* ^ ä»ããªã®ã§ï¼spsr âcpsr */484 ldmfd sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */ 485 /* ^付きなので,spsr → cpsr */ 550 486 #else /* __TARGET_ARCH_ARM < 6 */ 551 487 ldmfd sp!, {r0-r5,r12,lr} … … 555 491 556 492 /* 557 * CPUä¾å¤ãã³ãã©åºå 558 ¥å£å¦ç 493 * CPU例外ハンドラ出入口処理 559 494 */ 560 495 ALABEL(start_exc_entry) 561 496 562 497 /* 563 * æªå®ç¾©å½ä»¤498 * 未定義命令 564 499 */ 565 500 #ifndef OMIT_UNDEF_HANDLER … … 569 504 ALABEL(undef_handler) 570 505 /* 571 * ããã«ã¯ï¼æªå®ç¾©ã¢ã¼ãã§åå²ãã¦ããï¼572 */ 573 #if __TARGET_ARCH_ARM < 6 574 /* 575 * I ãããã¨Fããããã»ãããï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯576 * ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼506 * ここには,未定義モードで分岐してくる. 507 */ 508 #if __TARGET_ARCH_ARM < 6 509 /* 510 * IビットとFビットをセットし,スーパバイザモードに切り換え,スク 511 * ラッチレジスタを保存する. 577 512 */ 578 513 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 579 stmfd sp!, {r0-r5,r12,lr,pc} /* pc ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/580 581 /* 582 * æªå®ç¾©ã¢ã¼ãã«æ»ãã¦ï¼æ»ãçªå°ã¨spsrãåå¾ããï¼514 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 515 516 /* 517 * 未定義モードに戻して,戻り番地とspsrを取得する. 583 518 */ 584 519 msr cpsr_c, #(CPSR_UND_MODE AOR CPSR_FIQ_IRQ_BIT) … … 587 522 588 523 /* 589 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼æ»ãçªå°ã¨spsrãä¿åããï¼524 * スーパバイザモードに切り換え,戻り番地とspsrを保存する. 590 525 */ 591 526 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 592 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å */ 593 push {r1} /* spsrãã¹ã¿ãã¯ã«ä¿å */ 594 #else /* __TARGET_ARCH_ARM < 6 */ 595 /* 596 * æ»ãå 597 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ããã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã« 598 * ä¿åããï¼ 527 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 528 push {r1} /* spsrをスタックに保存 */ 529 #else /* __TARGET_ARCH_ARM < 6 */ 530 /* 531 * 戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに 532 * 保存する. 599 533 */ 600 534 srsfd #CPSR_SVC_MODE! 601 535 602 536 /* 603 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼537 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 604 538 */ 605 539 cps #CPSR_SVC_MODE … … 611 545 612 546 /* 613 * ã¹ã¼ããã¤ã¶ã³ã¼ã«547 * スーパバイザコール 614 548 */ 615 549 #ifndef OMIT_SVC_HANDLER … … 619 553 ALABEL(svc_handler) 620 554 /* 621 * ããã«ã¯ï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã§åå²ãã¦ããï¼622 */ 623 #if __TARGET_ARCH_ARM < 6 624 /* 625 * I ãããã¨Fããããã»ãããï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼555 * ここには,スーパバイザモードで分岐してくる. 556 */ 557 #if __TARGET_ARCH_ARM < 6 558 /* 559 * IビットとFビットをセットし,スクラッチレジスタを保存する. 626 560 */ 627 561 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 628 stmfd sp!, {r0-r5,r12,lr,pc} /* pc ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/629 630 /* 631 * æ»ãçªå°ã¨spsrãåå¾ããï¼562 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 563 564 /* 565 * 戻り番地とspsrを取得する. 632 566 */ 633 567 mov r2, lr … … 635 569 636 570 /* 637 * æ»ãçªå°ã¨spsrãä¿åããï¼ 638 */ 639 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å */ 640 push {r1} /* spsrãã¹ã¿ãã¯ã«ä¿å */ 641 #else /* __TARGET_ARCH_ARM < 6 */ 642 /* 643 * æ»ãå 644 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ããã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã« 645 * ä¿åããï¼ 571 * 戻り番地とspsrを保存する. 572 */ 573 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 574 push {r1} /* spsrをスタックに保存 */ 575 #else /* __TARGET_ARCH_ARM < 6 */ 576 /* 577 * 戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに 578 * 保存する. 646 579 */ 647 580 srsfd #CPSR_SVC_MODE! 648 581 649 582 /* 650 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã§ï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼651 */ 652 cps #CPSR_SVC_MODE /* ä¸è¦ã¨æããã*/583 * スーパバイザモードで,スクラッチレジスタを保存する. 584 */ 585 cps #CPSR_SVC_MODE /* 不要と思われる */ 653 586 stmfd sp!, {r0-r5,r12,lr} 654 587 #endif /* __TARGET_ARCH_ARM < 6 */ … … 658 591 659 592 /* 660 * ããªãã§ããã¢ãã¼ã593 * プリフェッチアボート 661 594 */ 662 595 #ifndef OMIT_PABORT_HANDLER … … 666 599 ALABEL(pabort_handler) 667 600 /* 668 * ããã«ã¯ï¼ã¢ãã¼ãã¢ã¼ãã§åå²ãã¦ããï¼669 */ 670 #if __TARGET_ARCH_ARM < 6 671 /* 672 * I ãããã¨Fããããã»ãããï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯673 * ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼601 * ここには,アボートモードで分岐してくる. 602 */ 603 #if __TARGET_ARCH_ARM < 6 604 /* 605 * IビットとFビットをセットし,スーパバイザモードに切り換え,スク 606 * ラッチレジスタを保存する. 674 607 */ 675 608 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 676 stmfd sp!, {r0-r5,r12,lr,pc} /* pc ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/677 678 /* 679 * ã¢ãã¼ãã¢ã¼ãã«æ»ãã¦ï¼æ»ãçªå°ã¨spsrãåå¾ããï¼609 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 610 611 /* 612 * アボートモードに戻して,戻り番地とspsrを取得する. 680 613 */ 681 614 msr cpsr_c, #(CPSR_ABT_MODE AOR CPSR_FIQ_IRQ_BIT) … … 684 617 685 618 /* 686 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼æ»ãçªå°ã¨spsrãä¿åããï¼619 * スーパバイザモードに切り換え,戻り番地とspsrを保存する. 687 620 */ 688 621 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 689 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å */ 690 push {r1} /* spsrãã¹ã¿ãã¯ã«ä¿å */ 691 #else /* __TARGET_ARCH_ARM < 6 */ 692 /* 693 * æ»ãå 694 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ããã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã« 695 * ä¿åããï¼ 622 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 623 push {r1} /* spsrをスタックに保存 */ 624 #else /* __TARGET_ARCH_ARM < 6 */ 625 /* 626 * 戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに 627 * 保存する. 696 628 */ 697 629 srsfd #CPSR_SVC_MODE! 698 630 699 631 /* 700 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼632 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 701 633 */ 702 634 cps #CPSR_SVC_MODE … … 708 640 709 641 /* 710 * ãã¼ã¿ã¢ãã¼ã642 * データアボート 711 643 */ 712 644 #ifndef OMIT_DABORT_HANDLER … … 716 648 ALABEL(dabort_handler) 717 649 /* 718 * ããã«ã¯ï¼ã¢ãã¼ãã¢ã¼ãã§åå²ãã¦ããï¼650 * ここには,アボートモードで分岐してくる. 719 651 * 720 * ãã¼ã¿ã¢ãã¼ããï¼CPUä¾å¤ã®å 721 ¥å£ï¼start_exc_entryã¨end_exc_entry 722 * ã®éï¼ã§çºçããå ´åã«ã¯ï¼fatal_dabort_handlerã«åå²ããï¼ã¢ãã¼ 723 * ãã¢ã¼ãã®spãæ±ç¨ã¬ã¸ã¹ã¿ã®ä»£ããã«ä½¿ç¨ããï¼ 652 * データアボートが,CPU例外の入口(start_exc_entryとend_exc_entry 653 * の間)で発生した場合には,fatal_dabort_handlerに分岐する.アボー 654 * トモードのspを汎用レジスタの代わりに使用する. 724 655 */ 725 656 ldr sp, =start_exc_entry+8 … … 733 664 #if __TARGET_ARCH_ARM < 6 734 665 /* 735 * I ãããã¨Fããããã»ãããï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯736 * ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼666 * IビットとFビットをセットし,スーパバイザモードに切り換え,スク 667 * ラッチレジスタを保存する. 737 668 */ 738 669 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 739 stmfd sp!, {r0-r5,r12,lr,pc} /* pc ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/740 741 /* 742 * ã¢ãã¼ãã¢ã¼ãã«æ»ãã¦ï¼æ»ãçªå°ã¨spsrãåå¾ããï¼670 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 671 672 /* 673 * アボートモードに戻して,戻り番地とspsrを取得する. 743 674 */ 744 675 msr cpsr_c, #(CPSR_ABT_MODE AOR CPSR_FIQ_IRQ_BIT) … … 747 678 748 679 /* 749 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼æ»ãçªå°ã¨spsrãä¿åããï¼680 * スーパバイザモードに切り換え,戻り番地とspsrを保存する. 750 681 */ 751 682 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 752 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å */ 753 push {r1} /* spsrãã¹ã¿ãã¯ã«ä¿å */ 754 #else /* __TARGET_ARCH_ARM < 6 */ 755 /* 756 * æ»ãå 757 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ããã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã« 758 * ä¿åããï¼ 683 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 684 push {r1} /* spsrをスタックに保存 */ 685 #else /* __TARGET_ARCH_ARM < 6 */ 686 /* 687 * 戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに 688 * 保存する. 759 689 */ 760 690 srsfd #CPSR_SVC_MODE! 761 691 762 692 /* 763 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼693 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 764 694 */ 765 695 cps #CPSR_SVC_MODE … … 771 701 772 702 /* 773 * CPUä¾å¤ã®å 774 ¥å£ã§çºçãããã¼ã¿ã¢ãã¼ã 703 * CPU例外の入口で発生したデータアボート 775 704 */ 776 705 ALABEL(fatal_dabort_handler) 777 706 #if __TARGET_ARCH_ARM < 6 778 707 /* 779 * I ãããã¨Fããããã»ãããï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¿ã780 * ã¯ãã¤ã³ã¿ãåæåãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼708 * IビットとFビットをセットし,スーパバイザモードに切り換え,スタッ 709 * クポインタを初期化し,スクラッチレジスタを保存する. 781 710 */ 782 711 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 783 712 ldr sp, =istkpt 784 713 ldr sp, [sp] 785 stmfd sp!, {r0-r5,r12,lr,pc} /* pc ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/786 787 /* 788 * ã¢ãã¼ãã¢ã¼ãã«æ»ãã¦ï¼æ»ãçªå°ã¨spsrãåå¾ããï¼714 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 715 716 /* 717 * アボートモードに戻して,戻り番地とspsrを取得する. 789 718 */ 790 719 msr cpsr_c, #(CPSR_ABT_MODE AOR CPSR_FIQ_IRQ_BIT) … … 793 722 794 723 /* 795 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼æ»ãçªå°ã¨spsrãä¿åããï¼724 * スーパバイザモードに切り換え,戻り番地とspsrを保存する. 796 725 */ 797 726 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 798 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å*/799 push {r1} /* spsr ãã¹ã¿ãã¯ã«ä¿å*/800 #else /* __TARGET_ARCH_ARM < 6 */ 801 /* 802 * I ãããã¨Fããããã»ãããï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¿ã803 * ã¯ãã¤ã³ã¿ãåæåããï¼727 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 728 push {r1} /* spsrをスタックに保存 */ 729 #else /* __TARGET_ARCH_ARM < 6 */ 730 /* 731 * IビットとFビットをセットし,スーパバイザモードに切り換え,スタッ 732 * クポインタを初期化する. 804 733 */ 805 734 cpsid if, #CPSR_SVC_MODE … … 808 737 809 738 /* 810 * ã¢ãã¼ãã¢ã¼ãã«æ»ãã¦ï¼æ»ãå 811 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ã 812 * ãã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã«ä¿åããï¼ 739 * アボートモードに戻して,戻り先(lr)とspsr(cpsr_svc)をスーパ 740 * バイザモードのスタックに保存する. 813 741 */ 814 742 cps #CPSR_ABT_MODE … … 816 744 817 745 /* 818 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼746 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 819 747 */ 820 748 cps #CPSR_SVC_MODE … … 823 751 824 752 /* 825 * ä¾å¤ãã¹ãã«ã¦ã³ãã®æä¸ä½ãããã1ã«ããï¼753 * 例外ネストカウントの最上位ビットを1にする. 826 754 */ 827 755 ldr r2, =excpt_nest_count … … 842 770 ALABEL(fiq_handler) 843 771 /* 844 * ããã«ã¯ï¼FIQã¢ã¼ãã§åå²ãã¦ããï¼845 */ 846 #if __TARGET_ARCH_ARM < 6 847 /* 848 * I ãããã¨Fããããã»ãããï¼ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯849 * ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼772 * ここには,FIQモードで分岐してくる. 773 */ 774 #if __TARGET_ARCH_ARM < 6 775 /* 776 * IビットとFビットをセットし,スーパバイザモードに切り換え,スク 777 * ラッチレジスタを保存する. 850 778 */ 851 779 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 852 stmfd sp!, {r0-r5,r12,lr,pc} /* pc ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/853 854 /* 855 * FIQ ã¢ã¼ãã«æ»ãã¦ï¼æ»ãçªå°ã¨spsrãåå¾ããï¼780 stmfd sp!, {r0-r5,r12,lr,pc} /* pcはスペース確保のため */ 781 782 /* 783 * FIQモードに戻して,戻り番地とspsrを取得する. 856 784 */ 857 785 msr cpsr_c, #(CPSR_FIQ_MODE AOR CPSR_FIQ_IRQ_BIT) … … 860 788 861 789 /* 862 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼æ»ãçªå°ã¨spsrãä¿åããï¼790 * スーパバイザモードに切り換え,戻り番地とspsrを保存する. 863 791 */ 864 792 msr cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT) 865 str r2, [sp,#0x20] /* æ»ãçªå°ãã¹ã¿ãã¯ã«ä¿å */ 866 push {r1} /* spsrãã¹ã¿ãã¯ã«ä¿å */ 867 #else /* __TARGET_ARCH_ARM < 6 */ 868 /* 869 * æ»ãå 870 ï¼lrï¼ã¨spsrï¼cpsr_svcï¼ãã¹ã¼ããã¤ã¶ã¢ã¼ãã®ã¹ã¿ãã¯ã« 871 * ä¿åããï¼ 793 str r2, [sp,#0x20] /* 戻り番地をスタックに保存 */ 794 push {r1} /* spsrをスタックに保存 */ 795 #else /* __TARGET_ARCH_ARM < 6 */ 796 /* 797 * 戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに 798 * 保存する. 872 799 */ 873 800 srsfd #CPSR_SVC_MODE! 874 801 875 802 /* 876 * ã¹ã¼ããã¤ã¶ã¢ã¼ãã«åãæãï¼ã¹ã¯ã©ããã¬ã¸ã¹ã¿ãä¿åããï¼803 * スーパバイザモードに切り換え,スクラッチレジスタを保存する. 877 804 */ 878 805 cps #CPSR_SVC_MODE … … 886 813 887 814 /* 888 * CPUä¾å¤ãã³ãã©åºå 889 ¥å£å¦çã®å 890 ±éé¨å 815 * CPU例外ハンドラ出入口処理の共通部分 891 816 * 892 * ããã®æç¹ã®ã¬ã¸ã¹ã¿ç¶æ 893 ã 894 * r4ï¼CPUä¾å¤ãã³ãã©çªå· 817 * 【この時点のレジスタ状態】 818 * r4:CPU例外ハンドラ番号 895 819 */ 896 820 ALABEL(exc_handler_1) 897 821 /* 898 * CPUä¾å¤ãçºçããç¶æ³ã®å¤æã«ç¨ããããã«ï¼CPUä¾å¤çºçåã®å² 899 * è¾¼ã¿åªå 900 度ãã¹ã¯ã¨ä¾å¤ãã¹ãã«ã¦ã³ããã¹ã¿ãã¯ã«ä¿åããï¼ 822 * CPU例外が発生した状況の判断に用いるために,CPU例外発生前の割 823 * 込み優先度マスクと例外ネストカウントをスタックに保存する. 901 824 */ 902 825 bl irc_get_intpri 903 push {r0} /* å²è¾¼ã¿åªå 904 度ãã¹ã¯ãä¿å */ 826 push {r0} /* 割込み優先度マスクを保存 */ 905 827 ldr r2, =excpt_nest_count 906 828 ldr r3, [r2] 907 push {r3} /* ä¾å¤ãã¹ãã«ã¦ã³ããä¿å */ 908 mov r5, sp /* CPUä¾å¤ã®æ 909 å ±ãè¨æ¶ãã¦ããé åã® */ 910 /* å 911 é çªå°ãr5ã«ä¿å */ 912 /* 913 * ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´ 829 push {r3} /* 例外ネストカウントを保存 */ 830 mov r5, sp /* CPU例外の情報を記憶している領域の */ 831 /* 先頭番地をr5に保存 */ 832 /* 833 * スタックポインタの調整 914 834 */ 915 835 and r1, sp, #4 916 836 sub sp, sp, r1 917 push {r0,r1} /* r0 ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/918 919 /* 920 * ã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ãå¤å®ãã837 push {r0,r1} /* r0はスペース確保のため */ 838 839 /* 840 * カーネル管理外のCPU例外か判定する 921 841 * 922 * ã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ã¯ï¼ã«ã¼ãã«å®è¡ä¸ï¼å 923 ¨å²è¾¼ã¿ããã¯ç¶æ 924 ï¼ 925 * CPUããã¯ç¶æ 926 ï¼ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ãã³ãã©å®è¡ä¸ã«çºçãã 927 * CPUä¾å¤ã§ããï¼ARMã³ã¢ã®å ´åã¯ï¼æ»ãå 928 ã®CPSRã®IããããFããã 929 * ã®ãããããã»ããããã¦ãããªãï¼ãã該å½ããï¼ 930 */ 931 ldr r1, [r5,#T_EXCINF_cpsr] /* ä¾å¤ãã¬ã¼ã ããcpsrãåå¾ */ 842 * カーネル管理外のCPU例外は,カーネル実行中,全割込みロック状態, 843 * CPUロック状態,カーネル管理外の割込みハンドラ実行中に発生した 844 * CPU例外である.ARMコアの場合は,戻り先のCPSRのIビットかFビット 845 * のいずれかがセットされているなら,これ該当する. 846 */ 847 ldr r1, [r5,#T_EXCINF_cpsr] /* 例外フレームからcpsrを取得 */ 932 848 ands r1, r1, #CPSR_FIQ_IRQ_BIT 933 bne nk_exc_handler_1 /* ã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ã®å¦ç㸠*/ 934 935 /* 936 * ããã®æç¹ã®ã¬ã¸ã¹ã¿ç¶æ 937 ã 938 * r2ï¼excpt_nest_countã®çªå° 939 * r3ï¼excpt_nest_countã®å¤ 940 * r4ï¼CPUä¾å¤ãã³ãã©çªå· 941 * r5ï¼CPUä¾å¤ã®æ 942 å ±ãè¨æ¶ãã¦ããé åã®å 943 é çªå° 944 */ 945 946 /* 947 * ä¾å¤ãã¹ãã«ã¦ã³ããã¤ã³ã¯ãªã¡ã³ãããï¼ 849 bne nk_exc_handler_1 /* カーネル管理外のCPU例外の処理へ */ 850 851 /* 852 * 【この時点のレジスタ状態】 853 * r2:excpt_nest_countの番地 854 * r3:excpt_nest_countの値 855 * r4:CPU例外ハンドラ番号 856 * r5:CPU例外の情報を記憶している領域の先頭番地 857 */ 858 859 /* 860 * 例外ネストカウントをインクリメントする. 948 861 */ 949 862 add r3, r3, #1 950 863 str r3, [r2] 951 teq r3, #1 /* CPU ä¾å¤çºçåãéã¿ã¹ã¯ã³ã³ããã¹ã*/952 bne exc_handler_2 /* ãªãexc_handler_2ã«åå²*/864 teq r3, #1 /* CPU例外発生前が非タスクコンテキスト */ 865 bne exc_handler_2 /* ならexc_handler_2に分岐 */ 953 866 954 867 #ifdef TOPPERS_SUPPORT_OVRHDR 955 868 /* 956 * ãªã¼ãã©ã³ã¿ã¤ããåæ¢ããï¼869 * オーバランタイマを停止する. 957 870 */ 958 871 bl ovrtimer_stop … … 960 873 961 874 /* 962 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã«åãæããï¼963 */ 964 mov r3, sp /* ãã®æç¹ã®ã¹ã¿ãã¯ãã¤ã³ã¿ãr3ã«*/965 ldr r2, =istkpt /* éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã«*/875 * 非タスクコンテキスト用のスタックに切り換える. 876 */ 877 mov r3, sp /* この時点のスタックポインタをr3に */ 878 ldr r2, =istkpt /* 非タスクコンテキスト用のスタックに */ 966 879 ldr sp, [r2] 967 push {r0,r3} /* åæãåã®ã¹ã¿ãã¯ãã¤ã³ã¿ãä¿å*/968 /* r0 ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/880 push {r0,r3} /* 切換え前のスタックポインタを保存 */ 881 /* r0はスペース確保のため */ 969 882 ALABEL(exc_handler_2) 970 883 /* 971 * ããã®æç¹ã®ã¬ã¸ã¹ã¿ç¶æ 972 ã 973 * r4ï¼CPUä¾å¤ãã³ãã©çªå· 974 * r5ï¼CPUä¾å¤ã®æ 975 å ±ãè¨æ¶ãã¦ããé åã®å 976 é çªå° 977 */ 978 979 /* 980 * ï¼å¿ 981 è¦ãªãï¼å²è¾¼ã¿ã³ã³ããã¼ã©ãæä½ããï¼ 884 * 【この時点のレジスタ状態】 885 * r4:CPU例外ハンドラ番号 886 * r5:CPU例外の情報を記憶している領域の先頭番地 887 */ 888 889 /* 890 * (必要なら)割込みコントローラを操作する. 982 891 */ 983 892 bl irc_begin_exc 984 893 985 894 /* 986 * CPUããã¯è§£é¤ç¶æ 987 ã«ããï¼ 895 * CPUロック解除状態にする. 988 896 * 989 * ã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ãã³ãã©ã¯å¥ã«ã¼ãã³ã§å¼ã³åºãããï¼åç´990 * ã«å²è¾¼ã¿ã許å¯ããã ãã§ããï¼897 * カーネル管理外のCPU例外ハンドラは別ルーチンで呼び出すため,単純 898 * に割込みを許可するだけでよい. 991 899 */ 992 900 #if __TARGET_ARCH_ARM < 6 … … 1001 909 1002 910 /* 1003 * ãã°åºåã®å¼åºã911 * ログ出力の呼出し 1004 912 */ 1005 913 #ifdef LOG_EXC_ENTER 1006 mov r0, r4 /* CPU ä¾å¤çªå·ããã©ã¡ã¼ã¿ã«æ¸¡ã*/914 mov r0, r4 /* CPU例外番号をパラメータに渡す */ 1007 915 bl log_exc_enter 1008 916 #endif /* LOG_EXC_ENTER */ 1009 917 1010 918 /* 1011 * CPUä¾å¤ãã³ãã©ã®å¼åºã 1012 */ 1013 ldr r2, =exc_table /* CPUä¾å¤ãã³ãã©ãã¼ãã«ã®èªè¾¼ã¿ */ 1014 ldr r3, [r2,r4,lsl #2] /* CPUä¾å¤ãã³ãã©ã®çªå° â r3 */ 1015 mov r0, r5 /* CPUä¾å¤ã®æ 1016 å ±ãè¨æ¶ãã¦ããé åã® */ 1017 /* å 1018 é çªå°ã第1ãã©ã¡ã¼ã¿ã«æ¸¡ã */ 1019 mov r1, r4 /* CPUä¾å¤çªå·ã第2ãã©ã¡ã¼ã¿ã«æ¸¡ã */ 1020 mov lr, pc /* CPUä¾å¤ãã³ãã©ã®å¼åºã */ 919 * CPU例外ハンドラの呼出し 920 */ 921 ldr r2, =exc_table /* CPU例外ハンドラテーブルの読込み */ 922 ldr r3, [r2,r4,lsl #2] /* CPU例外ハンドラの番地 → r3 */ 923 mov r0, r5 /* CPU例外の情報を記憶している領域の */ 924 /* 先頭番地を第1パラメータに渡す */ 925 mov r1, r4 /* CPU例外番号を第2パラメータに渡す */ 926 mov lr, pc /* CPU例外ハンドラの呼出し */ 1021 927 bx r3 1022 928 1023 929 /* 1024 * ãã°åºåã®å¼åºã930 * ログ出力の呼出し 1025 931 */ 1026 932 #ifdef LOG_EXC_LEAVE 1027 mov r0, r4 /* CPU ä¾å¤çªå·ããã©ã¡ã¼ã¿ã«æ¸¡ã*/933 mov r0, r4 /* CPU例外番号をパラメータに渡す */ 1028 934 bl log_exc_leave 1029 935 #endif /* LOG_EXC_LEAVE */ 1030 936 1031 937 /* 1032 * ã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ãç¦æ¢ããï¼938 * カーネル管理の割込みを禁止する. 1033 939 */ 1034 940 #if __TARGET_ARCH_ARM < 6 … … 1043 949 1044 950 /* 1045 * å²è¾¼ã¿ã³ã³ããã¼ã©ãæä½ãã¦ï¼å²è¾¼ã¿åªå 1046 度ãã¹ã¯ãï¼CPUä¾å¤çº 1047 * çæã®å¤ã«è¨å®ããï¼ 951 * 割込みコントローラを操作して,割込み優先度マスクを,CPU例外発 952 * 生時の値に設定する. 1048 953 */ 1049 954 bl irc_end_exc 1050 955 1051 956 /* 1052 * ä¾å¤ãã¹ãã«ã¦ã³ãããã¯ãªã¡ã³ãããï¼957 * 例外ネストカウントをデクリメントする. 1053 958 */ 1054 959 ldr r2, =excpt_nest_count 1055 960 ldr r3, [r2] 1056 961 subs r3, r3, #1 1057 str r3, [r2] /* æ»ãå 1058 ãéã¿ã¹ã¯ã³ã³ããã¹ããªã */ 1059 bne exc_handler_5 /* exc_handler_5ã«åå² */ 1060 1061 /* 1062 * ã¿ã¹ã¯ç¨ã®ã¹ã¿ãã¯ã«æ»ãï¼ 962 str r3, [r2] /* 戻り先が非タスクコンテキストなら */ 963 bne exc_handler_5 /* exc_handler_5に分岐 */ 964 965 /* 966 * タスク用のスタックに戻す. 1063 967 */ 1064 968 pop {r0,r3} … … 1066 970 1067 971 /* 1068 * p_runtsk ãNULLãå¤å®ããï¼1069 */ 1070 ldr r0, =p_runtsk /* p_runtsk âr0 */972 * p_runtskがNULLか判定する. 973 */ 974 ldr r0, =p_runtsk /* p_runtsk → r0 */ 1071 975 ldr r0, [r0] 1072 tst r0, r0 /* p_runtskãNULLã§ãªããã° */ 1073 bne exc_handler_3 /* exc_handler_3ã«åå² */ 1074 1075 /* 1076 * ã¿ã¹ã¯ã®ã¹ã¿ãã¯ã«ä¿åããã¹ã¯ã©ããã¬ã¸ã¹ã¿çãæ¨ã¦ãï¼ 1077 */ 1078 pop {r0,r1} /* ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´ãå 1079 ã«æ»ã */ 976 tst r0, r0 /* p_runtskがNULLでなければ */ 977 bne exc_handler_3 /* exc_handler_3に分岐 */ 978 979 /* 980 * タスクのスタックに保存したスクラッチレジスタ等を捨てる. 981 */ 982 pop {r0,r1} /* スタックポインタの調整を元に戻す */ 1080 983 add sp, sp, r1 1081 add sp, sp, #48 /* ã¹ã¯ã©ããã¬ã¸ã¹ã¿ã¨CPUä¾å¤ãçºçãã */ 1082 b dispatcher_0 /* ç¶æ³ãå¤æããããã®è¿½å æ 1083 å ±ãæ¨ã¦ã */ 1084 1085 /* 1086 * ãã£ã¹ããããå¿ 1087 è¦ãå¤å®ããï¼ 984 add sp, sp, #48 /* スクラッチレジスタとCPU例外が発生した */ 985 b dispatcher_0 /* 状況を判断するための追加情報を捨てる */ 986 987 /* 988 * ディスパッチが必要か判定する. 1088 989 */ 1089 990 ALABEL(exc_handler_3) 1090 ldr r1, =p_schedtsk /* p_schedtsk âr1 */991 ldr r1, =p_schedtsk /* p_schedtsk → r1 */ 1091 992 ldr r1, [r1] 1092 teq r0, r1 /* p_runtsk ã¨p_schedtskãåããªã*/1093 beq exc_handler_4 /* exc_handler_4 ã¸*/1094 1095 /* 1096 * ã³ã³ããã¹ããä¿åããï¼1097 */ 1098 stmfd sp!, {r6-r11} /* éã¹ã¯ã©ããã¬ã¸ã¹ã¿ã®ä¿å*/1099 str sp, [r0,#TCB_sp] /* ã¹ã¿ãã¯ãã¤ã³ã¿ãä¿å*/1100 adr r1, ret_exc_r /* å®è¡åéçªå°ãä¿å*/993 teq r0, r1 /* p_runtskとp_schedtskが同じなら */ 994 beq exc_handler_4 /* exc_handler_4へ */ 995 996 /* 997 * コンテキストを保存する. 998 */ 999 stmfd sp!, {r6-r11} /* 非スクラッチレジスタの保存 */ 1000 str sp, [r0,#TCB_sp] /* スタックポインタを保存 */ 1001 adr r1, ret_exc_r /* 実行再開番地を保存 */ 1101 1002 str r1, [r0,#TCB_pc] 1102 b dispatcher /* r0 ã«ã¯p_runtskãæ ¼ç´ããã¦ãã*/1003 b dispatcher /* r0にはp_runtskが格納されている */ 1103 1004 1104 1005 ALABEL(ret_exc_r) 1105 1006 /* 1106 * ã³ã³ããã¹ãã復帰ããï¼1107 */ 1108 ldmfd sp!, {r6-r11} /* éã¹ã¯ã©ããã¬ã¸ã¹ã¿ã®å¾©å¸°*/1007 * コンテキストを復帰する. 1008 */ 1009 ldmfd sp!, {r6-r11} /* 非スクラッチレジスタの復帰 */ 1109 1010 1110 1011 ALABEL(exc_handler_4) 1111 1012 #ifdef TOPPERS_SUPPORT_OVRHDR 1112 1013 /* 1113 * ãªã¼ãã©ã³ã¿ã¤ããåä½éå§ããï¼1014 * オーバランタイマを動作開始する. 1114 1015 */ 1115 1016 bl ovrtimer_start … … 1117 1018 1118 1019 /* 1119 * CPU ä¾å¤å¦çããã®ãªã¿ã¼ã³1020 * CPU例外処理からのリターン 1120 1021 * 1121 * CPUä¾å¤å¦çããã®ãªã¿ã¼ã³ã«ããï¼CPUããã¯è§£é¤ç¶æ 1122 ã«é·ç§»ããã 1123 * ãã«ããå¿ 1124 è¦ããããï¼ARMã¯CPSRã®ãããã«ãã£ã¦CPUããã¯ç¶æ 1125 ã 1126 * 表ãã¦ããããï¼CPSRãå 1127 ã«æ»ãã¦ãªã¿ã¼ã³ããã°ããï¼ 1022 * CPU例外処理からのリターンにより,CPUロック解除状態に遷移するよ 1023 * うにする必要があるが,ARMはCPSRのビットによってCPUロック状態を 1024 * 表しているため,CPSRを元に戻してリターンすればよい. 1128 1025 */ 1129 1026 ALABEL(exc_handler_5) 1130 pop {r0,r1} /* ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´ãå 1131 ã«æ»ã */ 1027 pop {r0,r1} /* スタックポインタの調整を元に戻す */ 1132 1028 add sp, sp, r1 1133 add sp, sp, #8 /* ã¹ã¿ãã¯ä¸ã®æ 1134 å ±ãæ¨ã¦ã */ 1135 1136 #if __TARGET_ARCH_ARM < 6 1137 ldmfd sp!, {r0} /* æ»ãå 1138 ã®cpsrãspsrã«è¨å® */ 1029 add sp, sp, #8 /* スタック上の情報を捨てる */ 1030 1031 #if __TARGET_ARCH_ARM < 6 1032 ldmfd sp!, {r0} /* 戻り先のcpsrをspsrに設定 */ 1139 1033 msr spsr_cxsf, r0 1140 ldmfd sp!, {r0-r5,r12,lr,pc}^ /* ã³ã³ããã¹ãã®å¾©å¸°*/1141 /* ^ ä»ããªã®ã§ï¼spsr âcpsr */1034 ldmfd sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */ 1035 /* ^付きなので,spsr → cpsr */ 1142 1036 #else /* __TARGET_ARCH_ARM < 6 */ 1143 1037 ldmfd sp!, {r0-r5,r12,lr} … … 1146 1040 1147 1041 /* 1148 * ã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ã®åºå 1149 ¥å£å¦ç 1042 * カーネル管理外のCPU例外の出入口処理 1150 1043 */ 1151 1044 ALABEL(nk_exc_handler_1) 1152 1045 /* 1153 * ããã®æç¹ã®ã¬ã¸ã¹ã¿ç¶æ 1154 ã 1155 * r1ï¼CPUä¾å¤çºçåã®CPSRã®Fãããã¨Iãããã®å¤ 1156 * r2ï¼excpt_nest_countã®çªå° 1157 * r3ï¼excpt_nest_countã®å¤ 1158 * r4ï¼CPUä¾å¤ãã³ãã©çªå· 1159 * r5ï¼CPUä¾å¤ã®æ 1160 å ±ãè¨æ¶ãã¦ããé åã®å 1161 é çªå° 1162 */ 1163 1164 /* 1165 * ä¾å¤ãã¹ãã«ã¦ã³ããã¤ã³ã¯ãªã¡ã³ãããï¼ 1046 * 【この時点のレジスタ状態】 1047 * r1:CPU例外発生前のCPSRのFビットとIビットの値 1048 * r2:excpt_nest_countの番地 1049 * r3:excpt_nest_countの値 1050 * r4:CPU例外ハンドラ番号 1051 * r5:CPU例外の情報を記憶している領域の先頭番地 1052 */ 1053 1054 /* 1055 * 例外ネストカウントをインクリメントする. 1166 1056 */ 1167 1057 add r3, r3, #1 1168 1058 str r3, [r2] 1169 teq r3, #1 /* CPU ä¾å¤çºçåãéã¿ã¹ã¯ã³ã³ããã¹ã*/1170 bne nk_exc_handler_2 /* ãªãnk_exc_handler_2ã«åå²*/1171 1172 /* 1173 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã«åãæããï¼1174 */ 1175 mov r3, sp /* ãã®æç¹ã®ã¹ã¿ãã¯ãã¤ã³ã¿ãr3ã«*/1176 ldr r2, =istkpt /* éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯ã«*/1059 teq r3, #1 /* CPU例外発生前が非タスクコンテキスト */ 1060 bne nk_exc_handler_2 /* ならnk_exc_handler_2に分岐 */ 1061 1062 /* 1063 * 非タスクコンテキスト用のスタックに切り換える. 1064 */ 1065 mov r3, sp /* この時点のスタックポインタをr3に */ 1066 ldr r2, =istkpt /* 非タスクコンテキスト用のスタックに */ 1177 1067 ldr sp, [r2] 1178 push {r0,r3} /* åæãåã®ã¹ã¿ãã¯ãã¤ã³ã¿ãä¿å*/1179 /* r0 ã¯ã¹ãã¼ã¹ç¢ºä¿ã®ãã*/1068 push {r0,r3} /* 切換え前のスタックポインタを保存 */ 1069 /* r0はスペース確保のため */ 1180 1070 ALABEL(nk_exc_handler_2) 1181 1071 /* 1182 * ã·ã¹ãã ç¶æ 1183 ï¼ã³ã³ããã¹ãã¯é¤ãï¼ãï¼CPUä¾å¤çºçæã®ç¶æ 1184 㸠1072 * システム状態(コンテキストは除く)を,CPU例外発生時の状態へ 1185 1073 */ 1186 1074 orr r1, r1, #CPSR_SVC_MODE … … 1188 1076 1189 1077 /* 1190 * CPUä¾å¤ãã³ãã©ã®å¼åºã 1191 */ 1192 ldr r2, =exc_table /* CPUä¾å¤ãã³ãã©ãã¼ãã«ã®èªè¾¼ã¿ */ 1193 ldr r3, [r2,r4,lsl #2] /* CPUä¾å¤ãã³ãã©ã®çªå° â r3 */ 1194 mov r0, r5 /* CPUä¾å¤ã®æ 1195 å ±ãè¨æ¶ãã¦ããé åã® */ 1196 /* å 1197 é çªå°ã第1ãã©ã¡ã¼ã¿ã«æ¸¡ã */ 1198 mov r1, r4 /* CPUä¾å¤çªå·ã第2ãã©ã¡ã¼ã¿ã«æ¸¡ã */ 1199 mov lr, pc /* CPUä¾å¤ãã³ãã©ã®å¼åºã */ 1078 * CPU例外ハンドラの呼出し 1079 */ 1080 ldr r2, =exc_table /* CPU例外ハンドラテーブルの読込み */ 1081 ldr r3, [r2,r4,lsl #2] /* CPU例外ハンドラの番地 → r3 */ 1082 mov r0, r5 /* CPU例外の情報を記憶している領域の */ 1083 /* 先頭番地を第1パラメータに渡す */ 1084 mov r1, r4 /* CPU例外番号を第2パラメータに渡す */ 1085 mov lr, pc /* CPU例外ハンドラの呼出し */ 1200 1086 bx r3 1201 1087 1202 1088 /* 1203 * ä¾å¤ãã¹ãã«ã¦ã³ãããã¯ãªã¡ã³ãããï¼1089 * 例外ネストカウントをデクリメントする. 1204 1090 */ 1205 1091 ldr r2, =excpt_nest_count 1206 1092 ldr r3, [r2] 1207 1093 subs r3, r3, #1 1208 str r3, [r2] /* æ»ãå 1209 ãéã¿ã¹ã¯ã³ã³ããã¹ããªã */ 1210 bne exc_handler_5 /* exc_handler_5ã«åå² */ 1211 1212 /* 1213 * ã¿ã¹ã¯ç¨ã®ã¹ã¿ãã¯ã«æ»ãï¼ 1094 str r3, [r2] /* 戻り先が非タスクコンテキストなら */ 1095 bne exc_handler_5 /* exc_handler_5に分岐 */ 1096 1097 /* 1098 * タスク用のスタックに戻す. 1214 1099 */ 1215 1100 pop {r0,r3} … … 1218 1103 1219 1104 /* 1220 * ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®æä½é¢æ°1105 * ステータスレジスタの操作関数 1221 1106 * 1222 * Thumb ã¢ã¼ãã§ã¯mrs/msrå½ä»¤ã使ç¨ã§ããªãããï¼é¢æ°ã¨ãã¦å®ç¾ãã¦ï¼1223 * ARM ã¢ã¼ãã«ç§»è¡ãã¦å®è¡ããï¼1107 * Thumbモードではmrs/msr命令が使用できないため,関数として実現して, 1108 * ARMモードに移行して実行する. 1224 1109 */ 1225 1110 #ifdef __thumb__ … … 1241 1126 1242 1127 /* 1243 * å¾®å°æéå¾ 1244 ã¡ 1128 * 微少時間待ち 1245 1129 * 1246 * ãã£ãã·ã¥ã©ã¤ã³ã®ã©ã®å ´æã«ãããã®ãã£ã¦å®è¡æéãå¤ããããï¼å¤§1247 * ããã®åä½ã§ã¢ã©ã¤ã³ãã¦ããï¼1130 * キャッシュラインのどの場所にあるかのよって実行時間が変わるため,大 1131 * きめの単位でアラインしている. 1248 1132 */ 1249 1133 ATEXT … … 1252 1136 ALABEL(sil_dly_nse) 1253 1137 mov r1, #0 1254 mcr p15, 0, r1, c7, c5, 6 /* åå²äºæ¸¬å 1255 ¨ä½ã®ç¡å¹å */ 1138 mcr p15, 0, r1, c7, c5, 6 /* 分岐予測全体の無効化 */ 1256 1139 asm_inst_sync_barrier r3 1257 1140 subs r0, r0, #SIL_DLY_TIM1 1258 1141 bxls lr 1259 1142 ALABEL(sil_dly_nse1) 1260 mcr p15, 0, r1, c7, c5, 6 /* åå²äºæ¸¬å 1261 ¨ä½ã®ç¡å¹å */ 1143 mcr p15, 0, r1, c7, c5, 6 /* 分岐予測全体の無効化 */ 1262 1144 asm_inst_sync_barrier r3 1263 1145 subs r0, r0, #SIL_DLY_TIM2 -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_syssvc.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 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 * 免責すること. 45 31 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ã·ã¹ãã ãµã¼ãã¹ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼42 * システムサービスのコア依存部(ARM用) 58 43 * 59 * ãã®ããããã¡ã¤ã«ã¯ï¼target_syssvc.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ã60 * ããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤61 * ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼44 * このヘッダファイルは,target_syssvc.h(または,そこからインクルード 45 * されるファイル)のみからインクルードされる.他のファイルから直接イ 46 * ンクルードしてはならない. 62 47 */ 63 48 … … 69 54 70 55 /* 71 * ããã©ã¼ãã³ã¹ã¢ãã¿ã«ããæ§è½è©ä¾¡56 * パフォーマンスモニタによる性能評価 72 57 */ 73 58 #if defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7 74 59 75 60 /* 76 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®ã«ã¦ã³ã¿ã®ãã¼ã¿å61 * パフォーマンスモニタのカウンタのデータ型 77 62 */ 78 63 typedef uint32_t PMCNT; 79 64 80 65 /* 81 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®åæå66 * パフォーマンスモニタの初期化 82 67 */ 83 68 Inline void … … 87 72 88 73 /* 89 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®æå¹å74 * パフォーマンスモニタの有効化 90 75 * 91 * TOPPERS_ARM_PMCNT_DIV64 ãå®ç¾©ããã¦ããå ´åã¯ï¼64ã¯ããã¯æ¯ã«ã«92 * ã¦ã³ãã¢ããããï¼é·ãæéãè¨æ¸¬ãããå ´åã«æå¹ï¼ï¼76 * TOPPERS_ARM_PMCNT_DIV64が定義されている場合は,64クロック毎にカ 77 * ウントアップする(長い時間を計測したい場合に有効). 93 78 */ 94 79 CP15_READ_PMCR(reg); … … 104 89 105 90 /* 106 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®ã«ã¦ã³ã¿ã®æå¹å91 * パフォーマンスモニタのカウンタの有効化 107 92 */ 108 93 CP15_READ_PMCNTENSET(reg); … … 112 97 113 98 /* 114 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®ã«ã¦ã³ã¿ã®èªã¿è¾¼ã¿99 * パフォーマンスモニタのカウンタの読み込み 115 100 */ 116 101 Inline void … … 121 106 122 107 /* 123 * ã«ã¦ã³ã¿å¤ã®æéè¨æ¸¬åä½ã¸ã®å¤æ108 * カウンタ値の時間計測単位への変換 124 109 * 125 * æéè¨æ¸¬ã®åä½ã¯ï¼0.1ãã¤ã¯ãç§ã¨ãã¦ããï¼110 * 時間計測の単位は,0.1マイクロ秒としている. 126 111 */ 127 112 Inline uint_t … … 135 120 136 121 /* 137 * å®è¡æéåå¸éè¨ãµã¼ãã¹ã®è¨å®122 * 実行時間分布集計サービスの設定 138 123 */ 139 124 #define HISTTIM PMCNT -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_test.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 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 * 免責すること. 45 31 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ãã¹ãããã°ã©ã ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼42 * テストプログラムのコア依存部(ARM用) 58 43 * 59 * ãã®ããããã¡ã¤ã«ã¯ï¼target_test.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ãã60 * ãããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤ã³61 * ã¯ã«ã¼ããã¦ã¯ãªããªãï¼44 * このヘッダファイルは,target_test.h(または,そこからインクルードさ 45 * れるファイル)のみからインクルードされる.他のファイルから直接イン 46 * クルードしてはならない. 62 47 */ 63 48 … … 69 54 70 55 /* 71 * CPU ä¾å¤ã®çºç56 * CPU例外の発生 72 57 */ 73 58 74 59 #ifndef ILLEGAL_IADDR 75 #define ILLEGAL_IADDR 0xd0000000U /* ä¸æ£å½ä»¤ã¢ãã¬ã¹*/60 #define ILLEGAL_IADDR 0xd0000000U /* 不正命令アドレス */ 76 61 #endif /* ILLEGAL_IADDR */ 77 62 78 63 #ifndef ILLEGAL_DADDR 79 #define ILLEGAL_DADDR 0xd0000000U /* ä¸æ£ãã¼ã¿ã¢ãã¬ã¹*/64 #define ILLEGAL_DADDR 0xd0000000U /* 不正データアドレス */ 80 65 #endif /* ILLEGAL_DADDR */ 81 66 82 67 /* 83 * ã¹ã¼ããã¤ã¶ã³ã¼ã«ã«ããCPUä¾å¤ã®çºç68 * スーパバイザコールによるCPU例外の発生 84 69 * 85 * CPU ä¾å¤ãã³ãã©ããï¼ãã®ã¾ã¾ãªã¿ã¼ã³ãããã¨ãã§ããï¼svcå½ä»¤ã«ã86 * ãlrã¬ã¸ã¹ã¿ãä¸æ¸ããããããï¼lrã¬ã¸ã¹ã¿ã¯ç ´å£ããããã®ã¨æå®ã87 * ã¦ããï¼70 * CPU例外ハンドラから,そのままリターンすることができる.svc命令によ 71 * りlrレジスタが上書きされるため,lrレジスタは破壊されるものと指定し 72 * ている. 88 73 */ 89 74 #if defined(USE_SVC_CPUEXC) 90 75 91 #define CPUEXC1 EXCNO_SVC /* ã¹ã¼ããã¤ã¶ã³ã¼ã«*/76 #define CPUEXC1 EXCNO_SVC /* スーパバイザコール */ 92 77 #define RAISE_CPU_EXCEPTION Asm("svc #0":::"lr") 93 78 #define PREPARE_RETURN_CPUEXC 94 79 95 80 /* 96 * ããªãã§ããã¢ãã¼ãã«ããCPUä¾å¤ã®çºç81 * プリフェッチアボートによるCPU例外の発生 97 82 * 98 * ããªãã§ããã¢ãã¼ããèµ·ãããå½ä»¤ãã¹ããããã¦CPUä¾å¤ãã³ãã©ãã99 * ãªã¿ã¼ã³ããããã«ï¼æ»ãçªå°ã¯ãã®ã¾ã¾ã§è¯ãï¼ARMã¢ã¼ãã§ä½¿ããã¨ã100 * æ³å®ï¼ï¼83 * プリフェッチアボートを起こした命令をスキップしてCPU例外ハンドラから 84 * リターンするために,戻り番地はそのままで良い(ARMモードで使うことを 85 * 想定). 101 86 */ 102 87 #elif defined(USE_PABORT_CPUEXC) 103 88 104 #define CPUEXC1 EXCNO_PABORT /* ããªãã§ããã¢ãã¼ã*/89 #define CPUEXC1 EXCNO_PABORT /* プリフェッチアボート */ 105 90 #define RAISE_CPU_EXCEPTION ((void (*)(void)) ILLEGAL_IADDR)() 106 91 #define PREPARE_RETURN_CPUEXC 107 92 108 93 /* 109 * ãã¼ã¿ã¢ãã¼ãã«ããCPUä¾å¤ã®çºç94 * データアボートによるCPU例外の発生 110 95 * 111 * ãã¼ã¿ã¢ãã¼ããèµ·ãããå½ä»¤ãã¹ããããã¦CPUä¾å¤ãã³ãã©ãããªã¿ã¼112 * ã³ããããã«ï¼æ»ãçªå°ãã4ãæ¸ç®ããï¼ARMã¢ã¼ãã§ä½¿ããã¨ãæ³å®ï¼ï¼96 * データアボートを起こした命令をスキップしてCPU例外ハンドラからリター 97 * ンするために,戻り番地から4を減算する(ARMモードで使うことを想定). 113 98 */ 114 99 #elif defined(USE_DABORT_CPUEXC) 115 100 116 101 #include "arm.h" 117 #define CPUEXC1 EXCNO_DABORT /* ãã¼ã¿ã¢ãã¼ã*/102 #define CPUEXC1 EXCNO_DABORT /* データアボート */ 118 103 #define RAISE_CPU_EXCEPTION (void)(*((volatile uint32_t *) ILLEGAL_DADDR)) 119 104 #define PREPARE_RETURN_CPUEXC ((T_EXCINF *) p_excinf)->pc -= 4U 120 105 121 106 /* 122 * ãã§ã¤ã¿ã«ãã¼ã¿ã¢ãã¼ãå¦ç107 * フェイタルデータアボート処理 123 108 * 124 * ã¹ã¿ãã¯ãã¤ã³ã¿ãä¸æ£ã«ãã¦ï¼ãã§ã¤ã¿ã«ãã¼ã¿ã¢ãã¼ãå¦çãè¡ãã125 * ãï¼CPUä¾å¤ãã³ãã©ããã¯ãªã¿ã¼ã³ã§ããªãï¼109 * スタックポインタを不正にして,フェイタルデータアボート処理を行わせ 110 * る.CPU例外ハンドラからはリターンできない. 126 111 */ 127 112 #elif defined(USE_FATAL_DABORT_CPUEXC) 128 113 129 #define CPUEXC1 EXCNO_DABORT /* ãã¼ã¿ã¢ãã¼ã*/114 #define CPUEXC1 EXCNO_DABORT /* データアボート */ 130 115 #define RAISE_CPU_EXCEPTION Asm("mov sp, %0"::"I"(ILLEGAL_DADDR)) 131 116 132 117 /* 133 * æªå®ç¾©å½ä»¤ã«ããCPUä¾å¤ã®çºç118 * 未定義命令によるCPU例外の発生 134 119 * 135 * RAISE_CPU_EXCEPTIONã¯ï¼ARMã¢ã¼ãã§ä½¿ããã¨ãæ³å®ãã¦ããï¼CPUä¾å¤ã 136 * ã³ãã©ããï¼ãã®ã¾ã¾ãªã¿ã¼ã³ãããã¨ãã§ããï¼ä½¿ç¨ãã¦ããæªå®ç¾©å½ 137 * 令ã¯ï¼"Multiply and multiply accumulate"å½ä»¤ç¾¤ã®ã¨ã³ã³ã¼ãã£ã³ã°å 138 139 * ã«ãããæªå®ç¾©å½ä»¤ã§ããï¼ 120 * RAISE_CPU_EXCEPTIONは,ARMモードで使うことを想定している.CPU例外ハ 121 * ンドラから,そのままリターンすることができる.使用している未定義命 122 * 令は,"Multiply and multiply accumulate"命令群のエンコーディング内 123 * における未定義命令である. 140 124 */ 141 125 #else 142 126 143 #define CPUEXC1 EXCNO_UNDEF /* æªå®ç¾©å½ä»¤*/127 #define CPUEXC1 EXCNO_UNDEF /* 未定義命令 */ 144 128 #define RAISE_CPU_EXCEPTION Asm(".word 0xf0500090") 145 129 #define PREPARE_RETURN_CPUEXC -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_unrename.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/gic_kernel_impl.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 44 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 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 * 免責すること. 30 * 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ã«ã¼ãã«ã®å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åé¨ï¼GICç¨ï¼41 * カーネルの割込みコントローラ依存部(GIC用) 57 42 */ 58 43 … … 63 48 64 49 /* 65 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®æä½66 */ 67 68 /* 69 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®åæå50 * CPUインタフェースの操作 51 */ 52 53 /* 54 * CPUインタフェースの初期化 70 55 */ 71 56 void … … 73 58 { 74 59 /* 75 * CPU ã¤ã³ã¿ãã§ã¼ã¹ããã£ã¹ã¨ã¼ãã«60 * CPUインタフェースをディスエーブル 76 61 */ 77 62 sil_wrw_mem(GICC_CTLR, GICC_CTLR_DISABLE); 78 63 79 64 /* 80 * å²è¾¼ã¿åªå 81 度ãã¹ã¯ãæä½åªå 82 度ã«è¨å® 65 * 割込み優先度マスクを最低優先度に設定 83 66 */ 84 67 gicc_set_priority((GIC_PRI_LEVEL - 1) << GIC_PRI_SHIFT); 85 68 86 69 /* 87 * å²è¾¼ã¿åªå 88 度ã®å 89 ¨ãããæå¹ã« 70 * 割込み優先度の全ビット有効に 90 71 */ 91 72 sil_wrw_mem(GICC_BPR, 0U); 92 73 93 74 /* 94 * ã¢ã¯ãã£ããªå²è¾¼ã¿ãããã°ï¼EOIã«ããã¯ãªã¢ãã75 * アクティブな割込みがあれば,EOIによりクリアする 95 76 */ 96 77 sil_wrw_mem(GICC_EOIR, sil_rew_mem(GICC_IAR)); 97 78 98 79 /* 99 * CPU ã¤ã³ã¿ãã§ã¼ã¹ãã¤ãã¼ãã«80 * CPUインタフェースをイネーブル 100 81 */ 101 82 #ifdef TOPPERS_SAFEG_SECURE … … 108 89 109 90 /* 110 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®çµäºå¦ç91 * CPUインタフェースの終了処理 111 92 */ 112 93 void … … 117 98 118 99 /* 119 * ãã£ã¹ããªãã¥ã¼ã¿ã®æä½120 */ 121 122 /* 123 * ãã£ã¹ããªãã¥ã¼ã¿ã®åæå100 * ディストリビュータの操作 101 */ 102 103 /* 104 * ディストリビュータの初期化 124 105 */ 125 106 void … … 129 110 130 111 /* 131 * ãã£ã¹ããªãã¥ã¼ã¿ããã£ã¹ã¨ã¼ãã«112 * ディストリビュータをディスエーブル 132 113 */ 133 114 sil_wrw_mem(GICD_CTLR, GICD_CTLR_DISABLE); … … 135 116 #ifdef TOPPERS_SAFEG_SECURE 136 117 /* 137 * ãã¹ã¦ã®å²è¾¼ã¿ãã°ã«ã¼ã1ï¼IRQï¼ã«è¨å®118 * すべての割込みをグループ1(IRQ)に設定 138 119 */ 139 120 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 143 124 144 125 /* 145 * ãã¹ã¦ã®å²è¾¼ã¿ãç¦æ¢126 * すべての割込みを禁止 146 127 */ 147 128 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 150 131 151 132 /* 152 * ãã¹ã¦ã®å²è¾¼ã¿ãã³ãã£ã³ã°ãã¯ãªã¢133 * すべての割込みペンディングをクリア 153 134 */ 154 135 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 157 138 158 139 /* 159 * ãã¹ã¦ã®å²è¾¼ã¿ãæä½åªå 160 度ã«è¨å® 140 * すべての割込みを最低優先度に設定 161 141 */ 162 142 for (i = 0; i < (GIC_TNUM_INTNO + 3) / 4; i++){ … … 165 145 166 146 /* 167 * ãã¹ã¦ã®å 168 ±æããªãã§ã©ã«å²è¾¼ã¿ã®ã¿ã¼ã²ãããããã»ããµ0ã«è¨å® 147 * すべての共有ペリフェラル割込みのターゲットをプロセッサ0に設定 169 148 */ 170 149 for (i = GIC_INTNO_SPI0 / 4; i < (GIC_TNUM_INTNO + 3) / 4; i++) { … … 173 152 174 153 /* 175 * ãã¹ã¦ã®ããªãã§ã©ã«å²è¾¼ã¿ãã¬ãã«ããªã¬ã«è¨å®154 * すべてのペリフェラル割込みをレベルトリガに設定 176 155 */ 177 156 for (i = GIC_INTNO_PPI0 / 16; i < (GIC_TNUM_INTNO + 15) / 16; i++) { … … 184 163 185 164 /* 186 * ãã£ã¹ããªãã¥ã¼ã¿ãã¤ãã¼ãã«165 * ディストリビュータをイネーブル 187 166 */ 188 167 sil_wrw_mem(GICD_CTLR, GICD_CTLR_ENABLE); … … 190 169 191 170 /* 192 * ãã£ã¹ããªãã¥ã¼ã¿ã®çµäºå¦ç171 * ディストリビュータの終了処理 193 172 */ 194 173 void … … 201 180 202 181 /* 203 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®å±æ§ã®è¨å®204 * 205 * ASP ã«ã¼ãã«ã§ã®å©ç¨ãæ³å®ãã¦ï¼ãã©ã¡ã¼ã¿ã¨ã©ã¼ã¯ã¢ãµã¼ã·ã§ã³ã§ãã§ã206 * ã¯ãã¦ããï¼182 * 割込み要求ラインの属性の設定 183 * 184 * ASPカーネルでの利用を想定して,パラメータエラーはアサーションでチェッ 185 * クしている. 207 186 */ 208 187 Inline void … … 213 192 214 193 /* 215 * å²è¾¼ã¿ãç¦æ¢194 * 割込みを禁止 216 195 * 217 * å²è¾¼ã¿ãåãä»ããã¾ã¾ï¼ã¬ãã«ããªã¬ï¼ã¨ãã¸ããªã¬ã®è¨å®ãï¼å² 218 * è¾¼ã¿åªå 219 度ã®è¨å®ãè¡ãã®ã¯å±éºãªããï¼å²è¾¼ã¿å±æ§ã«ãããããï¼ 220 * ä¸æ¦ãã¹ã¯ããï¼ 196 * 割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割 197 * 込み優先度の設定を行うのは危険なため,割込み属性にかかわらず, 198 * 一旦マスクする. 221 199 */ 222 200 disable_int(intno); 223 201 224 202 /* 225 * å²è¾¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³203 * 割込みをコンフィギュレーション 226 204 */ 227 205 #ifdef TOPPERS_SAFEG_SECURE … … 246 224 247 225 /* 248 * å²è¾¼ã¿åªå 249 度ã¨ã¿ã¼ã²ããããã»ããµãè¨å® 226 * 割込み優先度とターゲットプロセッサを設定 250 227 */ 251 228 gicd_set_priority(intno, INT_IPM(intpri)); … … 253 230 254 231 /* 255 * å²è¾¼ã¿ã許å¯232 * 割込みを許可 256 233 */ 257 234 if ((intatr & TA_ENAINT) != 0U) { … … 261 238 262 239 /* 263 * å²è¾¼ã¿ç®¡çæ©è½ã®åæå240 * 割込み管理機能の初期化 264 241 */ 265 242 void -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/gic_kernel_impl.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 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 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ã«ã¼ãã«ã®å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åé¨ï¼GICç¨ï¼57 * 58 * ãã®ããããã¡ã¤ã«ã¯ï¼target_kernel_impl.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯59 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã60 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼41 * カーネルの割込みコントローラ依存部(GIC用) 42 * 43 * このヘッダファイルは,target_kernel_impl.h(または,そこからインク 44 * ルードされるファイル)のみからインクルードされる.他のファイルから 45 * 直接インクルードしてはならない. 61 46 */ 62 47 … … 68 53 69 54 /* 70 * å²è¾¼ã¿çªå·ã®æ°ï¼æå°å¤ã¨æ大å¤55 * 割込み番号の数,最小値と最大値 71 56 */ 72 57 #define TNUM_INTNO GIC_TNUM_INTNO … … 75 60 76 61 /* 77 * å²è¾¼ã¿ãã³ãã©çªå·ã®æ°62 * 割込みハンドラ番号の数 78 63 */ 79 64 #define TNUM_INHNO GIC_TNUM_INTNO 80 65 81 66 /* 82 * å²è¾¼ã¿çªå·ã®å®ç¾©67 * 割込み番号の定義 83 68 */ 84 69 #define GIC_INTNO_SGI0 0U … … 87 72 88 73 /* 89 * å²è¾¼ã¿åªå 90 度ã®æä½ 91 * 92 * å²è¾¼ã¿åªå 93 度ã®å 94 é¨è¡¨ç¾ã¯ï¼uint_tåã§è¡¨ãï¼0ãæé«åªå 95 度ã§ï¼å¤ã大ã 96 * ãã»ã©åªå 97 度ãä¸ãããã®ã¨ããï¼GICã®ã¬ã¸ã¹ã¿æ§æã¨æ´åãããããã«ï¼ 98 * åªå 99 度ã®æ®µæ°ã256段éã®æã«ãããã¦è¡¨ãï¼ 74 * 割込み優先度の操作 75 * 76 * 割込み優先度の内部表現は,uint_t型で表し,0が最高優先度で,値が大き 77 * いほど優先度が下がるものとする.GICのレジスタ構成と整合させるために, 78 * 優先度の段数が256段階の時にあわせて表す. 100 79 */ 101 80 #define GIC_PRI_LEVEL (TMAX_INTPRI - TMIN_INTPRI + 2) … … 120 99 #endif /* GIC_PRI_LEVEL == 16 */ 121 100 122 /* å¤é¨è¡¨ç¾ã¸ã®å¤æ*/101 /* 外部表現への変換 */ 123 102 #define EXT_IPM(pri) \ 124 103 (((PRI)((pri) >> GIC_PRI_SHIFT)) - (GIC_PRI_LEVEL - 1)) 125 104 126 /* å 127 é¨è¡¨ç¾ã¸ã®å¤æ */ 105 /* 内部表現への変換 */ 128 106 #define INT_IPM(ipm) \ 129 107 (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT) 130 108 131 109 /* 132 * GICã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãå®ç¾©ããããã®ãã¯ã 133 * 134 * GICã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãï¼ã¢ã»ã³ããªè¨èªãããåç 135 §ã§ããããã«ããã 136 * ãã®ãã¯ãï¼ 110 * GICレジスタのアドレスを定義するためのマクロ 111 * 112 * GICレジスタのアドレスを,アセンブリ言語からも参照できるようにするた 113 * めのマクロ. 137 114 */ 138 115 #ifndef GIC_REG … … 141 118 142 119 /* 143 * CPU ã¤ã³ã¿ãã§ã¼ã¹é¢é£ã®å®ç¾©120 * CPUインタフェース関連の定義 144 121 */ 145 122 #define GICC_CTLR GIC_REG(GICC_BASE, 0x00) … … 152 129 153 130 /* 154 * CPU ã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICC_CTLRï¼ã®è¨å®å¤ï¼GICv1ã§ã»ãã¥ãª155 * ãã£æ¡å¼µããªãå ´åï¼131 * CPUインタフェース制御レジスタ(GICC_CTLR)の設定値(GICv1でセキュリ 132 * ティ拡張がない場合) 156 133 */ 157 134 #define GICC_CTLR_DISABLE UINT_C(0x00) … … 159 136 160 137 /* 161 * CPU ã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICC_CTLRï¼ã®è¨å®å¤ï¼GICv2ã§ã»ãã¥ãª162 * ãã£æ¡å¼µããªãå ´åãï¼æ¡å¼µãããå ´åã®ã»ãã¥ã¢ã¢ã¼ãï¼138 * CPUインタフェース制御レジスタ(GICC_CTLR)の設定値(GICv2でセキュリ 139 * ティ拡張がない場合か,拡張がある場合のセキュアモード) 163 140 */ 164 141 #ifdef TOPPERS_SAFEG_SECURE … … 170 147 171 148 /* 172 * ãã£ã¹ããªãã¥ã¼ã¿é¢é£ã®å®ç¾©149 * ディストリビュータ関連の定義 173 150 */ 174 151 #define GICD_CTLR GIC_REG(GICD_BASE, 0x000) … … 191 168 192 169 /* 193 * ãã£ã¹ããªãã¥ã¼ã¿å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICD_CTLRï¼ã®è¨å®å¤170 * ディストリビュータ制御レジスタ(GICD_CTLR)の設定値 194 171 */ 195 172 #define GICD_CTLR_DISABLE UINT_C(0x00) … … 197 174 198 175 /* 199 * å²è¾¼ã¿ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¬ã¸ã¹ã¿ï¼GICD_ICFGRnï¼ã®è¨å®å¤ 200 * 201 * 第1ãããã¯ï¼ARM11 MPCoreããã³GICã®æ©ãææã®å®è£ 202 ã§ã¯å²è¾¼ã¿ã®éç¥ 203 * å 204 ããã»ããµãè¨å®ããããã«ä½¿ç¨ããã¦ããï¼ 176 * 割込みコンフィギュレーションレジスタ(GICD_ICFGRn)の設定値 177 * 178 * 第1ビットは,ARM11 MPCoreおよびGICの早い時期の実装では割込みの通知 179 * 先プロセッサを設定するために使用されている. 205 180 */ 206 181 #define GICD_ICFGRn_LEVEL UINT_C(0x00) … … 214 189 215 190 /* 216 * CPUã¤ã³ã¿ãã§ã¼ã¹ã®æä½ 217 */ 218 219 /* 220 * å²è¾¼ã¿åªå 221 度ãã¹ã¯ãè¨å®ï¼priã¯å 222 é¨è¡¨ç¾ï¼ 191 * CPUインタフェースの操作 192 */ 193 194 /* 195 * 割込み優先度マスクを設定(priは内部表現) 223 196 */ 224 197 Inline void … … 229 202 230 203 /* 231 * å²è¾¼ã¿åªå 232 度ãã¹ã¯ãåå¾ï¼å 233 é¨è¡¨ç¾ã§è¿ãï¼ 204 * 割込み優先度マスクを取得(内部表現で返す) 234 205 */ 235 206 Inline uint_t … … 240 211 241 212 /* 242 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®åæå213 * CPUインタフェースの初期化 243 214 */ 244 215 extern void gicc_initialize(void); 245 216 246 217 /* 247 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®çµäº218 * CPUインタフェースの終了 248 219 */ 249 220 extern void gicc_terminate(void); 250 221 251 222 /* 252 * ãã£ã¹ããªãã¥ã¼ã¿ã®æä½253 */ 254 255 /* 256 * å²è¾¼ã¿ç¦æ¢ï¼å²è¾¼ã¿ã¤ãã¼ãã«ã®ã¯ãªã¢ï¼223 * ディストリビュータの操作 224 */ 225 226 /* 227 * 割込み禁止(割込みイネーブルのクリア) 257 228 */ 258 229 Inline void … … 263 234 264 235 /* 265 * å²è¾¼ã¿è¨±å¯ï¼å²è¾¼ã¿ã¤ãã¼ãã«ã®ã»ããï¼236 * 割込み許可(割込みイネーブルのセット) 266 237 */ 267 238 Inline void … … 272 243 273 244 /* 274 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ã¯ãªã¢245 * 割込みペンディングのクリア 275 246 */ 276 247 Inline void … … 281 252 282 253 /* 283 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ã»ãã254 * 割込みペンディングのセット 284 255 */ 285 256 Inline void … … 290 261 291 262 /* 292 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ãã§ãã¯263 * 割込みペンディングのチェック 293 264 */ 294 265 Inline bool_t … … 300 271 301 272 /* 302 * å²è¾¼ã¿ã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³273 * 割込みのコンフィグレーション 303 274 */ 304 275 Inline void … … 315 286 316 287 /* 317 * å²è¾¼ã¿ã°ã«ã¼ãã®è¨å®ï¼ã»ãã¥ãªãã£æ¡å¼µï¼288 * 割込みグループの設定(セキュリティ拡張) 318 289 */ 319 290 Inline void … … 330 301 331 302 /* 332 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿åªå 333 度ã®è¨å®ï¼priã¯å 334 é¨è¡¨ç¾ï¼ 303 * 割込み要求ラインに対する割込み優先度の設定(priは内部表現) 335 304 */ 336 305 Inline void … … 347 316 348 317 /* 349 * å²è¾¼ã¿ã¿ã¼ã²ããããã»ããµã®è¨å®350 * 351 * prcs ã¯ï¼ã¿ã¼ã²ããã¨ããããã»ããµã表ããããã®ãããæ¯è«çåã§æ352 * å®ããï¼353 * ããã»ããµ0 : 0x01354 * ããã»ããµ1 : 0x02355 * ããã»ããµ2 : 0x04356 * ããã»ããµ3 : 0x08318 * 割込みターゲットプロセッサの設定 319 * 320 * prcsは,ターゲットとするプロセッサを表すビットのビット毎論理和で指 321 * 定する. 322 * プロセッサ0 : 0x01 323 * プロセッサ1 : 0x02 324 * プロセッサ2 : 0x04 325 * プロセッサ3 : 0x08 357 326 */ 358 327 Inline void … … 369 338 370 339 /* 371 * ãã£ã¹ããªãã¥ã¼ã¿ã®åæå340 * ディストリビュータの初期化 372 341 */ 373 342 extern void gicd_initialize(void); 374 343 375 344 /* 376 * ãã£ã¹ããªãã¥ã¼ã¿ã®çµäº345 * ディストリビュータの終了 377 346 */ 378 347 extern void gicd_terminate(void); … … 381 350 382 351 /* 383 * å²è¾¼ã¿çªå·ã®ç¯å²ã®å¤å®352 * 割込み番号の範囲の判定 384 353 */ 385 354 #define VALID_INTNO(intno) (TMIN_INTNO <= (intno) && (intno) <= TMAX_INTNO) 386 355 387 356 /* 388 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®ããã®æ¨æºçãªåæåæ 389 å ±ãçæãã 357 * 割込み要求ラインのための標準的な初期化情報を生成する 390 358 */ 391 359 #define USE_INTINIB_TABLE 392 360 393 361 /* 394 * å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«ãçæãã362 * 割込み要求ライン設定テーブルを生成する 395 363 */ 396 364 #define USE_INTCFG_TABLE 397 365 398 366 /* 399 * ã³ã¢ä¾åé¨367 * コア依存部 400 368 */ 401 369 #include "core_kernel_impl.h" 402 370 403 371 /* 404 * ã¿ã¼ã²ããéä¾åé¨ã«æä¾ããé¢æ°372 * ターゲット非依存部に提供する関数 405 373 */ 406 374 #ifndef TOPPERS_MACRO_ONLY 407 375 408 376 /* 409 * å²è¾¼ã¿åªå 410 度ãã¹ã¯ã®è¨å® 377 * 割込み優先度マスクの設定 411 378 */ 412 379 Inline void … … 417 384 418 385 /* 419 * å²è¾¼ã¿åªå 420 度ãã¹ã¯ã®åç 421 § 386 * 割込み優先度マスクの参照 422 387 */ 423 388 Inline PRI … … 428 393 429 394 /* 430 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ãã431 * 432 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ã433 * ããï¼å²è¾¼ã¿ãç¦æ¢ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤434 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼395 * 割込み要求禁止フラグのセット 396 * 397 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのセッ 398 * トし,割込みを禁止する.割込み属性が設定されていない割込み要求ライ 399 * ンが指定された場合には,falseを返す. 435 400 */ 436 401 Inline bool_t … … 445 410 446 411 /* 447 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãªã¢448 * 449 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãª450 * ã¢ãï¼å²è¾¼ã¿ã許å¯ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤451 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼412 * 割込み要求禁止フラグのクリア 413 * 414 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのクリ 415 * アし,割込みを許可する.割込み属性が設定されていない割込み要求ライ 416 * ンが指定された場合には,falseを返す. 452 417 */ 453 418 Inline bool_t … … 462 427 463 428 /* 464 * å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢429 * 割込み要求のクリア 465 430 */ 466 431 Inline void … … 471 436 472 437 /* 473 * å²è¾¼ã¿è¦æ±ã®ãã§ãã¯438 * 割込み要求のチェック 474 439 */ 475 440 Inline bool_t … … 480 445 481 446 /* 482 * å²è¾¼ã¿è¦æ±ã®ã»ãã447 * 割込み要求のセット 483 448 */ 484 449 Inline void -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/gic_support.S
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r279 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * ã«ã¼ãã«ã®å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åé¨ã®ã¢ã»ã³ããªè¨èªé¨ï¼GICç¨ï¼43 * カーネルの割込みコントローラ依存部のアセンブリ言語部(GIC用) 59 44 */ 60 45 61 46 #define TOPPERS_MACRO_ONLY 62 47 #define TOPPERS_ASM_MACRO 63 #define UINT_C(val) (val) /* uint_t åã®å®æ°ãä½ããã¯ã*/64 #define ULONG_C(val) (val) /* ulong_t åã®å®æ°ãä½ããã¯ã*/65 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/48 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 49 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 50 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 66 51 #define GIC_REG(base, offset) ((base) + (offset)) 67 52 #include "kernel_impl.h" … … 73 58 74 59 /* 75 * å²è¾¼ã¿ãã³ãã©å¼åºãåã®å²è¾¼ã¿ã³ã³ããã¼ã©æä½60 * 割込みハンドラ呼出し前の割込みコントローラ操作 76 61 * 77 * r4ã«å²è¾¼ã¿çªå·ãè¿ãï¼irc_end_intã§ç¨ããæ 78 å ±ï¼å²è¾¼ã¿çºçåã®å²è¾¼ã¿ 79 * åªå 80 度ãã¹ã¯ï¼ãï¼ã¹ã¿ãã¯ã®å 81 é ã«ä¿åããï¼ 62 * r4に割込み番号を返す.irc_end_intで用いる情報(割込み発生前の割込み 63 * 優先度マスク)を,スタックの先頭に保存する. 82 64 */ 83 65 ATEXT … … 86 68 ALABEL(irc_begin_int) 87 69 /* 88 * å²è¾¼ã¿è¦å ãåå¾ããï¼70 * 割込み要因を取得する. 89 71 */ 90 72 ldr r1, =GICC_IAR … … 92 74 93 75 /* 94 * å²è¾¼ã¿çªå·ãæ±ããï¼76 * 割込み番号を求める. 95 77 */ 96 lsl r4, r3, #22 /* ä¸ä½10ããããåãåºã*/78 lsl r4, r3, #22 /* 下位10ビットを取り出す */ 97 79 lsr r4, r4, #22 98 80 99 81 /* 100 * å²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼82 * 割込み要求をクリアする. 101 83 */ 102 84 and r0, r4, #31 … … 108 90 109 91 /* 110 * å²è¾¼ã¿è¦å ã®å²è¾¼ã¿åªå 111 度ãæ±ãï¼å²è¾¼ã¿åªå 112 度ãã¹ã¯ã«è¨å®ããï¼ 92 * 割込み要因の割込み優先度を求め,割込み優先度マスクに設定する. 113 93 */ 114 ldr r1, =GICC_RPR /* åãä»ããå²è¾¼ã¿ã®å²è¾¼ã¿åªå 115 度ãåå¾ */ 94 ldr r1, =GICC_RPR /* 受け付けた割込みの割込み優先度を取得 */ 116 95 ldr r0, [r1] 117 ldr r1, =GICC_PMR /* å²è¾¼ã¿çºçåã®å²è¾¼ã¿åªå 118 度ãåå¾ */ 96 ldr r1, =GICC_PMR /* 割込み発生前の割込み優先度を取得 */ 119 97 ldr r2, [r1] 120 str r0, [r1] /* æ°ããå²è¾¼ã¿åªå 121 度ãã¹ã¯ãã»ãããã */ 122 asm_data_sync_barrier r0 /* å²è¾¼ã¿åªå 123 度ãã¹ã¯ãã»ãããããã®ãå¾ 124 㤠*/ 125 str r2, [sp] /* irc_end_intã§ç¨ããæ 126 å ±ãä¿å */ 98 str r0, [r1] /* 新しい割込み優先度マスクをセットする */ 99 asm_data_sync_barrier r0 /* 割込み優先度マスクがセットされるのを待つ */ 100 str r2, [sp] /* irc_end_intで用いる情報を保存 */ 127 101 128 102 /* 129 * EOI ãçºè¡ããï¼103 * EOIを発行する. 130 104 */ 131 ldr r1, =GICC_EOIR /* EOI ã¬ã¸ã¹ã¿ã¸ã®æ¸è¾¼ã¿*/105 ldr r1, =GICC_EOIR /* EOIレジスタへの書込み */ 132 106 str r3, [r1] 133 107 134 108 /* 135 * å²è¾¼ã¿çªå·ãè¿å¤ã¨ãã¦ãªã¿ã¼ã³ããï¼109 * 割込み番号を返値としてリターンする. 136 110 */ 137 111 bx lr 138 112 139 113 /* 140 * å²è¾¼ã¿ãã³ãã©å¼åºãå¾ã®å²è¾¼ã¿ã³ã³ããã¼ã©æä½114 * 割込みハンドラ呼出し後の割込みコントローラ操作 141 115 */ 142 116 ATEXT … … 145 119 ALABEL(irc_end_int) 146 120 /* 147 * å²è¾¼ã¿åªå 148 度ãã¹ã¯ãå 149 ã«æ»ãï¼ 121 * 割込み優先度マスクを元に戻す. 150 122 */ 151 ldr r2, [sp] /* irc_begin_intã§ä¿åããæ 152 å ±ã復帰 */ 153 ldr r1, =GICC_PMR /* å²è¾¼ã¿åªå 154 度ãã¹ã¯ãå 155 ã«æ»ã */ 123 ldr r2, [sp] /* irc_begin_intで保存した情報を復帰 */ 124 ldr r1, =GICC_PMR /* 割込み優先度マスクを元に戻す */ 156 125 str r2, [r1] 157 126 bx lr 158 127 159 128 /* 160 * CPUä¾å¤çºçåã®å²è¾¼ã¿åªå 161 度ã®åå¾ 129 * CPU例外発生前の割込み優先度の取得 162 130 * 163 * CPUä¾å¤ã®çºçã§å²è¾¼ã¿åªå 164 度ãå¤ãããã¨ã¯ãªãããï¼ç¾å¨ã®å²è¾¼ã¿åªå 165 166 * 度ãè¿ãï¼ 131 * CPU例外の発生で割込み優先度が変わることはないため,現在の割込み優先 132 * 度を返す. 167 133 */ 168 134 ATEXT … … 171 137 ALABEL(irc_get_intpri) 172 138 /* 173 * å²è¾¼ã¿åªå 174 度ãã¹ã¯ãå¤é¨è¡¨ç¾ã«å¤æãã¦è¿ãï¼ 139 * 割込み優先度マスクを外部表現に変換して返す. 175 140 */ 176 141 ldr r1, =GICC_PMR … … 181 146 182 147 /* 183 * CPU ä¾å¤ãã³ãã©å¼åºãåã®å²è¾¼ã¿ã³ã³ããã¼ã©æä½148 * CPU例外ハンドラ呼出し前の割込みコントローラ操作 184 149 * 185 * irc_end_excã§ç¨ããæ 186 å ±ï¼CPUä¾å¤çºçåã®å²è¾¼ã¿åªå 187 度ãã¹ã¯ï¼ãï¼ã¹ã¿ã 188 * ã¯ã®å 189 é ã«ä¿åããï¼ 150 * irc_end_excで用いる情報(CPU例外発生前の割込み優先度マスク)を,スタッ 151 * クの先頭に保存する. 190 152 */ 191 153 ATEXT … … 194 156 ALABEL(irc_begin_exc) 195 157 /* 196 * å²è¾¼ã¿åªå 197 度ãã¹ã¯ãä¿åããï¼ 158 * 割込み優先度マスクを保存する. 198 159 */ 199 ldr r1, =GICC_PMR /* ç¾å¨ã®å²è¾¼ã¿åªå 200 度ãåå¾ */ 160 ldr r1, =GICC_PMR /* 現在の割込み優先度を取得 */ 201 161 ldr r2, [r1] 202 str r2, [sp] /* irc_end_excã§ç¨ããæ 203 å ±ãä¿å */ 162 str r2, [sp] /* irc_end_excで用いる情報を保存 */ 204 163 bx lr 205 164 206 165 /* 207 * CPU ä¾å¤ãã³ãã©å¼åºãå¾ã®å²è¾¼ã¿ã³ã³ããã¼ã©æä½166 * CPU例外ハンドラ呼出し後の割込みコントローラ操作 208 167 */ 209 168 ATEXT … … 212 171 ALABEL(irc_end_exc) 213 172 /* 214 * å²è¾¼ã¿åªå 215 度ãã¹ã¯ãå 216 ã«æ»ãï¼ 173 * 割込み優先度マスクを元に戻す. 217 174 */ 218 ldr r2, [sp] /* irc_begin_excã§ä¿åããæ 219 å ±ã復帰 */ 220 ldr r1, =GICC_PMR /* å²è¾¼ã¿åªå 221 度ãã¹ã¯ãå 222 ã«æ»ã */ 175 ldr r2, [sp] /* irc_begin_excで保存した情報を復帰 */ 176 ldr r1, =GICC_PMR /* 割込み優先度マスクを元に戻す */ 223 177 str r2, [r1] 224 178 bx lr -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/sp804.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 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 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ARM Dual-Timer Module ï¼SP804ï¼ã«é¢ããå®ç¾©41 * ARM Dual-Timer Module(SP804)に関する定義 57 42 */ 58 43 … … 61 46 62 47 /* 63 * ã¿ã¤ãã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©48 * タイマレジスタの番地の定義 64 49 */ 65 50 #define SP804_LR(base) ((uint32_t *)((base) + 0x00U)) … … 72 57 73 58 /* 74 * å¶å¾¡ã¬ã¸ã¹ã¿ï¼SP804_CRï¼ã®è¨å®å¤59 * 制御レジスタ(SP804_CR)の設定値 75 60 */ 76 #define SP804_DISABLE UINT_C(0x00) /* ã¿ã¤ããã£ã¹ã¨ã¼ãã«*/77 #define SP804_ENABLE UINT_C(0x80) /* ã¿ã¤ãã¤ãã¼ãã«*/78 #define SP804_INT_ENABLE UINT_C(0x20) /* ã¿ã¤ãå²è¾¼ã¿ã¤ãã¼ãã«*/79 #define SP804_MODE_FREERUN UINT_C(0x00) /* ããªã¼ã©ã³ãã³ã°ã¢ã¼ã*/80 #define SP804_MODE_PERIODIC UINT_C(0x40) /* å¨æã¢ã¼ã*/81 #define SP804_MODE_ONESHOT UINT_C(0x01) /* ã¯ã³ã·ã§ããã¢ã¼ã*/82 #define SP804_SIZE_32 UINT_C(0x02) /* 32 ããã*/83 #define SP804_PRESCALE_1 UINT_C(0x00) /* ããªã¹ã±ã¼ã© Ã1 */84 #define SP804_PRESCALE_16 UINT_C(0x04) /* ããªã¹ã±ã¼ã© Ã16 */85 #define SP804_PRESCALE_256 UINT_C(0x08) /* ããªã¹ã±ã¼ã© Ã256 */61 #define SP804_DISABLE UINT_C(0x00) /* タイマディスエーブル */ 62 #define SP804_ENABLE UINT_C(0x80) /* タイマイネーブル */ 63 #define SP804_INT_ENABLE UINT_C(0x20) /* タイマ割込みイネーブル */ 64 #define SP804_MODE_FREERUN UINT_C(0x00) /* フリーランニングモード */ 65 #define SP804_MODE_PERIODIC UINT_C(0x40) /* 周期モード */ 66 #define SP804_MODE_ONESHOT UINT_C(0x01) /* ワンショットモード */ 67 #define SP804_SIZE_32 UINT_C(0x02) /* 32ビット */ 68 #define SP804_PRESCALE_1 UINT_C(0x00) /* プリスケーラ ×1 */ 69 #define SP804_PRESCALE_16 UINT_C(0x04) /* プリスケーラ ×16 */ 70 #define SP804_PRESCALE_256 UINT_C(0x08) /* プリスケーラ ×256 */ 86 71 87 72 #endif /* TOPPERS_SP804_H */ -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/start.S
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * ã«ã¼ãã«ç¨ã®ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ï¼ARMç¨ï¼43 * カーネル用のスタートアップモジュール(ARM用) 59 44 */ 60 45 61 46 #define TOPPERS_MACRO_ONLY 62 47 #define TOPPERS_ASM_MACRO 63 #define UINT_C(val) (val) /* uint_t åã®å®æ°ãä½ããã¯ã*/64 #define ULONG_C(val) (val) /* ulong_t åã®å®æ°ãä½ããã¯ã*/65 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/48 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 49 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 50 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 66 51 #include "kernel_impl.h" 67 52 #include "core_asm.inc" … … 72 57 ALABEL(start) 73 58 /* 74 * ããã»ããµã¢ã¼ãã®åæå59 * プロセッサモードの初期化 75 60 * 76 * ã¹ã¼ããã¤ã¶ã¢ã¼ãï¼å 77 ¨å²è¾¼ã¿ããã¯ç¶æ 78 ã«åæåããï¼ 61 * スーパバイザモード,全割込みロック状態に初期化する. 79 62 */ 80 63 msr cpsr_cxsf, #(CPSR_SVC_MODE AOR CPSR_INTLOCK) 81 64 82 65 /* 83 * ã¹ã¿ãã¯ãã¤ã³ã¿ã¨ãã¬ã¼ã ãã¤ã³ã¿ã®åæå66 * スタックポインタとフレームポインタの初期化 84 67 */ 85 68 ldr r0, =_kernel_istkpt 86 ldr sp, [r0] /* ã¹ã¿ãã¯ãã¤ã³ã¿ï¼spï¼*/87 mov fp, #0 /* ARM ã¢ã¼ãç¨ãã¬ã¼ã ãã¤ã³ã¿ï¼r11ï¼*/88 mov r7, #0 /* Thumb ã¢ã¼ãç¨ãã¬ã¼ã ãã¤ã³ã¿ï¼r7ï¼*/69 ldr sp, [r0] /* スタックポインタ(sp)*/ 70 mov fp, #0 /* ARMモード用フレームポインタ(r11)*/ 71 mov r7, #0 /* Thumbモード用フレームポインタ(r7)*/ 89 72 90 73 /* 91 * hardware_init_hook ã®å¼åºãï¼0ã§ãªãå ´åï¼74 * hardware_init_hookの呼出し(0でない場合) 92 75 * 93 * ã¿ã¼ã²ãããã¼ãã¦ã§ã¢ã«ä¾åãã¦å¿ 94 è¦ãªåæåå¦çãããå ´åã¯ï¼ 95 * hardware_init_hookã¨ããé¢æ°ãç¨æããï¼ 76 * ターゲットハードウェアに依存して必要な初期化処理がある場合は, 77 * hardware_init_hookという関数を用意する. 96 78 */ 97 79 ldr r0, =hardware_init_hook … … 102 84 #ifndef TOPPERS_OMIT_BSS_INIT 103 85 /* 104 * bss ã»ã¯ã·ã§ã³ã®ã¯ãªã¢86 * bssセクションのクリア 105 87 * 106 * BSS_START ããBSS_ENDã¾ã§ãã¼ãã¯ãªã¢ããï¼88 * BSS_STARTからBSS_ENDまでをゼロクリアする. 107 89 */ 108 90 ldr r0, =BSS_START … … 125 107 #ifndef TOPPERS_OMIT_DATA_INIT 126 108 /* 127 * data ã»ã¯ã·ã§ã³ã®åæåï¼ROMå対å¿ï¼109 * dataセクションの初期化(ROM化対応) 128 110 * 129 * DATA_START ããDATA_ENDã¾ã§ã«ï¼IDATA_START以éããã³ãã¼ããï¼130 * IDATA_START ããIDATA_ENDã¾ã§ãï¼DATA_START以éã«ã³ãã¼ããï¼111 * DATA_STARTからDATA_ENDまでに,IDATA_START以降からコピーする. 112 * IDATA_STARTからIDATA_ENDまでを,DATA_START以降にコピーする. 131 113 */ 132 114 ldr r0, =DATA_START … … 149 131 150 132 /* 151 * software_init_hook ã®å¼åºãï¼0ã§ãªãå ´åï¼133 * software_init_hookの呼出し(0でない場合) 152 134 * 153 * ã½ããã¦ã§ã¢ç°å¢ï¼ç¹ã«ã©ã¤ãã©ãªï¼ã«ä¾åãã¦å¿ 154 è¦ãªåæåå¦çã 155 * ããå ´åã¯ï¼software_init_hookã¨ããé¢æ°ãç¨æããã°ããï¼ 135 * ソフトウェア環境(特にライブラリ)に依存して必要な初期化処理が 136 * ある場合は,software_init_hookという関数を用意すればよい. 156 137 */ 157 138 ldr r0, =software_init_hook … … 161 142 162 143 /* 163 * ã«ã¼ãã«ã®èµ·å144 * カーネルの起動 164 145 */ 165 146 b sta_ker -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/tUartPL011.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ARM PrimCell UART ï¼PL011ï¼ç¨ ç°¡æSIOãã©ã¤ã42 * ARM PrimCell UART(PL011)用 簡易SIOドライバ 58 43 */ 59 44 … … 63 48 64 49 /* 65 * ããªããã£ããªéä¿¡ï¼åä¿¡é¢æ°66 */ 67 68 /* 69 * åä¿¡ãããã¡ã«æåããããï¼50 * プリミティブな送信/受信関数 51 */ 52 53 /* 54 * 受信バッファに文字があるか? 70 55 */ 71 56 Inline bool_t … … 76 61 77 62 /* 78 * éä¿¡ãããã¡ã«ç©ºãããããï¼63 * 送信バッファに空きがあるか? 79 64 */ 80 65 Inline bool_t … … 85 70 86 71 /* 87 * åä¿¡ããæåã®ååºã72 * 受信した文字の取出し 88 73 */ 89 74 Inline char … … 94 79 95 80 /* 96 * éä¿¡ããæåã®æ¸è¾¼ã¿81 * 送信する文字の書込み 97 82 */ 98 83 Inline void … … 103 88 104 89 /* 105 * ã·ãªã¢ã«I/Oãã¼ãã®ãªã¼ãã³90 * シリアルI/Oポートのオープン 106 91 */ 107 92 void … … 111 96 112 97 /* 113 * UART ããã£ã¹ã¨ã¼ãã«98 * UARTをディスエーブル 114 99 */ 115 100 sil_wrw_mem(UART_CR(ATTR_baseAddress), 0U); 116 101 117 102 /* 118 * ã¨ã©ã¼ãã©ã°ãã¯ãªã¢103 * エラーフラグをクリア 119 104 */ 120 105 sil_wrw_mem(UART_ECR(ATTR_baseAddress), 0U); 121 106 122 107 /* 123 * FIFO ã空ã«ãã108 * FIFOを空にする 124 109 */ 125 110 while (uart_pl011_getready(p_cellcb)) { … … 128 113 129 114 /* 130 * ãã¼ã¬ã¼ãã¨éä¿¡è¦æ ¼ãè¨å®115 * ボーレートと通信規格を設定 131 116 */ 132 117 sil_wrw_mem(UART_IBRD(ATTR_baseAddress), ATTR_ibrd); … … 135 120 136 121 /* 137 * UART ãã¤ãã¼ãã«122 * UARTをイネーブル 138 123 */ 139 124 sil_wrw_mem(UART_CR(ATTR_baseAddress), … … 142 127 143 128 /* 144 * ã·ãªã¢ã«I/Oãã¼ãã®ã¯ãã¼ãº129 * シリアルI/Oポートのクローズ 145 130 */ 146 131 void … … 150 135 151 136 /* 152 * UART ããã£ã¹ã¨ã¼ãã«137 * UARTをディスエーブル 153 138 */ 154 139 sil_wrw_mem(UART_CR(ATTR_baseAddress), 0U); … … 156 141 157 142 /* 158 * ã·ãªã¢ã«I/Oãã¼ãã¸ã®æåéä¿¡143 * シリアルI/Oポートへの文字送信 159 144 */ 160 145 bool_t … … 171 156 172 157 /* 173 * ã·ãªã¢ã«I/Oãã¼ãããã®æååä¿¡158 * シリアルI/Oポートからの文字受信 174 159 */ 175 160 int_t … … 185 170 186 171 /* 187 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®è¨±å¯172 * シリアルI/Oポートからのコールバックの許可 188 173 */ 189 174 void … … 206 191 207 192 /* 208 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®ç¦æ¢193 * シリアルI/Oポートからのコールバックの禁止 209 194 */ 210 195 void … … 227 212 228 213 /* 229 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããå²è¾¼ã¿å¦ç214 * シリアルI/Oポートに対する割込み処理 230 215 */ 231 216 void … … 236 221 if (uart_pl011_getready(p_cellcb)) { 237 222 /* 238 * åä¿¡éç¥ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼223 * 受信通知コールバックルーチンを呼び出す. 239 224 */ 240 225 ciSIOCBR_readyReceive(); … … 242 227 if (uart_pl011_putready(p_cellcb)) { 243 228 /* 244 * éä¿¡å¯è½ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼229 * 送信可能コールバックルーチンを呼び出す. 245 230 */ 246 231 ciSIOCBR_readySend(); -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/tUartPL011.cdl
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ARM PrimCell UART ï¼PL011ï¼ç¨ ç°¡æSIOãã©ã¤ãã®ã³ã³ãã¼ãã³ãè¨è¿°44 * ARM PrimCell UART(PL011)用 簡易SIOドライバのコンポーネント記述 60 45 */ 61 46 62 47 /* 63 * ARM PrimCell UART ï¼PL011ï¼ã«é¢ããå®ç¾©ã®ã¤ã³ãã¼ã48 * ARM PrimCell UART(PL011)に関する定義のインポート 64 49 */ 65 50 import_C("uart_pl011.h"); 66 51 67 52 /* 68 * ARM PrimCell UART ï¼PL011ï¼ç¨ ç°¡æSIOãã©ã¤ãã®ã»ã«ã¿ã¤ã53 * ARM PrimCell UART(PL011)用 簡易SIOドライバのセルタイプ 69 54 */ 70 55 celltype tUartPL011 { … … 75 60 76 61 attr { 77 uintptr_t baseAddress; /* UART ã¬ã¸ã¹ã¿ã®ãã¼ã¹ã¢ãã¬ã¹*/78 uint8_t ibrd; /* ãã¼ã¬ã¼ãï¼æ´æ°é¨ï¼ã¬ã¸ã¹ã¿ã®è¨å®å¤*/79 uint8_t fbrd; /* ãã¼ã¬ã¼ãï¼å°æ°é¨ï¼ã¬ã¸ã¹ã¿ã®è¨å®å¤*/80 uint8_t lcr_h; /* ã©ã¤ã³å¶å¾¡ã¬ã¸ã¹ã¿ã®è¨å®å¤*/62 uintptr_t baseAddress; /* UARTレジスタのベースアドレス */ 63 uint8_t ibrd; /* ボーレート(整数部)レジスタの設定値 */ 64 uint8_t fbrd; /* ボーレート(小数部)レジスタの設定値 */ 65 uint8_t lcr_h; /* ライン制御レジスタの設定値 */ 81 66 }; 82 67 }; -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/uart_pl011.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ARM PrimCell UART ï¼PL011ï¼ã«é¢ããå®ç¾©44 * ARM PrimCell UART(PL011)に関する定義 60 45 */ 61 46 … … 64 49 65 50 /* 66 * UART ã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©51 * UARTレジスタの番地の定義 67 52 */ 68 53 #define UART_DR(base) ((uint32_t *)((base) + 0x00U)) … … 81 66 82 67 /* 83 * ãã©ã°ã¬ã¸ã¹ã¿ï¼UART_FRï¼ã®åç 84 §å¤ 68 * フラグレジスタ(UART_FR)の参照値 85 69 */ 86 #define UART_FR_RXFE UINT_C(0x10) /* åä¿¡ãããã¡ã空*/87 #define UART_FR_TXFF UINT_C(0x20) /* éä¿¡ãããã¡ããã«*/70 #define UART_FR_RXFE UINT_C(0x10) /* 受信バッファが空 */ 71 #define UART_FR_TXFF UINT_C(0x20) /* 送信バッファがフル */ 88 72 89 73 /* 90 * ã©ã¤ã³å¶å¾¡ã¬ã¸ã¹ã¿ï¼UART_LCR_Hï¼ã®è¨å®å¤74 * ライン制御レジスタ(UART_LCR_H)の設定値 91 75 */ 92 #define UART_LCR_H_PEN UINT_C(0x02) /* ããªãã£ãç¨ãã*/93 #define UART_LCR_H_EPS UINT_C(0x04) /* å¶æ°ããªãã£ã«*/94 #define UART_LCR_H_STP2 UINT_C(0x08) /* ã¹ããããããã2ãããã«*/95 #define UART_LCR_H_FEN UINT_C(0x10) /* FIFO ãæå¹ã«*/96 #define UART_LCR_H_WLEN8 UINT_C(0x60) /* ãã¼ã¿é·ã8ãããã«*/76 #define UART_LCR_H_PEN UINT_C(0x02) /* パリティを用いる */ 77 #define UART_LCR_H_EPS UINT_C(0x04) /* 偶数パリティに */ 78 #define UART_LCR_H_STP2 UINT_C(0x08) /* ストップビットを2ビットに */ 79 #define UART_LCR_H_FEN UINT_C(0x10) /* FIFOを有効に */ 80 #define UART_LCR_H_WLEN8 UINT_C(0x60) /* データ長を8ビットに */ 97 81 98 82 /* 99 * å¶å¾¡ã¬ã¸ã¹ã¿ï¼UART_CRï¼ã®è¨å®å¤83 * 制御レジスタ(UART_CR)の設定値 100 84 */ 101 #define UART_CR_UARTEN UINT_C(0x0001) /* UART ãã¤ãã¼ãã«ã«*/102 #define UART_CR_TXE UINT_C(0x0100) /* éä¿¡ãã¤ãã¼ãã«ã«*/103 #define UART_CR_RXE UINT_C(0x0200) /* åä¿¡ãã¤ãã¼ãã«ã«*/85 #define UART_CR_UARTEN UINT_C(0x0001) /* UARTをイネーブルに */ 86 #define UART_CR_TXE UINT_C(0x0100) /* 送信をイネーブルに */ 87 #define UART_CR_RXE UINT_C(0x0200) /* 受信をイネーブルに */ 104 88 105 89 /* 106 * å²è¾¼ã¿ãã¹ã¯ã»ããï¼ã¯ãªã¢ã¬ã¸ã¹ã¿ï¼UART_IMSCï¼ã®è¨å®å¤90 * 割込みマスクセット/クリアレジスタ(UART_IMSC)の設定値 107 91 */ 108 #define UART_IMSC_RXIM UINT_C(0x0010) /* åä¿¡å²è¾¼ã¿ãã¹ã¯*/109 #define UART_IMSC_TXIM UINT_C(0x0020) /* éä¿¡å²è¾¼ã¿ãã¹ã¯*/92 #define UART_IMSC_RXIM UINT_C(0x0010) /* 受信割込みマスク */ 93 #define UART_IMSC_TXIM UINT_C(0x0020) /* 送信割込みマスク */ 110 94 111 95 #endif /* TOPPERS_UART_PL011_H */ -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/Makefile.chip
-
Property svn:mime-type
changed from
text/x-makefile
totext/x-makefile;charset=UTF-8
r270 r321 1 1 # 2 # Makefile ã®ãããä¾åé¨ï¼RZ/A1ç¨ï¼2 # Makefile のチップ依存部(RZ/A1用) 3 3 # 4 # $Id : Makefile.chip 720 2016-04-01 22:16:17Z ertl-hiro$4 # $Id$ 5 5 # 6 6 7 7 # 8 # ãããä¾åé¨ãã£ã¬ã¯ããªåã®å®ç¾©8 # チップ依存部ディレクトリ名の定義 9 9 # 10 10 CHIPDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/$(CHIP) 11 11 12 12 # 13 # ã³ã³ãã¤ã«ãªãã·ã§ã³13 # コンパイルオプション 14 14 # 15 15 INCLUDES := $(INCLUDES) -I$(CHIPDIR) … … 19 19 20 20 # 21 # ã«ã¼ãã«ã«é¢ããå®ç¾©21 # カーネルに関する定義 22 22 # 23 23 KERNEL_DIRS := $(KERNEL_DIRS) $(CHIPDIR) … … 27 27 28 28 # 29 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©29 # コンフィギュレータ関係の変数の定義 30 30 # 31 31 CFG_TABS := $(CFG_TABS) --symval-table $(CHIPDIR)/chip_sym.def 32 32 33 33 # 34 # ã³ã¢ä¾åé¨34 # コア依存部 35 35 # 36 36 include $(SRCDIR)/arch/$(CORE)_$(TOOL)/common/Makefile.core -
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 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 * 免責すること. 45 31 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * kernel.h ã®ã¿ã¼ã²ããä¾åé¨ï¼RZ/A1ç¨ï¼42 * kernel.hのターゲット依存部(RZ/A1用) 58 43 * 59 * ãã®ããããã¡ã¤ã«ã¯ï¼kernel.hããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«60 * ããç´æ¥ã¤ã³ã¯ã«ã¼ããããã¨ã¯ãªãï¼ãã®ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ããã61 * åã«ï¼t_stddef.hãã¤ã³ã¯ã«ã¼ããããã®ã§ï¼ããã«ä¾åãã¦ãããï¼44 * このヘッダファイルは,kernel.hからインクルードされる.他のファイル 45 * から直接インクルードすることはない.このファイルをインクルードする 46 * 前に,t_stddef.hがインクルードされるので,それに依存してもよい. 62 47 */ 63 48 … … 66 51 67 52 /* 68 * å²è¾¼ã¿åªå 69 度ã®ç¯å² 53 * 割込み優先度の範囲 70 54 */ 71 #define TMIN_INTPRI (-31) /* å²è¾¼ã¿åªå 72 度ã®æå°å¤ï¼æé«å¤ï¼*/ 73 #define TMAX_INTPRI (-1) /* å²è¾¼ã¿åªå 74 度ã®æ大å¤ï¼æä½å¤ï¼*/ 55 #define TMIN_INTPRI (-31) /* 割込み優先度の最小値(最高値)*/ 56 #define TMAX_INTPRI (-1) /* 割込み優先度の最大値(最低値)*/ 75 57 76 58 /* 77 * ã¿ã¼ã²ããå®ç¾©ã®å²è¾¼ã¿è¦æ±ã©ã¤ã³å±æ§59 * ターゲット定義の割込み要求ライン属性 78 60 */ 79 #define TA_NEGEDGE 0x04U /* ãã¬ãã£ãã¨ãã¸ããªã¬*/80 #define TA_POSEDGE 0x08U /* ãã¸ãã£ãã¨ãã¸ããªã¬*/81 #define TA_BOTHEDGE 0x0cU /* 両ã¨ãã¸ããªã¬*/61 #define TA_NEGEDGE 0x04U /* ネガティブエッジトリガ */ 62 #define TA_POSEDGE 0x08U /* ポジティブエッジトリガ */ 63 #define TA_BOTHEDGE 0x0cU /* 両エッジトリガ */ 82 64 83 65 /* 84 * ãµãã¼ãã§ããæ©è½ã®å®ç¾©66 * サポートできる機能の定義 85 67 * 86 * ena_int ï¼dis_intã¨ãªã¼ãã©ã³ãã³ãã©ããµãã¼ããããã¨ãã§ããï¼68 * ena_int/dis_intとオーバランハンドラをサポートすることができる. 87 69 */ 88 70 #define TOPPERS_TARGET_SUPPORT_ENA_INT /* ena_int */ … … 91 73 92 74 /* 93 * é«å解è½ã¿ã¤ãã®ã¿ã¤ãå¨æ75 * 高分解能タイマのタイマ周期 94 76 * 95 * 2^32 / 33.33 â¦ã丸ããå¤ã¨ããï¼77 * 2^32 / 33.33…を丸めた値とする. 96 78 */ 97 79 #define TCYC_HRTCNT 128849019U 98 80 99 81 /* 100 * é«å解è½ã¿ã¤ãã®ã«ã¦ã³ãå¤ã®é²ã¿å¹ 101 82 * 高分解能タイマのカウント値の進み幅 102 83 */ 103 84 #define TSTEP_HRTCNT 1U 104 85 105 86 /* 106 * ãªã¼ãã©ã³ãã³ãã©ã®æ®ãããã»ããµæéã«æå®ã§ããæ大å¤87 * オーバランハンドラの残りプロセッサ時間に指定できる最大値 107 88 * 108 * ãã®å¤ãOSã¿ã¤ãã¸ã®è¨å®å¤ã«å¤æãã¦ã¿ã¤ãã«è¨å®ããå¾ï¼ã¿ã¤ãã®ç¾109 * å¨å¤ãèªã¿åºãã¦Î¼ç§åä½ã«å¤æã§ããå¤ã¨ãã¦ããï¼ã¿ã¤ãã®ç¾å¨å¤ã110 * μç§åä½ã«å¤æããæã«34ãå ããããï¼ä»¥ä¸ã®æ¡ä»¶ãæºããæ大ã®å¤ã¨111 * ããï¼89 * この値をOSタイマへの設定値に変換してタイマに設定した後,タイマの現 90 * 在値を読み出してμ秒単位に変換できる値としている.タイマの現在値を 91 * μ秒単位に変換する時に34を加えるため,以下の条件を満たす最大の値と 92 * する. 112 93 * (TMAX_OVRTIM * 33 + TMAX_OVRTIM / 3 + 1) + 34 < 2^32 113 94 */ … … 115 96 116 97 /* 117 * ã³ã¢ã§å 118 ±éãªå®ç¾© 98 * コアで共通な定義 119 99 */ 120 100 #include "core_kernel.h" -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹2ã®çæã¹ã¯ãªããã®ãããä¾åé¨ï¼RZ/A1ç¨ï¼3 # パス2の生成スクリプトのチップ依存部(RZ/A1用) 4 4 # 5 5 6 6 # 7 # 使ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·7 # 使用できる割込み番号とそれに対応する割込みハンドラ番号 8 8 # 9 9 if $TOPPERS_RZA1H … … 15 15 16 16 # 17 # ã¿ã¼ã²ããå®ç¾©ã®å²è¾¼ã¿è¦æ±ã©ã¤ã³å±æ§17 # ターゲット定義の割込み要求ライン属性 18 18 # 19 19 $TARGET_INTATR = $TA_NEGEDGE|$TA_POSEDGE|$TA_BOTHEDGE 20 20 21 21 # 22 # çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨22 # 生成スクリプトのコア依存部 23 23 # 24 24 IncludeTrb("core_kernel.trb") 25 25 26 26 # 27 # å²è¾¼ã¿è¦æ±ã©ã¤ã³å±æ§ã«é¢ããã¿ã¼ã²ããä¾åã®ã¨ã©ã¼ãã§ãã¯27 # 割込み要求ライン属性に関するターゲット依存のエラーチェック 28 28 # 29 29 $cfgData[:CFG_INT].each do |key, params| 30 30 if $INTNO_IRQ0 <= key && key <= $INTNO_IRQ7 31 # IRQ å²è¾¼ã¿ã®å ´å32 # ï¼TA_EDGEãã»ããããã¦ããå ´åï¼31 # IRQ割込みの場合 32 #(TA_EDGEがセットされている場合) 33 33 if (params[:intatr] & $TA_EDGE) != 0 34 34 error_illegal_sym("E_RSATR", params, :intatr, :intno) 35 35 end 36 36 else 37 # ãã®ä»ã®å²è¾¼ã¿ã®å ´å38 # ï¼TA_NEGEDGEï¼TA_POSEDGEï¼TARGET_BOTHEDGEãã»ããããã¦ããå ´åï¼37 # その他の割込みの場合 38 #(TA_NEGEDGE,TA_POSEDGE,TARGET_BOTHEDGEがセットされている場合) 39 39 if (params[:intatr] & $TARGET_INTATR) != 0 40 40 error_illegal_sym("E_RSATR", params, :intatr, :intno) -
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel_impl.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 33 * 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã«ã¼ãã«ã®ãããä¾åé¨ï¼RZ/A1ç¨ï¼44 * カーネルのチップ依存部(RZ/A1用) 60 45 */ 61 46 … … 64 49 65 50 /* 66 * ãããä¾åã®åæå51 * チップ依存の初期化 67 52 */ 68 53 void … … 70 55 { 71 56 /* 72 * ãã£ãã·ã¥ããã£ã¹ã¨ã¼ãã«57 * キャッシュをディスエーブル 73 58 */ 74 59 arm_disable_cache(); 75 60 76 61 /* 77 * ã³ã¢ä¾åã®åæå62 * コア依存の初期化 78 63 */ 79 64 core_initialize(); 80 65 81 66 /* 82 * ãã£ãã·ã¥ãã¤ãã¼ãã«67 * キャッシュをイネーブル 83 68 */ 84 69 arm_enable_cache(); 85 70 86 71 /* 87 * GIC ã®ãã£ã¹ããªãã¥ã¼ã¿ã®åæå72 * GICのディストリビュータの初期化 88 73 */ 89 74 gicd_initialize(); 90 75 91 76 /* 92 * GIC ã®CPUã¤ã³ã¿ãã§ã¼ã¹ã®åæå77 * GICのCPUインタフェースの初期化 93 78 */ 94 79 gicc_initialize(); 95 80 96 81 /* 97 * åå²äºæ¸¬ã®ç¡å¹åã¨ã¤ãã¼ãã«82 * 分岐予測の無効化とイネーブル 98 83 */ 99 84 arm_invalidate_bp(); … … 102 87 103 88 /* 104 * ãããä¾åé¨ã®çµäºå¦ç89 * チップ依存部の終了処理 105 90 */ 106 91 void … … 111 96 112 97 /* 113 * software_term_hookã¸ã®ãã¤ã³ã¿ãï¼ä¸æ¦volatileæå®ã®ããfpã«ä»£ 114 * å 115 ¥ãã¦ãã使ãã®ã¯ï¼0ã¨ã®æ¯è¼ãæé©åã§åé¤ãããªãããã«ããã 116 * ãã§ããï¼ 98 * software_term_hookへのポインタを,一旦volatile指定のあるfpに代 99 * 入してから使うのは,0との比較が最適化で削除されないようにするた 100 * めである. 117 101 */ 118 102 if (fp != 0) { … … 121 105 122 106 /* 123 * GIC ã®CPUã¤ã³ã¿ãã§ã¼ã¹ã®çµäºå¦ç107 * GICのCPUインタフェースの終了処理 124 108 */ 125 109 gicc_terminate(); 126 110 127 111 /* 128 * GIC ã®ãã£ã¹ããªãã¥ã¼ã¿ã®çµäºå¦ç112 * GICのディストリビュータの終了処理 129 113 */ 130 114 gicd_terminate(); 131 115 132 116 /* 133 * ã³ã¢ä¾åã®çµäºå¦ç117 * コア依存の終了処理 134 118 */ 135 119 core_terminate(); … … 137 121 138 122 /* 139 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®å±æ§ã®è¨å®140 * 141 * ASP ã«ã¼ãã«ã§ã®å©ç¨ãæ³å®ãã¦ï¼ãã©ã¡ã¼ã¿ã¨ã©ã¼ã¯ã¢ãµã¼ã·ã§ã³ã§ãã§ã142 * ã¯ãã¦ããï¼123 * 割込み要求ラインの属性の設定 124 * 125 * ASPカーネルでの利用を想定して,パラメータエラーはアサーションでチェッ 126 * クしている. 143 127 */ 144 128 Inline void … … 149 133 150 134 /* 151 * å²è¾¼ã¿ãç¦æ¢135 * 割込みを禁止 152 136 * 153 * å²è¾¼ã¿ãåãä»ããã¾ã¾ï¼ã¬ãã«ããªã¬ï¼ã¨ãã¸ããªã¬ã®è¨å®ãï¼å² 154 * è¾¼ã¿åªå 155 度ã®è¨å®ãè¡ãã®ã¯å±éºãªããï¼å²è¾¼ã¿å±æ§ã«ãããããï¼ 156 * ä¸æ¦ãã¹ã¯ããï¼ 137 * 割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割 138 * 込み優先度の設定を行うのは危険なため,割込み属性にかかわらず, 139 * 一旦マスクする. 157 140 */ 158 141 disable_int(intno); 159 142 160 143 /* 161 * å²è¾¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³144 * 割込みをコンフィギュレーション 162 145 */ 163 146 #ifdef TOPPERS_SAFEG_SECURE … … 191 174 192 175 /* 193 * å²è¾¼ã¿åªå 194 度ã¨ã¿ã¼ã²ããããã»ããµãè¨å® 176 * 割込み優先度とターゲットプロセッサを設定 195 177 */ 196 178 gicd_set_priority(intno, INT_IPM(intpri)); … … 198 180 199 181 /* 200 * å²è¾¼ã¿ã許å¯182 * 割込みを許可 201 183 */ 202 184 if ((intatr & TA_ENAINT) != 0U) { … … 206 188 207 189 /* 208 * å²è¾¼ã¿ç®¡çæ©è½ã®åæå190 * 割込み管理機能の初期化 209 191 */ 210 192 void -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_kernel_impl.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * kernel_impl.h ã®ãããä¾åé¨ï¼RZ/A1ç¨ï¼44 * kernel_impl.hのチップ依存部(RZ/A1用) 60 45 * 61 * ãã®ããããã¡ã¤ã«ã¯ï¼target_kernel_impl.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯62 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã63 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼46 * このヘッダファイルは,target_kernel_impl.h(または,そこからインク 47 * ルードされるファイル)のみからインクルードされる.他のファイルから 48 * 直接インクルードしてはならない. 64 49 */ 65 50 … … 68 53 69 54 /* 70 * RZ/A1 ã®ãã¼ãã¦ã§ã¢è³æºã®å®ç¾©55 * RZ/A1のハードウェア資源の定義 71 56 */ 72 57 #include "rza1.h" 73 58 74 59 /* 75 * MMU ã®ä½¿ç¨ã«é¢ããè¨å®60 * MMUの使用に関する設定 76 61 */ 77 62 #define USE_ARM_MMU … … 79 64 80 65 /* 81 * GIC ã®ãã£ã¹ããªãã¥ã¼ã¿ã®å²è¾¼ã¿ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¬ã¸ã¹ã¿ã«è¨å®82 * ããå¤ã«é¢ããå®ç¾©66 * GICのディストリビュータの割込みコンフィギュレーションレジスタに設定 67 * する値に関する定義 83 68 */ 84 69 #define GIC_ARM11MPCORE 85 70 86 71 /* 87 * GIC ä¾åé¨ã®å²è¾¼ã¿ç®¡çæ©è½ã®åæåã¯ä½¿ç¨ããªãï¼72 * GIC依存部の割込み管理機能の初期化は使用しない. 88 73 */ 89 74 #define OMIT_GIC_INITIALIZE_INTERRUPT 90 75 91 76 /* 92 * GICã«é¢ããå®ç¾©ï¼ã³ã¢ã§å 93 ±éãªå®ç¾© 77 * GICに関する定義,コアで共通な定義 94 78 * 95 * core_kernel_impl.h ã¯ï¼gic_kernel_impl.hããã¤ã³ã¯ã«ã¼ããããï¼79 * core_kernel_impl.hは,gic_kernel_impl.hからインクルードされる. 96 80 */ 97 81 #include "gic_kernel_impl.h" … … 100 84 101 85 /* 102 * ãããä¾åã®åæå86 * チップ依存の初期化 103 87 */ 104 88 extern void chip_initialize(void); 105 89 106 90 /* 107 * ãããä¾åã®çµäºå¦ç91 * チップ依存の終了処理 108 92 */ 109 93 extern void chip_terminate(void); -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_rename.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_stddef.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * t_stddef.h ã®ãããä¾åé¨ï¼RZ/A1ç¨ï¼43 * t_stddef.hのチップ依存部(RZ/A1用) 59 44 * 60 * ãã®ããããã¡ã¤ã«ã¯ï¼target_stddef.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ã61 * ããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤62 * ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼45 * このヘッダファイルは,target_stddef.h(または,そこからインクルード 46 * されるファイル)のみからインクルードされる.他のファイルから直接イ 47 * ンクルードしてはならない. 63 48 */ 64 49 … … 67 52 68 53 /* 69 * ã¿ã¼ã²ãããèå¥ããããã®ãã¯ãã®å®ç¾©54 * ターゲットを識別するためのマクロの定義 70 55 */ 71 #define TOPPERS_RZA1 /* ãããç¥ç§°*/56 #define TOPPERS_RZA1 /* チップ略称 */ 72 57 73 58 /* 74 * ããããéå®ãããã¯ããå®ç¾©ããã¦ãããã®ãã§ãã¯59 * チップを限定するマクロが定義されているかのチェック 75 60 */ 76 61 #if !defined(TOPPERS_RZA1H) && !defined(TOPPERS_RZA1L) … … 79 64 80 65 /* 81 * ã³ã¢ã§å 82 ±éãªå®ç¾© 66 * コアで共通な定義 83 67 */ 84 68 #include "core_stddef.h" -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r279 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ã¿ã¤ããã©ã¤ãï¼RZ/A1 OSã¿ã¤ãç¨ï¼42 * タイマドライバ(RZ/A1 OSタイマ用) 58 43 * 59 * RZ/A1ã¯2ãã£ã³ãã«ã®OSã¿ã¤ããæã¤ãï¼ãã®å 60 ã®1ã¤ãç¨ãã¦é«å解è½ã¿ 61 * ã¤ããï¼ãã1ã¤ãç¨ãã¦ãªã¼ãã©ã³ã¿ã¤ããå®ç¾ããï¼ 44 * RZ/A1は2チャンネルのOSタイマを持つが,その内の1つを用いて高分解能タ 45 * イマを,もう1つを用いてオーバランタイマを実現する. 62 46 */ 63 47 … … 72 56 73 57 /* 74 * ã¿ã¤ãã®èµ·åå¦ç58 * タイマの起動処理 75 59 */ 76 60 void … … 78 62 { 79 63 /* 80 * OS ã¿ã¤ããããªã¼ã©ã³ãã³ã°ã³ã³ãã¢ã¢ã¼ãã«è¨å®ããï¼64 * OSタイマをフリーランニングコンペアモードに設定する. 81 65 */ 82 66 sil_wrb_mem(OSTM_CTL(OSTM0_BASE), OSTM_CTL_FRCMP); 83 67 84 68 /* 85 * OS ã¿ã¤ãã®è¨å®å¤ãæ大å¤ã«ãã¦ããï¼69 * OSタイマの設定値を最大値にしておく. 86 70 */ 87 71 sil_wrw_mem(OSTM_CMP(OSTM0_BASE), 0xffffffff); 88 72 89 73 /* 90 * OS ã¿ã¤ããåä½éå§ããï¼74 * OSタイマを動作開始する. 91 75 */ 92 76 sil_wrb_mem(OSTM_TS(OSTM0_BASE), OSTM_TS_START); 93 77 94 78 /* 95 * ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼79 * タイマ割込み要求をクリアする. 96 80 */ 97 81 clear_int(INTNO_OSTM0); … … 99 83 100 84 /* 101 * ã¿ã¤ãã®åæ¢å¦ç85 * タイマの停止処理 102 86 */ 103 87 void … … 105 89 { 106 90 /* 107 * OS ã¿ã¤ããåæ¢ããï¼91 * OSタイマを停止する. 108 92 */ 109 93 sil_wrb_mem(OSTM_TT(OSTM0_BASE), OSTM_TT_STOP); 110 94 111 95 /* 112 * ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼96 * タイマ割込み要求をクリアする. 113 97 */ 114 98 clear_int(INTNO_OSTM0); … … 116 100 117 101 /* 118 * é«å解è½ã¿ã¤ãã¸ã®å²è¾¼ã¿ã¿ã¤ãã³ã°ã®è¨å®102 * 高分解能タイマへの割込みタイミングの設定 119 103 */ 120 104 void … … 125 109 126 110 /* 127 * ç¾å¨ã®ã«ã¦ã³ãå¤ãèªã¿ï¼hrtcntå¾ã«å²è¾¼ã¿ãçºçããããã«è¨å®ããï¼111 * 現在のカウント値を読み,hrtcnt後に割込みが発生するように設定する. 128 112 */ 129 113 current = sil_rew_mem(OSTM_CNT(OSTM0_BASE)); … … 131 115 132 116 /* 133 * ä¸ã§ç¾å¨ã®ã«ã¦ã³ãå¤ãèªãã§ä»¥éã«ï¼cnt以ä¸ã«ã¦ã³ãã¢ãããã¦ã134 * ãå ´åã«ã¯ï¼å²è¾¼ã¿ãçºçãããï¼117 * 上で現在のカウント値を読んで以降に,cnt以上カウントアップしてい 118 * た場合には,割込みを発生させる. 135 119 */ 136 120 if (sil_rew_mem(OSTM_CNT(OSTM0_BASE)) - current >= cnt) { … … 140 124 141 125 /* 142 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ã®è¦æ±126 * 高分解能タイマ割込みの要求 143 127 */ 144 128 void … … 149 133 150 134 /* 151 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©135 * タイマ割込みハンドラ 152 136 */ 153 137 void … … 155 139 { 156 140 /* 157 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ãå¦çããï¼141 * 高分解能タイマ割込みを処理する. 158 142 */ 159 143 signal_time(); 160 144 } 161 145 /* 162 * ãªã¼ãã©ã³ã¿ã¤ããã©ã¤ã146 * オーバランタイマドライバ 163 147 */ 164 148 #ifdef TOPPERS_SUPPORT_OVRHDR 165 149 166 150 /* 167 * ãªã¼ãã©ã³ã¿ã¤ãã®åæåå¦ç151 * オーバランタイマの初期化処理 168 152 */ 169 153 void … … 171 155 { 172 156 /* 173 * OS ã¿ã¤ããã¤ã³ã¿ã¼ãã«ã¿ã¤ãã¢ã¼ãã«è¨å®ããï¼157 * OSタイマをインターバルタイマモードに設定する. 174 158 */ 175 159 sil_wrb_mem(OSTM_CTL(OSTM1_BASE), OSTM_CTL_INTERVAL); 176 160 177 161 /* 178 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼162 * オーバランタイマ割込み要求をクリアする. 179 163 */ 180 164 clear_int(INTNO_OSTM1); … … 182 166 183 167 /* 184 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢å¦ç168 * オーバランタイマの停止処理 185 169 */ 186 170 void … … 188 172 { 189 173 /* 190 * OS ã¿ã¤ããåæ¢ããï¼174 * OSタイマを停止する. 191 175 */ 192 176 sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP); 193 177 194 178 /* 195 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿è¦æ±ãã¯ãªã¢ããï¼179 * オーバランタイマ割込み要求をクリアする. 196 180 */ 197 181 clear_int(INTNO_OSTM1); … … 199 183 200 184 /* 201 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢185 * オーバランタイマの停止 202 186 */ 203 187 PRCTIM … … 207 191 208 192 /* 209 * OS ã¿ã¤ããåæ¢ããï¼193 * OSタイマを停止する. 210 194 */ 211 195 sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP); … … 213 197 if (probe_int(INTNO_OSTM1)) { 214 198 /* 215 * å²è¾¼ã¿è¦æ±ãçºçãã¦ããå ´å199 * 割込み要求が発生している場合 216 200 */ 217 201 clear_int(INTNO_OSTM1); … … 225 209 226 210 /* 227 * ãªã¼ãã©ã³ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã211 * オーバランタイマの現在値の読出し 228 212 */ 229 213 PRCTIM … … 234 218 if (probe_int(INTNO_OSTM1)) { 235 219 /* 236 * å²è¾¼ã¿è¦æ±ãçºçãã¦ããå ´å220 * 割込み要求が発生している場合 237 221 */ 238 222 return(0U); … … 245 229 246 230 /* 247 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©231 * オーバランタイマ割込みハンドラ 248 232 * 249 * ãã®ã«ã¼ãã³ã«æ¥ãã¾ã§ã«ï¼target_ovrtimer_stopãå¼ã°ãã¦ããããï¼ 250 * OSã¿ã¤ããåæ¢ããå¿ 251 è¦ã¯ãªãï¼ 233 * このルーチンに来るまでに,target_ovrtimer_stopが呼ばれているため, 234 * OSタイマを停止する必要はない. 252 235 */ 253 236 void 254 237 target_ovrtimer_handler(void) 255 238 { 256 call_ovrhdr(); /* ãªã¼ãã©ã³ãã³ãã©ã®èµ·åå¦ç*/239 call_ovrhdr(); /* オーバランハンドラの起動処理 */ 257 240 } 258 241 -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.cfg
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r270 r321 1 1 /* 2 * ã¿ã¤ããã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«2 * タイマドライバのコンフィギュレーションファイル 3 3 * 4 4 * $Id$ … … 6 6 7 7 /* 8 * é«å解è½ã¿ã¤ããã©ã¤ã8 * 高分解能タイマドライバ 9 9 */ 10 10 ATT_INI({ TA_NULL, 0, _kernel_target_hrt_initialize }); … … 14 14 15 15 /* 16 * ãªã¼ãã©ã³ã¿ã¤ããã©ã¤ã16 * オーバランタイマドライバ 17 17 */ 18 18 #ifdef TOPPERS_SUPPORT_OVRHDR -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 33 * 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã¿ã¤ããã©ã¤ãï¼RZ/A1 OSã¿ã¤ãç¨ï¼44 * タイマドライバ(RZ/A1 OSタイマ用) 60 45 * 61 * RZ/A1ã¯2ãã£ã³ãã«ã®OSã¿ã¤ããæã¤ãï¼ãã®å 62 ã®1ã¤ãç¨ãã¦é«å解è½ã¿ 63 * ã¤ããï¼ãã1ã¤ãç¨ãã¦ãªã¼ãã©ã³ã¿ã¤ããå®ç¾ããï¼ 46 * RZ/A1は2チャンネルのOSタイマを持つが,その内の1つを用いて高分解能タ 47 * イマを,もう1つを用いてオーバランタイマを実現する. 64 48 */ 65 49 … … 71 55 72 56 /* 73 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ° 74 */ 75 #define INHNO_TIMER INTNO_OSTM0 /* å²è¾¼ã¿ãã³ãã©çªå· */ 76 #define INTNO_TIMER INTNO_OSTM0 /* å²è¾¼ã¿çªå· */ 77 #define INTPRI_TIMER (TMAX_INTPRI - 1) /* å²è¾¼ã¿åªå 78 度 */ 79 #define INTATR_TIMER TA_EDGE /* å²è¾¼ã¿å±æ§ */ 80 81 /* 82 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ° 57 * タイマ割込みハンドラ登録のための定数 58 */ 59 #define INHNO_TIMER INTNO_OSTM0 /* 割込みハンドラ番号 */ 60 #define INTNO_TIMER INTNO_OSTM0 /* 割込み番号 */ 61 #define INTPRI_TIMER (TMAX_INTPRI - 1) /* 割込み優先度 */ 62 #define INTATR_TIMER TA_EDGE /* 割込み属性 */ 63 64 /* 65 * オーバランタイマ割込みハンドラ登録のための定数 83 66 */ 84 67 #ifdef TOPPERS_SUPPORT_OVRHDR 85 #define INHNO_OVRTIMER INTNO_OSTM1 /* å²è¾¼ã¿ãã³ãã©çªå· */ 86 #define INTNO_OVRTIMER INTNO_OSTM1 /* å²è¾¼ã¿çªå· */ 87 #define INTPRI_OVRTIMER TMAX_INTPRI /* å²è¾¼ã¿åªå 88 度 */ 89 #define INTATR_OVRTIMER TA_EDGE /* å²è¾¼ã¿å±æ§ */ 68 #define INHNO_OVRTIMER INTNO_OSTM1 /* 割込みハンドラ番号 */ 69 #define INTNO_OVRTIMER INTNO_OSTM1 /* 割込み番号 */ 70 #define INTPRI_OVRTIMER TMAX_INTPRI /* 割込み優先度 */ 71 #define INTATR_OVRTIMER TA_EDGE /* 割込み属性 */ 90 72 #endif /* TOPPERS_SUPPORT_OVRHDR */ 91 73 92 74 /* 93 * OS ã¿ã¤ãã®å¨æ³¢æ°ã®æ³å®å¤ã®ãã§ãã¯75 * OSタイマの周波数の想定値のチェック 94 76 * 95 * ç¾å¨ã®å®è£ 96 ã¯ï¼ã¯ããã¯ã33.33â¦MHzã®å ´åã®ã¿ã«å¯¾å¿ãã¦ããï¼ 77 * 現在の実装は,クロックが33.33…MHzの場合のみに対応している. 97 78 */ 98 79 #if OSTM_CLK != 33333333UL … … 101 82 102 83 /* 103 * OS ã¿ã¤ãã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©84 * OSタイマレジスタの番地の定義 104 85 */ 105 86 #define OSTM_CMP(base) ((uint32_t *)(base + 0x00U)) … … 111 92 112 93 /* 113 * OS ã¿ã¤ã ã«ã¦ã³ãéå§ããªã¬ã¬ã¸ã¹ã¿ã®è¨å®å¤ã®å®ç¾©94 * OSタイマ カウント開始トリガレジスタの設定値の定義 114 95 */ 115 96 #define OSTM_TS_START 0x01U 116 97 117 98 /* 118 * OS ã¿ã¤ã ã«ã¦ã³ãåæ¢ããªã¬ã¬ã¸ã¹ã¿ã®è¨å®å¤ã®å®ç¾©99 * OSタイマ カウント停止トリガレジスタの設定値の定義 119 100 */ 120 101 #define OSTM_TT_STOP 0x01U 121 102 122 103 /* 123 * OS ã¿ã¤ã å¶å¾¡ã¬ã¸ã¹ã¿ã®è¨å®å¤ã®å®ç¾©124 */ 125 #define OSTM_CTL_INTERVAL 0x00U /* ã¤ã³ã¿ã¼ãã«ã¿ã¤ãã¢ã¼ã*/126 #define OSTM_CTL_FRCMP 0x02U /* ããªã¼ã©ã³ãã³ã°ã³ã³ãã¢ã¢ã¼ã*/104 * OSタイマ 制御レジスタの設定値の定義 105 */ 106 #define OSTM_CTL_INTERVAL 0x00U /* インターバルタイマモード */ 107 #define OSTM_CTL_FRCMP 0x02U /* フリーランニングコンペアモード */ 127 108 128 109 #ifndef TOPPERS_MACRO_ONLY 129 110 130 111 /* 131 * é«å解è½ã¿ã¤ãã®èµ·åå¦ç112 * 高分解能タイマの起動処理 132 113 */ 133 114 extern void target_hrt_initialize(intptr_t exinf); 134 115 135 116 /* 136 * é«å解è½ã¿ã¤ãã®åæ¢å¦ç117 * 高分解能タイマの停止処理 137 118 */ 138 119 extern void target_hrt_terminate(intptr_t exinf); 139 120 140 121 /* 141 * é«å解è½ã¿ã¤ãã®ç¾å¨ã®ã«ã¦ã³ãå¤ã®èªåºã122 * 高分解能タイマの現在のカウント値の読出し 142 123 */ 143 124 Inline HRTCNT … … 148 129 cnt = sil_rew_mem(OSTM_CNT(OSTM0_BASE)); 149 130 150 /* μç§åä½ã«å¤æï¼ã¯ããã¯ã33.33â¦MHzã§ããåæï¼*/131 /* μ秒単位に変換(クロックが33.33…MHzである前提)*/ 151 132 cnt1 = cnt / 1000000000; 152 133 return((HRTCNT)((cnt - cnt1 * 999999999) * 3 / 100 + cnt1 * 30000000)); … … 154 135 155 136 /* 156 * é«å解è½ã¿ã¤ãã¸ã®å²è¾¼ã¿ã¿ã¤ãã³ã°ã®è¨å®137 * 高分解能タイマへの割込みタイミングの設定 157 138 * 158 * é«å解è½ã¿ã¤ããï¼hrtcntã§æå®ããå¤ã«ã¦ã³ãã¢ãããããå²è¾¼ã¿ãçº159 * çãããããã«è¨å®ããï¼139 * 高分解能タイマを,hrtcntで指定した値カウントアップしたら割込みを発 140 * 生させるように設定する. 160 141 */ 161 142 extern void target_hrt_set_event(HRTCNT hrtcnt); 162 143 163 144 /* 164 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ã®è¦æ±145 * 高分解能タイマ割込みの要求 165 146 */ 166 147 extern void target_hrt_raise_event(void); 167 148 168 149 /* 169 * å²è¾¼ã¿ã¿ã¤ãã³ã°ã«æå®ããæ大å¤150 * 割込みタイミングに指定する最大値 170 151 */ 171 152 #define HRTCNT_BOUND 100000002U 172 153 173 154 /* 174 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ãã³ãã©155 * 高分解能タイマ割込みハンドラ 175 156 */ 176 157 extern void target_hrt_handler(void); … … 179 160 180 161 /* 181 * ãªã¼ãã©ã³ã¿ã¤ãã®åæåå¦ç162 * オーバランタイマの初期化処理 182 163 */ 183 164 extern void target_ovrtimer_initialize(intptr_t exinf); 184 165 185 166 /* 186 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢å¦ç167 * オーバランタイマの停止処理 187 168 */ 188 169 extern void target_ovrtimer_terminate(intptr_t exinf); 189 170 190 171 /* 191 * ãªã¼ãã©ã³ã¿ã¤ãã®åä½éå§172 * オーバランタイマの動作開始 192 173 */ 193 174 Inline void … … 201 182 202 183 /* 203 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢184 * オーバランタイマの停止 204 185 */ 205 186 extern PRCTIM target_ovrtimer_stop(void); 206 187 207 188 /* 208 * ãªã¼ãã©ã³ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã189 * オーバランタイマの現在値の読出し 209 190 */ 210 191 extern PRCTIM target_ovrtimer_get_current(void); 211 192 212 193 /* 213 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©194 * オーバランタイマ割込みハンドラ 214 195 */ 215 196 extern void target_ovrtimer_handler(void); -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_unrename.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/rza1.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 44 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 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 * 免責すること. 30 * 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * RZ/A1 ã®ãã¼ãã¦ã§ã¢è³æºã®å®ç¾©41 * RZ/A1のハードウェア資源の定義 57 42 */ 58 43 … … 63 48 64 49 /* 65 * åãã£ã¹ããè¡ããã¯ãã®å®ç¾©50 * 型キャストを行うマクロの定義 66 51 */ 67 52 #ifndef CAST … … 70 55 71 56 /* 72 * ã¡ã¢ãªãããã®å®ç¾©ï¼MMUã«è¨å®ããããã«å¿ 73 è¦ï¼ 74 */ 75 #define SPI_ADDR 0x18000000 /* ã·ãªã¢ã«ãã©ãã·ã¥ã¡ã¢ãª */ 57 * メモリマップの定義(MMUに設定するために必要) 58 */ 59 #define SPI_ADDR 0x18000000 /* シリアルフラッシュメモリ */ 76 60 #define SPI_SIZE 0x08000000 /* 128MB */ 77 61 78 #define SRAM_ADDR 0x20000000 /* å 79 èµRAM */ 62 #define SRAM_ADDR 0x20000000 /* 内蔵RAM */ 80 63 #ifdef TOPPERS_RZA1H 81 64 #define SRAM_SIZE 0x00a00000 /* 10MB */ … … 84 67 #endif /* TOPPERS_RZA1H */ 85 68 86 #define IO1_ADDR 0x3fe00000 /* I/O é åï¼äºç´é åãå«ãï¼*/69 #define IO1_ADDR 0x3fe00000 /* I/O領域(予約領域を含む)*/ 87 70 #define IO1_SIZE 0x00200000 /* 2MB */ 88 #define IO2_ADDR 0xe8000000 /* I/O é åï¼äºç´é åãå«ãï¼*/71 #define IO2_ADDR 0xe8000000 /* I/O領域(予約領域を含む)*/ 89 72 #define IO2_SIZE 0x18000000 /* 384MB */ 90 73 91 74 /* 92 * åã¯ããã¯å¨æ³¢æ°ã®å®ç¾©75 * 各クロック周波数の定義 93 76 */ 94 77 #define OSTM_CLK RZA1_CLK_P0 … … 96 79 97 80 /* 98 * MPCore Private Memory Regionã®å 99 é çªå° 81 * MPCore Private Memory Regionの先頭番地 100 82 */ 101 83 #define MPCORE_PMR_BASE 0xf0000000 102 84 103 85 /* 104 * GIC ä¾åé¨ã使ç¨ããããã®å®ç¾©86 * GIC依存部を使用するための定義 105 87 */ 106 88 #ifndef GIC_TNUM_INTNO … … 113 95 114 96 /* 115 * å²è¾¼ã¿ã³ã³ããã¼ã©ã®ãã¼ã¹ã¢ãã¬ã¹ã¨ã¬ã¸ã¹ã¿ï¼RZ/A1åºæã®ãã®ï¼97 * 割込みコントローラのベースアドレスとレジスタ(RZ/A1固有のもの) 116 98 */ 117 99 #define GICC_BASE 0xe8202000 … … 123 105 124 106 /* 125 * OS ã¿ã¤ãã®ãã¼ã¹ã¢ãã¬ã¹107 * OSタイマのベースアドレス 126 108 */ 127 109 #define OSTM0_BASE 0xfcfec000 … … 129 111 130 112 /* 131 * L2 ãã£ãã·ã¥ã³ã³ããã¼ã©ï¼PL310ï¼ã®ãã¼ã¹ã¢ãã¬ã¹113 * L2キャッシュコントローラ(PL310)のベースアドレス 132 114 */ 133 115 #define PL310_BASE 0x3ffff000 134 116 135 117 /* 136 * ã¯ããã¯ãã«ã¹ã¸ã§ãã¬ã¼ã¿ã®ãã¼ã¹ã¢ãã¬ã¹ã¨ã¬ã¸ã¹ã¿118 * クロックパルスジェネレータのベースアドレスとレジスタ 137 119 */ 138 120 #define RZA1_CPG_BASE 0xfcfe0000 … … 141 123 142 124 /* 143 * ãã¹ã¹ãã¼ãã³ã³ããã¼ã©ã®ãã¼ã¹ã¢ãã¬ã¹ã¨ã¬ã¸ã¹ã¿125 * バスステートコントローラのベースアドレスとレジスタ 144 126 */ 145 127 #define RZA1_BSC_BASE 0x3FFFC000 … … 163 145 164 146 /* 165 * ã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ã®ãã¼ã¹ã¢ãã¬ã¹147 * シリアルコミュニケーションインタフェースのベースアドレス 166 148 */ 167 149 #define SCIF0_BASE 0xe8007000 … … 177 159 178 160 /* 179 * ä½æ¶è²»é»åã¢ã¼ãé¢é£ã®ãã¼ã¹ã¢ãã¬ã¹ã¨ã¬ã¸ã¹ã¿161 * 低消費電力モード関連のベースアドレスとレジスタ 180 162 */ 181 163 #define RZA1_LOWPWR_BASE 0xfcfe0000 … … 199 181 200 182 /* 201 * æ±ç¨å 202 ¥åºåãã¼ãã®ãã¼ã¹ã¢ãã¬ã¹ã¨ã¬ã¸ã¹ã¿ 183 * 汎用入出力ポートのベースアドレスとレジスタ 203 184 */ 204 185 #define RZA1_PORT_BASE 0xfcfe3000 … … 216 197 217 198 /* 218 * å²è¾¼ã¿çªå·199 * 割込み番号 219 200 */ 220 201 #define INTNO_IRQ0 32 /* IRQ0 */ … … 226 207 #define INTNO_IRQ6 38 /* IRQ6 */ 227 208 #define INTNO_IRQ7 39 /* IRQ7 */ 228 #define INTNO_OSTM0 134 /* OS ã¿ã¤ã0 */229 #define INTNO_OSTM1 135 /* OS ã¿ã¤ã1 */230 #define INTNO_SCIF0_BRI 221 /* SCIF0 ãã¬ã¼ã¯å²è¾¼ã¿*/231 #define INTNO_SCIF0_ERI 222 /* SCIF0 ã¨ã©ã¼å²è¾¼ã¿*/232 #define INTNO_SCIF0_RXI 223 /* SCIF0 åä¿¡å²è¾¼ã¿*/233 #define INTNO_SCIF0_TXI 224 /* SCIF0 éä¿¡å²è¾¼ã¿*/234 #define INTNO_SCIF1_BRI 225 /* SCIF1 ãã¬ã¼ã¯å²è¾¼ã¿*/235 #define INTNO_SCIF1_ERI 226 /* SCIF1 ã¨ã©ã¼å²è¾¼ã¿*/236 #define INTNO_SCIF1_RXI 227 /* SCIF1 åä¿¡å²è¾¼ã¿*/237 #define INTNO_SCIF1_TXI 228 /* SCIF1 éä¿¡å²è¾¼ã¿*/238 #define INTNO_SCIF2_BRI 229 /* SCIF2 ãã¬ã¼ã¯å²è¾¼ã¿*/239 #define INTNO_SCIF2_ERI 230 /* SCIF2 ã¨ã©ã¼å²è¾¼ã¿*/240 #define INTNO_SCIF2_RXI 231 /* SCIF2 åä¿¡å²è¾¼ã¿*/241 #define INTNO_SCIF2_TXI 232 /* SCIF2 éä¿¡å²è¾¼ã¿*/242 #define INTNO_SCIF3_BRI 233 /* SCIF3 ãã¬ã¼ã¯å²è¾¼ã¿*/243 #define INTNO_SCIF3_ERI 234 /* SCIF3 ã¨ã©ã¼å²è¾¼ã¿*/244 #define INTNO_SCIF3_RXI 235 /* SCIF3 åä¿¡å²è¾¼ã¿*/245 #define INTNO_SCIF3_TXI 236 /* SCIF3 éä¿¡å²è¾¼ã¿*/246 #define INTNO_SCIF4_BRI 237 /* SCIF4 ãã¬ã¼ã¯å²è¾¼ã¿*/247 #define INTNO_SCIF4_ERI 238 /* SCIF4 ã¨ã©ã¼å²è¾¼ã¿*/248 #define INTNO_SCIF4_RXI 239 /* SCIF4 åä¿¡å²è¾¼ã¿*/249 #define INTNO_SCIF4_TXI 240 /* SCIF4 éä¿¡å²è¾¼ã¿*/250 #ifdef TOPPERS_RZA1H 251 #define INTNO_SCIF5_BRI 241 /* SCIF5 ãã¬ã¼ã¯å²è¾¼ã¿*/252 #define INTNO_SCIF5_ERI 242 /* SCIF5 ã¨ã©ã¼å²è¾¼ã¿*/253 #define INTNO_SCIF5_RXI 243 /* SCIF5 åä¿¡å²è¾¼ã¿*/254 #define INTNO_SCIF5_TXI 244 /* SCIF5 éä¿¡å²è¾¼ã¿*/255 #define INTNO_SCIF6_BRI 245 /* SCIF6 ãã¬ã¼ã¯å²è¾¼ã¿*/256 #define INTNO_SCIF6_ERI 246 /* SCIF6 ã¨ã©ã¼å²è¾¼ã¿*/257 #define INTNO_SCIF6_RXI 247 /* SCIF6 åä¿¡å²è¾¼ã¿*/258 #define INTNO_SCIF6_TXI 248 /* SCIF6 éä¿¡å²è¾¼ã¿*/259 #define INTNO_SCIF7_BRI 249 /* SCIF7 ãã¬ã¼ã¯å²è¾¼ã¿*/260 #define INTNO_SCIF7_ERI 250 /* SCIF7 ã¨ã©ã¼å²è¾¼ã¿*/261 #define INTNO_SCIF7_RXI 251 /* SCIF7 åä¿¡å²è¾¼ã¿*/262 #define INTNO_SCIF7_TXI 252 /* SCIF7 éä¿¡å²è¾¼ã¿*/209 #define INTNO_OSTM0 134 /* OSタイマ0 */ 210 #define INTNO_OSTM1 135 /* OSタイマ1 */ 211 #define INTNO_SCIF0_BRI 221 /* SCIF0 ブレーク割込み */ 212 #define INTNO_SCIF0_ERI 222 /* SCIF0 エラー割込み */ 213 #define INTNO_SCIF0_RXI 223 /* SCIF0 受信割込み */ 214 #define INTNO_SCIF0_TXI 224 /* SCIF0 送信割込み */ 215 #define INTNO_SCIF1_BRI 225 /* SCIF1 ブレーク割込み */ 216 #define INTNO_SCIF1_ERI 226 /* SCIF1 エラー割込み */ 217 #define INTNO_SCIF1_RXI 227 /* SCIF1 受信割込み */ 218 #define INTNO_SCIF1_TXI 228 /* SCIF1 送信割込み */ 219 #define INTNO_SCIF2_BRI 229 /* SCIF2 ブレーク割込み */ 220 #define INTNO_SCIF2_ERI 230 /* SCIF2 エラー割込み */ 221 #define INTNO_SCIF2_RXI 231 /* SCIF2 受信割込み */ 222 #define INTNO_SCIF2_TXI 232 /* SCIF2 送信割込み */ 223 #define INTNO_SCIF3_BRI 233 /* SCIF3 ブレーク割込み */ 224 #define INTNO_SCIF3_ERI 234 /* SCIF3 エラー割込み */ 225 #define INTNO_SCIF3_RXI 235 /* SCIF3 受信割込み */ 226 #define INTNO_SCIF3_TXI 236 /* SCIF3 送信割込み */ 227 #define INTNO_SCIF4_BRI 237 /* SCIF4 ブレーク割込み */ 228 #define INTNO_SCIF4_ERI 238 /* SCIF4 エラー割込み */ 229 #define INTNO_SCIF4_RXI 239 /* SCIF4 受信割込み */ 230 #define INTNO_SCIF4_TXI 240 /* SCIF4 送信割込み */ 231 #ifdef TOPPERS_RZA1H 232 #define INTNO_SCIF5_BRI 241 /* SCIF5 ブレーク割込み */ 233 #define INTNO_SCIF5_ERI 242 /* SCIF5 エラー割込み */ 234 #define INTNO_SCIF5_RXI 243 /* SCIF5 受信割込み */ 235 #define INTNO_SCIF5_TXI 244 /* SCIF5 送信割込み */ 236 #define INTNO_SCIF6_BRI 245 /* SCIF6 ブレーク割込み */ 237 #define INTNO_SCIF6_ERI 246 /* SCIF6 エラー割込み */ 238 #define INTNO_SCIF6_RXI 247 /* SCIF6 受信割込み */ 239 #define INTNO_SCIF6_TXI 248 /* SCIF6 送信割込み */ 240 #define INTNO_SCIF7_BRI 249 /* SCIF7 ブレーク割込み */ 241 #define INTNO_SCIF7_ERI 250 /* SCIF7 エラー割込み */ 242 #define INTNO_SCIF7_RXI 251 /* SCIF7 受信割込み */ 243 #define INTNO_SCIF7_TXI 252 /* SCIF7 送信割込み */ 263 244 #endif /* TOPPERS_RZA1H */ 264 245 … … 266 247 267 248 /* 268 * IRQ å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢249 * IRQ割込み要求のクリア 269 250 */ 270 251 Inline void … … 279 260 280 261 /* 281 * æ±ç¨å 282 ¥åºåãã¼ãã®è¨å® 283 * 284 * æ±ç¨å 285 ¥åºåãã¼ãã®å¶å¾¡ã¬ã¸ã¹ã¿ã®ç¹å®ã®ããããï¼ã»ããï¼setã0ã§ãª 286 * ãæï¼ã¾ãã¯ã¯ãªã¢ï¼setã0ã®æï¼ããï¼ 262 * 汎用入出力ポートの設定 263 * 264 * 汎用入出力ポートの制御レジスタの特定のビットを,セット(setが0でな 265 * い時)またはクリア(setが0の時)する. 287 266 */ 288 267 Inline void -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/scif.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * FIFOå 60 èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ã«é¢ããå®ç¾© 44 * FIFO内蔵シリアルコミュニケーションインタフェースに関する定義 61 45 */ 62 46 … … 65 49 66 50 /* 67 * SCIF ã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©51 * SCIFレジスタの番地の定義 68 52 */ 69 53 #define SCIF_SCSMR(base) ((uint16_t *)(base + 0x00U)) … … 80 64 81 65 /* 82 * ã·ãªã¢ã«ã¢ã¼ãã¬ã¸ã¹ã¿ï¼SCIF_SCSMRï¼ã®è¨å®å¤66 * シリアルモードレジスタ(SCIF_SCSMR)の設定値 83 67 */ 84 #define SCIF_SCSMR_SYNC 0x0080U /* ã¯ããã¯åæå¼ã¢ã¼ã*/85 #define SCIF_SCSMR_7BIT 0x0040U /* 7 ããããã¼ã¿*/86 #define SCIF_SCSMR_PARITY 0x0020U /* ããªãã£ãããã®ä»å*/87 #define SCIF_SCSMR_ODD 0x0010U /* å¥æ°ããªãã£*/88 #define SCIF_SCSMR_2STOP 0x0008U /* 2 ã¹ãããããã*/89 #define SCIF_SCSMR_CKS1 0x0000U /* P1 Ïã¯ããã¯1 */90 #define SCIF_SCSMR_CKS4 0x0001U /* P1 Ï/4ã¯ããã¯*/91 #define SCIF_SCSMR_CKS16 0x0002U /* P1 Ï/16ã¯ããã¯*/92 #define SCIF_SCSMR_CKS64 0x0003U /* P1 Ï/64ã¯ããã¯*/68 #define SCIF_SCSMR_SYNC 0x0080U /* クロック同期式モード */ 69 #define SCIF_SCSMR_7BIT 0x0040U /* 7ビットデータ */ 70 #define SCIF_SCSMR_PARITY 0x0020U /* パリティビットの付加 */ 71 #define SCIF_SCSMR_ODD 0x0010U /* 奇数パリティ */ 72 #define SCIF_SCSMR_2STOP 0x0008U /* 2ストッピビット */ 73 #define SCIF_SCSMR_CKS1 0x0000U /* P1φクロック1 */ 74 #define SCIF_SCSMR_CKS4 0x0001U /* P1φ/4クロック */ 75 #define SCIF_SCSMR_CKS16 0x0002U /* P1φ/16クロック */ 76 #define SCIF_SCSMR_CKS64 0x0003U /* P1φ/64クロック */ 93 77 94 78 /* 95 * ã·ãªã¢ã«ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿ï¼SCIF_SCSCRï¼ã®è¨å®å¤79 * シリアルコントロールレジスタ(SCIF_SCSCR)の設定値 96 80 */ 97 #define SCIF_SCSCR_TIE 0x0080U /* éä¿¡å²è¾¼ã¿è¨±å¯ */ 98 #define SCIF_SCSCR_RIE 0x0040U /* åä¿¡å²è¾¼ã¿çè¨±å¯ */ 99 #define SCIF_SCSCR_TE 0x0020U /* éä¿¡è¨±å¯ */ 100 #define SCIF_SCSCR_RE 0x0010U /* åä¿¡è¨±å¯ */ 101 #define SCIF_SCSCR_REIE 0x0008U /* åä¿¡ã¨ã©ã¼å²è¾¼ã¿çè¨±å¯ */ 102 #define SCIF_SCSCR_INTCLK 0x0000U /* å 103 é¨ã¯ããã¯ï¼CKS端åã¯ç¡è¦ */ 104 /* ï¼èª¿æ©åæå¼ã®å ´åï¼ */ 81 #define SCIF_SCSCR_TIE 0x0080U /* 送信割込み許可 */ 82 #define SCIF_SCSCR_RIE 0x0040U /* 受信割込み等許可 */ 83 #define SCIF_SCSCR_TE 0x0020U /* 送信許可 */ 84 #define SCIF_SCSCR_RE 0x0010U /* 受信許可 */ 85 #define SCIF_SCSCR_REIE 0x0008U /* 受信エラー割込み等許可 */ 86 #define SCIF_SCSCR_INTCLK 0x0000U /* 内部クロック,CKS端子は無視 */ 87 /* (調歩同期式の場合) */ 105 88 106 89 /* 107 * ã·ãªã¢ã«ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼SCIF_SCFSRï¼ã®åç 108 §å¤ 90 * シリアルステータスレジスタ(SCIF_SCFSR)の参照値 109 91 */ 110 #define SCIF_SCFSR_PER_MASK 0xf000U /* ããªãã£ã¨ã©ã¼æ°æ½åºãã¹ã¯*/111 #define SCIF_SCFSR_PER_SHIFT 12 /* ããªãã£ã¨ã©ã¼æ°æ½åºå³ã·ããæ°*/112 #define SCIF_SCFSR_FER_MASK 0x0f00U /* ãã¬ã¼ãã³ã°ã¨ã©ã¼æ°æ½åºãã¹ã¯*/113 #define SCIF_SCFSR_FER_SHIFT 8 /* ãã¬ã¼ãã³ã°ã¨ã©ã¼æ°æ½åºå³ã·ããæ°*/114 #define SCIF_SCFSR_ER 0x0080U /* åä¿¡ã¨ã©ã¼*/115 #define SCIF_SCFSR_TEND 0x0040U /* éä¿¡å®äº*/116 #define SCIF_SCFSR_TDFE 0x0020U /* éä¿¡FIFOãã¼ã¿ã¨ã³ããã£*/117 #define SCIF_SCFSR_BRK 0x0010U /* ãã¬ã¼ã¯æ¤åº*/118 #define SCIF_SCFSR_FER 0x0008U /* ãã¬ã¼ãã³ã°ã¨ã©ã¼æ¤åº*/119 #define SCIF_SCFSR_PER 0x0004U /* ããªãã£ã¨ã©ã¼æ¤åº*/120 #define SCIF_SCFSR_RDF 0x0002U /* åä¿¡FIFOãã¼ã¿ãã«*/121 #define SCIF_SCFSR_DR 0x0001U /* åä¿¡ãã¼ã¿ã¬ãã£*/92 #define SCIF_SCFSR_PER_MASK 0xf000U /* パリティエラー数抽出マスク */ 93 #define SCIF_SCFSR_PER_SHIFT 12 /* パリティエラー数抽出右シフト数 */ 94 #define SCIF_SCFSR_FER_MASK 0x0f00U /* フレーミングエラー数抽出マスク */ 95 #define SCIF_SCFSR_FER_SHIFT 8 /* フレーミングエラー数抽出右シフト数 */ 96 #define SCIF_SCFSR_ER 0x0080U /* 受信エラー */ 97 #define SCIF_SCFSR_TEND 0x0040U /* 送信完了 */ 98 #define SCIF_SCFSR_TDFE 0x0020U /* 送信FIFOデータエンプティ */ 99 #define SCIF_SCFSR_BRK 0x0010U /* ブレーク検出 */ 100 #define SCIF_SCFSR_FER 0x0008U /* フレーミングエラー検出 */ 101 #define SCIF_SCFSR_PER 0x0004U /* パリティエラー検出 */ 102 #define SCIF_SCFSR_RDF 0x0002U /* 受信FIFOデータフル */ 103 #define SCIF_SCFSR_DR 0x0001U /* 受信データレディ */ 122 104 123 105 /* 124 * FIFO ã³ã³ããã¼ã«ã¬ã¸ã¹ã¿ï¼SCIF_SCFCRï¼ã®è¨å®å¤106 * FIFOコントロールレジスタ(SCIF_SCFCR)の設定値 125 107 */ 126 #define SCIF_SCFCR_RSTRG_15 0x0000U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼15 */127 #define SCIF_SCFCR_RSTRG_1 0x0100U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼1 */128 #define SCIF_SCFCR_RSTRG_4 0x0200U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼4 */129 #define SCIF_SCFCR_RSTRG_6 0x0300U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼6 */130 #define SCIF_SCFCR_RSTRG_8 0x0400U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼8 */131 #define SCIF_SCFCR_RSTRG_10 0x0500U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼10 */132 #define SCIF_SCFCR_RSTRG_12 0x0600U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼12 */133 #define SCIF_SCFCR_RSTRG_14 0x0700U /* RTS# åºåã¢ã¯ãã£ãããªã¬ï¼14 */134 #define SCIF_SCFCR_RTRG_1 0x0000U /* åä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼1 */135 #define SCIF_SCFCR_RTRG_4 0x0040U /* åä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼4 */136 #define SCIF_SCFCR_RTRG_8 0x0080U /* åä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼8 */137 #define SCIF_SCFCR_RTRG_14 0x00C0U /* åä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼14 */138 #define SCIF_SCFCR_TTRG_8 0x0000U /* éä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼8 */139 #define SCIF_SCFCR_TTRG_4 0x0010U /* éä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼4 */140 #define SCIF_SCFCR_TTRG_2 0x0020U /* éä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼2 */141 #define SCIF_SCFCR_TTRG_0 0x0030U /* éä¿¡FIFOãã¼ã¿æ°ããªã¬ï¼0 */142 #define SCIF_SCFCR_MCE 0x0008U /* CTS#,RTS# 許å¯*/143 #define SCIF_SCFCR_TFRST 0x0004U /* éä¿¡FIFOãã¼ã¿ã¬ã¸ã¹ã¿ãªã»ãã*/144 #define SCIF_SCFCR_RFRST 0x0002U /* åä¿¡FIFOãã¼ã¿ã¬ã¸ã¹ã¿ãªã»ãã*/145 #define SCIF_SCFCR_LOOP 0x0001U /* ã«ã¼ãããã¯ãã¹ã*/108 #define SCIF_SCFCR_RSTRG_15 0x0000U /* RTS#出力アクティブトリガ:15 */ 109 #define SCIF_SCFCR_RSTRG_1 0x0100U /* RTS#出力アクティブトリガ:1 */ 110 #define SCIF_SCFCR_RSTRG_4 0x0200U /* RTS#出力アクティブトリガ:4 */ 111 #define SCIF_SCFCR_RSTRG_6 0x0300U /* RTS#出力アクティブトリガ:6 */ 112 #define SCIF_SCFCR_RSTRG_8 0x0400U /* RTS#出力アクティブトリガ:8 */ 113 #define SCIF_SCFCR_RSTRG_10 0x0500U /* RTS#出力アクティブトリガ:10 */ 114 #define SCIF_SCFCR_RSTRG_12 0x0600U /* RTS#出力アクティブトリガ:12 */ 115 #define SCIF_SCFCR_RSTRG_14 0x0700U /* RTS#出力アクティブトリガ:14 */ 116 #define SCIF_SCFCR_RTRG_1 0x0000U /* 受信FIFOデータ数トリガ:1 */ 117 #define SCIF_SCFCR_RTRG_4 0x0040U /* 受信FIFOデータ数トリガ:4 */ 118 #define SCIF_SCFCR_RTRG_8 0x0080U /* 受信FIFOデータ数トリガ:8 */ 119 #define SCIF_SCFCR_RTRG_14 0x00C0U /* 受信FIFOデータ数トリガ:14 */ 120 #define SCIF_SCFCR_TTRG_8 0x0000U /* 送信FIFOデータ数トリガ:8 */ 121 #define SCIF_SCFCR_TTRG_4 0x0010U /* 送信FIFOデータ数トリガ:4 */ 122 #define SCIF_SCFCR_TTRG_2 0x0020U /* 送信FIFOデータ数トリガ:2 */ 123 #define SCIF_SCFCR_TTRG_0 0x0030U /* 送信FIFOデータ数トリガ:0 */ 124 #define SCIF_SCFCR_MCE 0x0008U /* CTS#,RTS#許可 */ 125 #define SCIF_SCFCR_TFRST 0x0004U /* 送信FIFOデータレジスタリセット */ 126 #define SCIF_SCFCR_RFRST 0x0002U /* 受信FIFOデータレジスタリセット */ 127 #define SCIF_SCFCR_LOOP 0x0001U /* ループバックテスト */ 146 128 147 129 /* 148 * FIFOãã¼ã¿ã«ã¦ã³ãã¬ã¸ã¹ã¿ï¼SCIF_SCFDRï¼ã®åç 149 §å¤ 130 * FIFOデータカウントレジスタ(SCIF_SCFDR)の参照値 150 131 */ 151 #define SCIF_SCFDR_T_MASK 0x1f00U /* æªéä¿¡ãã¼ã¿æ°æ½åºãã¹ã¯*/152 #define SCIF_SCFDR_T_SHIFT 8 /* æªéä¿¡ãã¼ã¿æ°æ½åºå³ã·ããæ°*/153 #define SCIF_SCFDR_R_MASK 0x001fU /* åä¿¡ãã¼ã¿æ°æ½åºãã¹ã¯*/154 #define SCIF_SCFDR_R_SHIFT 0 /* åä¿¡ãã¼ã¿æ°æ½åºå³ã·ããæ°*/132 #define SCIF_SCFDR_T_MASK 0x1f00U /* 未送信データ数抽出マスク */ 133 #define SCIF_SCFDR_T_SHIFT 8 /* 未送信データ数抽出右シフト数 */ 134 #define SCIF_SCFDR_R_MASK 0x001fU /* 受信データ数抽出マスク */ 135 #define SCIF_SCFDR_R_SHIFT 0 /* 受信データ数抽出右シフト数 */ 155 136 156 137 /* 157 * ã©ã¤ã³ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ï¼SCIF_SCLSRï¼ã®åç 158 §å¤ 138 * ラインステータスレジスタ(SCIF_SCLSR)の参照値 159 139 */ 160 #define SCIF_SCLSR_ORER 0x0001U /* ãªã¼ãã¼ã©ã³ã¨ã©ã¼*/140 #define SCIF_SCLSR_ORER 0x0001U /* オーバーランエラー */ 161 141 162 142 /* 163 * ã·ãªã¢ã«æ¡å¼µã¢ã¼ãã¬ã¸ã¹ã¿ï¼SCIF_SCEMRï¼ã®è¨å®å¤143 * シリアル拡張モードレジスタ(SCIF_SCEMR)の設定値 164 144 */ 165 #define SCIF_SCEMR_BGDM 0x0080U /* ãã¼ã¬ã¼ãã¸ã§ãã¬ã¼ã¿åéã¢ã¼ã*/166 #define SCIF_SCEMR_ABCS16 0x0000U /* ãããã¬ã¼ãã®16åã®åºæ¬ã¯ããã¯*/167 #define SCIF_SCEMR_ABCS8 0x0001U /* ãããã¬ã¼ãã®8åã®åºæ¬ã¯ããã¯*/145 #define SCIF_SCEMR_BGDM 0x0080U /* ボーレートジェネレータ倍速モード */ 146 #define SCIF_SCEMR_ABCS16 0x0000U /* ビットレートの16倍の基本クロック */ 147 #define SCIF_SCEMR_ABCS8 0x0001U /* ビットレートの8倍の基本クロック */ 168 148 169 149 #endif /* TOPPERS_SCIF_H */ -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/tSCIF.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * FIFOå 58 èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ç¨ ç°¡æSIOãã©ã¤ã 42 * FIFO内蔵シリアルコミュニケーションインタフェース用 簡易SIOドライバ 59 43 */ 60 44 … … 64 48 65 49 /* 66 * ããªããã£ããªéä¿¡ï¼åä¿¡é¢æ°67 */ 68 69 /* 70 * åä¿¡ãããã¡ã«æåããããï¼50 * プリミティブな送信/受信関数 51 */ 52 53 /* 54 * 受信バッファに文字があるか? 71 55 */ 72 56 Inline bool_t … … 90 74 91 75 /* 92 * éä¿¡ãããã¡ã«ç©ºãããããï¼76 * 送信バッファに空きがあるか? 93 77 */ 94 78 Inline bool_t … … 102 86 103 87 /* 104 * åä¿¡ããæåã®ååºã88 * 受信した文字の取出し 105 89 */ 106 90 Inline bool_t … … 130 114 131 115 /* 132 * éä¿¡ããæåã®æ¸è¾¼ã¿116 * 送信する文字の書込み 133 117 */ 134 118 Inline void … … 141 125 142 126 /* 143 * ã·ãªã¢ã«I/Oãã¼ãã®ãªã¼ãã³127 * シリアルI/Oポートのオープン 144 128 */ 145 129 void … … 151 135 if (VAR_initialized) { 152 136 /* 153 * æ¢ã«åæåãã¦ããå ´åã¯ãäºéã«åæåããªãï¼137 * 既に初期化している場合は、二重に初期化しない. 154 138 */ 155 139 return; … … 185 169 186 170 /* 187 * ã·ãªã¢ã«I/Oãã¼ãã®ã¯ãã¼ãº171 * シリアルI/Oポートのクローズ 188 172 */ 189 173 void … … 196 180 197 181 /* 198 * ã·ãªã¢ã«I/Oãã¼ãã¸ã®æåéä¿¡182 * シリアルI/Oポートへの文字送信 199 183 */ 200 184 bool_t … … 211 195 212 196 /* 213 * ã·ãªã¢ã«I/Oãã¼ãããã®æååä¿¡197 * シリアルI/Oポートからの文字受信 214 198 */ 215 199 int_t … … 228 212 229 213 /* 230 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®è¨±å¯214 * シリアルI/Oポートからのコールバックの許可 231 215 */ 232 216 void … … 249 233 250 234 /* 251 * ã·ãªã¢ã«I/Oãã¼ãããã®ã³ã¼ã«ããã¯ã®ç¦æ¢235 * シリアルI/Oポートからのコールバックの禁止 252 236 */ 253 237 void … … 270 254 271 255 /* 272 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããåä¿¡å²è¾¼ã¿å¦ç256 * シリアルI/Oポートに対する受信割込み処理 273 257 */ 274 258 void … … 279 263 if (scif_getready(p_cellcb)) { 280 264 /* 281 * åä¿¡éç¥ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼265 * 受信通知コールバックルーチンを呼び出す. 282 266 */ 283 267 ciSIOCBR_readyReceive(); … … 286 270 287 271 /* 288 * ã·ãªã¢ã«I/Oãã¼ãã«å¯¾ããéä¿¡å²è¾¼ã¿å¦ç272 * シリアルI/Oポートに対する送信割込み処理 289 273 */ 290 274 void … … 295 279 if (scif_putready(p_cellcb)) { 296 280 /* 297 * éä¿¡å¯è½ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼281 * 送信可能コールバックルーチンを呼び出す. 298 282 */ 299 283 ciSIOCBR_readySend(); -
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/tSCIF.cdl
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * FIFOå 59 èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ç¨ ç°¡æSIOãã© 60 * ã¤ãã®ã³ã³ãã¼ãã³ãè¨è¿° 43 * FIFO内蔵シリアルコミュニケーションインタフェース用 簡易SIOドラ 44 * イバのコンポーネント記述 61 45 */ 62 46 63 47 /* 64 * FIFOå 65 èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ã«é¢ããå®ç¾©ã®ã¤ã³ 66 * ãã¼ã 48 * FIFO内蔵シリアルコミュニケーションインタフェースに関する定義のイン 49 * ポート 67 50 */ 68 51 import_C("scif.h"); 69 52 70 53 /* 71 * FIFOå 72 èµã·ãªã¢ã«ã³ãã¥ãã±ã¼ã·ã§ã³ã¤ã³ã¿ãã§ã¼ã¹ç¨ ç°¡æSIOãã©ã¤ã 73 * ã®ã»ã«ã¿ã¤ã 54 * FIFO内蔵シリアルコミュニケーションインタフェース用 簡易SIOドライバ 55 * のセルタイプ 74 56 */ 75 57 celltype tSCIF { … … 81 63 82 64 attr { 83 uintptr_t baseAddress; /* SCIF ã¬ã¸ã¹ã¿ã®ãã¼ã¹ã¢ãã¬ã¹*/84 uint32_t baudRate; /* ãã¼ã¬ã¼ãã®è¨å®å¤*/65 uintptr_t baseAddress; /* SCIFレジスタのベースアドレス */ 66 uint32_t baudRate; /* ボーレートの設定値 */ 85 67 }; 86 68 var { 87 bool_t initialized = false; /* åæåæ¸ã¿*/69 bool_t initialized = false; /* 初期化済み */ 88 70 }; 89 71 }; -
EcnlProtoTool/trunk/asp3_dcre/arch/gcc/tool_stddef.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 46 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * t_stddef.h ã®éçºç°å¢ä¾åé¨ï¼GCCç¨ï¼43 * t_stddef.hの開発環境依存部(GCC用) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ã³ã³ãã¤ã©ã®æ¡å¼µæ©è½ã®ããã®ãã¯ãå®ç¾©66 */ 67 #ifndef __cplusplus /* C++ ã«ã¯inline ããã*/50 * コンパイラの拡張機能のためのマクロ定義 51 */ 52 #ifndef __cplusplus /* C++にはinline がある */ 68 53 #if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L 69 /* C99 ã«ã¯inline ããã*/70 #define inline __inline__ /* ã¤ã³ã©ã¤ã³é¢æ°*/54 /* C99にはinline がある */ 55 #define inline __inline__ /* インライン関数 */ 71 56 #endif /* !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L */ 72 57 #endif /* __cplusplus */ 73 58 74 #define Inline static inline /* ã¤ã³ã©ã¤ã³é¢æ°*/75 76 #ifndef __cplusplus /* C++ ã«ã¯asmããã*/77 #define asm __asm__ /* ã¤ã³ã©ã¤ã³ã¢ã»ã³ãã©*/59 #define Inline static inline /* インライン関数 */ 60 61 #ifndef __cplusplus /* C++にはasmがある */ 62 #define asm __asm__ /* インラインアセンブラ */ 78 63 #endif /* __cplusplus */ 79 64 80 #define Asm __asm__ volatile /* ã¤ã³ã©ã¤ã³ã¢ã»ã³ãã©ï¼æé©åææ¢ï¼*/65 #define Asm __asm__ volatile /* インラインアセンブラ(最適化抑止)*/ 81 66 82 67 #define NoReturn __attribute__((__noreturn__)) 83 /* ãªã¿ã¼ã³ããªãé¢æ° */ 84 85 /* 86 * éçºç°å¢ã®æ¨æºã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã®å©ç¨ 87 * 88 * NULLã®å®ç¾©ãstddef.hããï¼INT_MAXï¼INT_MINï¼UINT_MAXï¼LONG_MAXï¼ 89 * LONG_MINï¼ULONG_MAXï¼CHAR_BITã®å®ç¾©ãlimits.hããåãè¾¼ãï¼ 90 * 91 * C++/EC++ã§ã¯ï¼æ¨æºä»æ§ä¸ã¯ãããã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ãç¨æãã㦠92 * ããã¨ã¯éããªãã®ã§æ³¨æãå¿ 93 è¦ã§ããï¼ã»ã¨ãã©ã®éçºç°å¢ã§ç¨æãã 94 * ã¦ããï¼ï¼ 68 /* リターンしない関数 */ 69 70 /* 71 * 開発環境の標準インクルードファイルの利用 72 * 73 * NULLの定義をstddef.hから,INT_MAX,INT_MIN,UINT_MAX,LONG_MAX, 74 * LONG_MIN,ULONG_MAX,CHAR_BITの定義をlimits.hから取り込む. 75 * 76 * C++/EC++では,標準仕様上はこれらのインクルードファイルが用意されて 77 * いるとは限らないので注意が必要である(ほとんどの開発環境で用意され 78 * ている). 95 79 */ 96 80 #ifndef TOPPERS_MACRO_ONLY … … 100 84 101 85 /* 102 * stdint.h ã®ä»£ç¨ã¨ãªãå®ç¾©103 * 104 * éçºç°å¢ã«stdint.hãç¨æããã¦ãããï¼åæ´æ°åã®ãµã¤ãºããããã¿ã¼105 * ã³ã«å½ã¦ã¯ã¾ãå ´åã«ï¼stdint.hã®ä»£ç¨ã¨ãªãå®ç¾©ãä¸ããï¼106 * 107 * TOPPERS_STDINT_TYPE1: char/short/int/long long ã®ãããé·ããããã108 * 8/16/32/64 ãããã§ï¼ãã¤ã³ã¿ã®ãããé·ãlong109 * ã®ãããé·ã¨ä¸è´ããå ´å86 * stdint.hの代用となる定義 87 * 88 * 開発環境にstdint.hが用意されておらず,各整数型のサイズがあるパター 89 * ンに当てはまる場合に,stdint.hの代用となる定義を与える. 90 * 91 * TOPPERS_STDINT_TYPE1: char/short/int/long longのビット長がそれぞれ 92 * 8/16/32/64ビットで,ポインタのビット長がlong 93 * のビット長と一致する場合 110 94 */ 111 95 #ifdef TOPPERS_STDINT_TYPE1 112 96 113 97 /* 114 * ã³ã³ãã¤ã©ä¾åã®ãã¼ã¿åã®å®ç¾©98 * コンパイラ依存のデータ型の定義 115 99 */ 116 100 #ifndef TOPPERS_MACRO_ONLY 117 101 118 typedef signed char int8_t; /* 符å·ä»ã8ãããæ´æ°*/119 typedef unsigned char uint8_t; /* 符å·ç¡ã8ãããæ´æ°*/120 121 typedef signed short int16_t; /* 符å·ä»ã16ãããæ´æ°*/122 typedef unsigned short uint16_t; /* 符å·ç¡ã16ãããæ´æ°*/123 124 typedef signed int int32_t; /* 符å·ä»ã32ãããæ´æ°*/125 typedef unsigned int uint32_t; /* 符å·ç¡ã32ãããæ´æ°*/126 127 typedef signed long long int64_t; /* 符å·ä»ã64ãããæ´æ°*/128 typedef unsigned long long uint64_t; /* 符å·ç¡ã64ãããæ´æ°*/129 130 typedef int8_t int_least8_t; /* 8 ããã以ä¸ã®ç¬¦å·ä»ãæ´æ°*/131 typedef uint8_t uint_least8_t; /* 8 ããã以ä¸ã®ç¬¦å·ç¡ãæ´æ°*/132 133 typedef long intptr_t; /* ãã¤ã³ã¿ãæ ¼ç´ã§ãã符å·ä»ãæ´æ°*/134 typedef unsigned long uintptr_t; /* ãã¤ã³ã¿ãæ ¼ç´ã§ãã符å·ç¡ãæ´æ°*/102 typedef signed char int8_t; /* 符号付き8ビット整数 */ 103 typedef unsigned char uint8_t; /* 符号無し8ビット整数 */ 104 105 typedef signed short int16_t; /* 符号付き16ビット整数 */ 106 typedef unsigned short uint16_t; /* 符号無し16ビット整数 */ 107 108 typedef signed int int32_t; /* 符号付き32ビット整数 */ 109 typedef unsigned int uint32_t; /* 符号無し32ビット整数 */ 110 111 typedef signed long long int64_t; /* 符号付き64ビット整数 */ 112 typedef unsigned long long uint64_t; /* 符号無し64ビット整数 */ 113 114 typedef int8_t int_least8_t; /* 8ビット以上の符号付き整数 */ 115 typedef uint8_t uint_least8_t; /* 8ビット以上の符号無し整数 */ 116 117 typedef long intptr_t; /* ポインタを格納できる符号付き整数 */ 118 typedef unsigned long uintptr_t; /* ポインタを格納できる符号無し整数 */ 135 119 136 120 #endif /* TOPPERS_MACRO_ONLY */ 137 121 138 122 /* 139 * ã³ã³ãã¤ã©ä¾åã®ãã¼ã¿åã®æ´æ°å®æ°ãä½ããã¯ã123 * コンパイラ依存のデータ型の整数定数を作るマクロ 140 124 */ 141 125 #ifndef INT8_C … … 172 156 173 157 /* 174 * ã³ã³ãã¤ã©ä¾åã®ãã¼ã¿åã«æ ¼ç´ã§ããæ大å¤ã¨æå°å¤ã®å®ç¾©158 * コンパイラ依存のデータ型に格納できる最大値と最小値の定義 175 159 */ 176 160 #define INT8_MAX SCHAR_MAX … … 197 181 198 182 /* 199 * æµ®åå°æ°ç¹åã«é¢ããå®ç¾©200 * 201 * TOPPERS_STDFLOAT_TYPE1: float ãIEEE754æºæ ã®å精度浮åå°æ°ç¹æ°ï¼202 * double ãå精度浮åå°æ°ç¹æ°ã®å ´å183 * 浮動小数点型に関する定義 184 * 185 * TOPPERS_STDFLOAT_TYPE1: floatがIEEE754準拠の単精度浮動小数点数, 186 * doubleが倍精度浮動小数点数の場合 203 187 */ 204 188 #ifdef TOPPERS_STDFLOAT_TYPE1 205 189 #ifndef TOPPERS_MACRO_ONLY 206 190 207 typedef float float32_t; /* IEEE754 æºæ ã®å精度浮åå°æ°ç¹æ°*/208 typedef double double64_t; /* IEEE754 æºæ ã®å精度浮åå°æ°ç¹æ°*/191 typedef float float32_t; /* IEEE754準拠の単精度浮動小数点数 */ 192 typedef double double64_t; /* IEEE754準拠の倍精度浮動小数点数 */ 209 193 210 194 #endif /* TOPPERS_MACRO_ONLY */ -
EcnlProtoTool/trunk/asp3_dcre/arch/tracelog/tTraceLog.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 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 * 免責すること. 46 32 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * ãã¬ã¼ã¹ãã°æ©è½43 * トレースログ機能 59 44 */ 60 45 … … 68 53 69 54 /* 70 * ãã¬ã¼ã¹æå»ã®åãåºã55 * トレース時刻の取り出し 71 56 * 72 * ããã©ã«ãã§ã¯ï¼ãã°æå»ã¨ãã¦ï¼é«å解è½ã¿ã¤ãã®ã«ã¦ã³ãå¤ãç¨ãã¦73 * ããï¼ã¿ã¼ã²ããä¾åã§å¤æ´ããå ´åã«ã¯ï¼SYSLOG_GET_LOGTIMã«ï¼ãã°æ74 * å»ãåãåºããã¯ããå®ç¾©ããï¼57 * デフォルトでは,ログ時刻として,高分解能タイマのカウント値を用いて 58 * いる.ターゲット依存で変更する場合には,SYSLOG_GET_LOGTIMに,ログ時 59 * 刻を取り出すマクロを定義する. 75 60 */ 76 61 #ifndef SYSLOG_GET_LOGTIM … … 80 65 81 66 /* 82 * ãã¬ã¼ã¹ãã°ã®éå§67 * トレースログの開始 83 68 */ 84 69 ER … … 96 81 97 82 /* 98 * ãã¬ã¼ã¹ãã°ã®æ¸è¾¼ã¿83 * トレースログの書込み 99 84 */ 100 85 ER … … 107 92 108 93 /* 109 * ãã¬ã¼ã¹æå»ã®è¨å®94 * トレース時刻の設定 110 95 */ 111 96 SYSLOG_GET_LOGTIM(&(((SYSLOG *) p_trace)->logtim)); 112 97 113 98 /* 114 * ãã¬ã¼ã¹ãããã¡ã«è¨é²99 * トレースバッファに記録 115 100 */ 116 101 VAR_logBuffer[VAR_tail] = *p_trace; … … 136 121 137 122 /* 138 * ãã¬ã¼ã¹ãã°ã®èªåºã123 * トレースログの読出し 139 124 */ 140 125 ER … … 147 132 148 133 /* 149 * ãã¬ã¼ã¹ãã°ãããã¡ããã®ååºã134 * トレースログバッファからの取出し 150 135 */ 151 136 if (VAR_count > 0U) { … … 167 152 168 153 /* 169 * ã¢ã»ã³ããªè¨èªã§è¨è¿°ãããã³ã¼ããããã¬ã¼ã¹ãã°ãåºåããããã®é¢170 * æ°154 * アセンブリ言語で記述されるコードからトレースログを出力するための関 155 * 数 171 156 */ 172 157 … … 208 193 209 194 /* 210 * ã«ã¼ãã«æ 211 å ±ã®ååºã 195 * カーネル情報の取出し 212 196 */ 213 197 static intptr_t … … 257 241 258 242 /* 259 * ãã¬ã¼ã¹ãã°ã®è¡¨ç¤º243 * トレースログの表示 260 244 */ 261 245 static void … … 301 285 302 286 /* 303 * ä½ã¬ãã«åºåã®å¼åºãé¢æ°287 * 低レベル出力の呼出し関数 304 288 */ 305 289 static void … … 310 294 311 295 /* 312 * ãã¬ã¼ã¹ãã°ã®ãã³ã296 * トレースログのダンプ 313 297 */ 314 298 void … … 323 307 324 308 /* 325 * ãã¬ã¼ã¹ãã°ã®ãã³ãï¼åãå£é¢æ°ï¼309 * トレースログのダンプ(受け口関数) 326 310 */ 327 311 void -
EcnlProtoTool/trunk/asp3_dcre/arch/tracelog/tTraceLog.cdl
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/plain
totext/plain;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ãã¬ã¼ã¹ãã°æ©è½ã®ã³ã³ãã¼ãã³ãè¨è¿°ãã¡ã¤ã«44 * トレースログ機能のコンポーネント記述ファイル 60 45 */ 61 46 62 47 /* 63 * ãã¬ã¼ã¹ãã°åºåã«é¢ããå®ç¾©48 * トレースログ出力に関する定義 64 49 */ 65 50 import_C("arch/tracelog/trace_log.h"); 66 51 67 52 /* 68 * ãã¬ã¼ã¹ãã°æ©è½ã®ã·ã°ããã£53 * トレースログ機能のシグニチャ 69 54 */ 70 55 signature sTraceLog { 71 56 /* 72 * ãã¬ã¼ã¹ãã°ã®éå§57 * トレースログの開始 73 58 */ 74 59 ER start([in] MODE mode); 75 60 76 61 /* 77 * ãã¬ã¼ã¹ãã°ã®æ¸è¾¼ã¿62 * トレースログの書込み 78 63 */ 79 64 ER write([in] const TRACE *p_trace); 80 65 81 66 /* 82 * ãã¬ã¼ã¹ãã°ã®èªåºã67 * トレースログの読出し 83 68 */ 84 69 ER read([out] TRACE *p_trace); 85 70 86 71 /* 87 * ãã¬ã¼ã¹ãã°ã®ãã³ã72 * トレースログのダンプ 88 73 */ 89 74 void dump(void); … … 91 76 92 77 /* 93 * ãã¬ã¼ã¹ãã°æ©è½ã®ã»ã«ã¿ã¤ã78 * トレースログ機能のセルタイプ 94 79 */ 95 80 [singleton, active] 96 81 celltype tTraceLog { 97 82 entry sTraceLog eTraceLog; 98 entry sRoutineBody eDump; /* çµäºå¦çã«ã¼ãã³ã¨ã®æ¥ç¶*/99 call sPutLog cPutLog; /* ä½ã¬ãã«åºåã¨ã®æ¥ç¶*/83 entry sRoutineBody eDump; /* 終了処理ルーチンとの接続 */ 84 call sPutLog cPutLog; /* 低レベル出力との接続 */ 100 85 101 86 attr { 102 uint_t logBufferSize; /* ãã°ãããã¡ãµã¤ãº*/87 uint_t logBufferSize; /* ログバッファサイズ */ 103 88 MODE initialMode = C_EXP("TRACE_STOP"); 104 /* åæåå¾ã®ã¢ã¼ã*/89 /* 初期化後のモード */ 105 90 }; 106 91 var { 107 [size_is(logBufferSize)] TRACE *logBuffer; /* ãã°ãããã¡ */ 108 uint_t count = 0; /* ãã°ãããã¡ä¸ã®ãã°ã®æ° */ 109 uint_t head = 0; /* å 110 é ã®ãã°ã®æ ¼ç´ä½ç½® */ 111 uint_t tail = 0; /* 次ã®ãã°ã®æ ¼ç´ä½ç½® */ 112 MODE mode = initialMode; /* ãã¬ã¼ã¹ã¢ã¼ã */ 92 [size_is(logBufferSize)] TRACE *logBuffer; /* ログバッファ */ 93 uint_t count = 0; /* ログバッファ中のログの数 */ 94 uint_t head = 0; /* 先頭のログの格納位置 */ 95 uint_t tail = 0; /* 次のログの格納位置 */ 96 MODE mode = initialMode; /* トレースモード */ 113 97 }; 114 98 }; -
EcnlProtoTool/trunk/asp3_dcre/arch/tracelog/trace_log.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 8 8 * Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 46 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 53 38 * 54 39 * $Id$ … … 56 41 57 42 /* 58 * ãã¬ã¼ã¹ãã°ã«é¢ããè¨å®59 * 60 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼target_kernel_impl.hããã³61 * target_syssvc.h ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ã¾ãï¼ãã¬ã¼ã¹ãã°æ©è½ã®62 * åæåãè¨é²ã®éå§ï¼åæ¢ï¼ãã¬ã¼ã¹ãã°ã®ãã³ããè¡ãããã°ã©ã ãã63 * ã¤ã³ã¯ã«ã¼ããããã¨ãæ³å®ãã¦ããï¼43 * トレースログに関する設定 44 * 45 * このインクルードファイルは,target_kernel_impl.hおよび 46 * target_syssvc.hのみからインクルードされる.また,トレースログ機能の 47 * 初期化や記録の開始/停止,トレースログのダンプを行うプログラムから 48 * インクルードすることを想定している. 64 49 */ 65 50 … … 68 53 69 54 /* 70 * ãã¬ã¼ã¹ãã°ã®ãã¼ã¿æ§é 71 * 72 * ã·ã¹ãã ãã°æ©è½ã®ãã°æ 73 å ±ã®ãã¼ã¿æ§é ã¨åããã®ãç¨ããï¼ 55 * トレースログのデータ構造 56 * 57 * システムログ機能のログ情報のデータ構造と同じものを用いる. 74 58 */ 75 59 #ifndef TOPPERS_MACRO_ONLY … … 81 65 82 66 /* 83 * ãã¬ã¼ã¹ã¢ã¼ãã®å®ç¾©84 */ 85 #define TRACE_STOP UINT_C(0x00) /* ãã¬ã¼ã¹åæ¢*/86 #define TRACE_RINGBUF UINT_C(0x01) /* ãªã³ã°ãããã¡ã¢ã¼ã*/87 #define TRACE_AUTOSTOP UINT_C(0x02) /* èªååæ¢ã¢ã¼ã*/88 #define TRACE_CLEAR UINT_C(0x04) /* ãã¬ã¼ã¹ãã°ã®ã¯ãªã¢*/67 * トレースモードの定義 68 */ 69 #define TRACE_STOP UINT_C(0x00) /* トレース停止 */ 70 #define TRACE_RINGBUF UINT_C(0x01) /* リングバッファモード */ 71 #define TRACE_AUTOSTOP UINT_C(0x02) /* 自動停止モード */ 72 #define TRACE_CLEAR UINT_C(0x04) /* トレースログのクリア */ 89 73 90 74 #ifndef TOPPERS_MACRO_ONLY 91 75 92 76 /* 93 * TECS ã§è¨è¿°ããããã¹ãããã°ã©ã ç¨ã®ãµã¼ãã¹ãç´æ¥å¼ã³åºãããã®å®ç¾©94 * 95 * C è¨èªã§è¨è¿°ãããã¢ããªã±ã¼ã·ã§ã³ããï¼TECSã§è¨è¿°ããããã¬ã¼ã¹ãã°96 * æ©è½ãå¼ã³åºãããã«ã¯ï¼ã¢ããã¿ãç¨ããã®ãæ£å½ãªæ¹æ³ã§ãããï¼ã97 * ã¬ã¼ã¹ãã°æ©è½ãã·ã³ã°ã«ãã³ã§ãããã¨ãå©ç¨ãã¦ç´æ¥å¼ã³åºãï¼77 * TECSで記述されたテストプログラム用のサービスを直接呼び出すための定義 78 * 79 * C言語で記述されたアプリケーションから,TECSで記述されたトレースログ 80 * 機能を呼び出すためには,アダプタを用いるのが正当な方法であるが,ト 81 * レースログ機能がシングルトンであることを利用して直接呼び出す. 98 82 */ 99 83 extern ER tTraceLog_eTraceLog_start(MODE mode); … … 103 87 104 88 /* 105 * ãã¬ã¼ã¹ãã°ã®éå§106 * 107 * ãã¬ã¼ã¹ãã°ã®è¨é²ãéå§ï¼åæ¢ããï¼å¼æ°ã«ãã次ã®åä½ãè¡ãï¼108 * 109 * TRACE_STOP ï¼ãã¬ã¼ã¹ãåæ¢ï¼110 * TRACE_RINGBUF ï¼ãªã³ã°ãããã¡ã¢ã¼ãã§ãã¬ã¼ã¹ãéå§ï¼111 * TRACE_AUTOSTOP ï¼èªååæ¢ã¢ã¼ãã§ãã¬ã¼ã¹ãéå§ï¼112 * TRACE_CLEAR ï¼ãã¬ã¼ã¹ãã°ãã¯ãªã¢ï¼89 * トレースログの開始 90 * 91 * トレースログの記録を開始/停止する.引数により次の動作を行う. 92 * 93 * TRACE_STOP:トレースを停止. 94 * TRACE_RINGBUF:リングバッファモードでトレースを開始. 95 * TRACE_AUTOSTOP:自動停止モードでトレースを開始. 96 * TRACE_CLEAR:トレースログをクリア. 113 97 */ 114 98 Inline ER … … 119 103 120 104 /* 121 * ãã¬ã¼ã¹ãã°ã®æ¸è¾¼ã¿105 * トレースログの書込み 122 106 */ 123 107 Inline ER … … 128 112 129 113 /* 130 * ãã¬ã¼ã¹ãã°ã®èªåºã114 * トレースログの読出し 131 115 */ 132 116 Inline ER … … 137 121 138 122 /* 139 * ãã¬ã¼ã¹ãã°ãåºåããããã®ã©ã¤ãã©ãªé¢æ°123 * トレースログを出力するためのライブラリ関数 140 124 */ 141 125 … … 183 167 184 168 /* 185 * ãã¬ã¼ã¹ãã°ãåºåããããã®ãã¯ã169 * トレースログを出力するためのマクロ 186 170 */ 187 171 … … 200 184 201 185 /* 202 * ãã¬ã¼ã¹ãã°ã®ãã³ã 203 * 204 * ãã¬ã¼ã¹ãã°ããã³ãããï¼çµäºå¦çã«ã¼ãã³ã¨ãã¦ç»é²ãããã¨ãæ³å® 205 * ãã¦ããï¼å¼æ°ã¨ãã¦ï¼ãã³ãå 206 ã¨ãªãæååºåé¢æ°ã¸ã®ãã¤ã³ã¿ã渡ãï¼ 207 * ã¿ã¼ã²ããä¾åã®ä½ã¬ãã«æååºåãå©ç¨ããå ´åã«ã¯ï¼target_putcã渡 208 * ãï¼ 186 * トレースログのダンプ 187 * 188 * トレースログをダンプする.終了処理ルーチンとして登録することも想定 189 * している.引数として,ダンプ先となる文字出力関数へのポインタを渡す. 190 * ターゲット依存の低レベル文字出力を利用する場合には,target_putcを渡 191 * す. 209 192 */ 210 193 Inline void … … 217 200 218 201 /* 219 * ãã¬ã¼ã¹ãã°æ¹æ³ã®è¨å®202 * トレースログ方法の設定 220 203 */ 221 204 #define LOG_TSKSTAT(p_tcb) trace_2(LOG_TYPE_TSKSTAT, p_tcb, p_tcb->tstat)
Note:
See TracChangeset
for help on using the changeset viewer.