Changeset 356
- Timestamp:
- Jun 8, 2018, 11:24:32 AM (5 years ago)
- Location:
- ssp_aarch64/trunk
- Files:
-
- 57 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_aarch64/trunk/arm64_gcc/MANIFEST
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/Makefile.prc
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 4 4 5 5 # 6 # Makefile ã®ããã»ããµä¾åé¨ï¼ARM64ç¨ï¼6 # Makefile のプロセッサ依存部(ARM64用) 7 7 # 8 8 … … 10 10 11 11 # 12 # ã³ã³ãã¤ã«ãªãã·ã§ã³12 # コンパイルオプション 13 13 # 14 14 COPTS := $(COPTS) … … 19 19 20 20 # 21 # ã«ã¼ãã«ã«é¢ããå®ç¾©21 # カーネルに関する定義 22 22 # 23 23 KERNEL_DIRS := $(KERNEL_DIRS) $(PRCDIR) … … 27 27 28 28 # 29 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©29 # コンフィギュレータ関係の変数の定義 30 30 # 31 31 CFG_TABS := $(CFG_TABS) --symval-table $(PRCDIR)/prc_sym.def … … 35 35 36 36 # 37 # ä¾åé¢ä¿ã®å®ç¾©37 # 依存関係の定義 38 38 # 39 39 cfg1_out.c: $(PRCDIR)/prc_sym.def … … 42 42 43 43 # 44 # ãã®ä»44 # その他 45 45 # 46 46 CLEAN_FILES := $(CLEAN_FILES) -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/arm64.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: arm64.h 714 2018-05-29 05:52:19Z saito $ … … 82 67 83 68 /* 84 * DAIFã®è¨å®ããã³ç¶æ 85 åç 86 § 69 * DAIFの設定および状態参照 87 70 */ 88 71 Inline uint32_t … … 100 83 101 84 /* 102 * DAIF.F ããã³ DAIF.I ã®ã»ãã/ã¯ãªã¢85 * DAIF.F および DAIF.I のセット/クリア 103 86 */ 104 87 Inline void … … 113 96 114 97 /* 115 * DAIF.I ã®ç¶æ 116 åç 117 § 98 * DAIF.I の状態参照 118 99 */ 119 100 Inline bool_t … … 135 116 136 117 /* 137 * DAIF.F ã®ç¶æ 138 åç 139 § 118 * DAIF.F の状態参照 140 119 */ 141 120 Inline bool_t -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/gic_config.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: gic_kernel_impl.c 714 2016-03-31 05:52:19Z ertl-hiro $ 55 40 */ 56 41 /* 57 * GIC ä¾åå¦çï¼ARM64ç¨ï¼42 * GIC依存処理(ARM64用) 58 43 */ 59 44 #include "kernel_impl.h" 60 45 61 46 /* 62 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®æä½47 * CPUインタフェースの操作 63 48 */ 64 49 65 50 /* 66 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®åæå51 * CPUインタフェースの初期化 67 52 */ 68 53 void … … 70 55 { 71 56 /* 72 * CPU ã¤ã³ã¿ãã§ã¼ã¹ããããã»ããµã¸ã®å²è¾¼ã¿ä¿¡å·éåºãç¡å¹ã«ãã57 * CPUインタフェースからプロセッサへの割込み信号送出を無効にする 73 58 */ 74 59 sil_wrw_mem(GICC_CTLR, GICC_CTLR_DISABLE); 75 60 76 61 /* 77 * å²è¾¼ã¿åªå 78 度ãã¹ã¯ãæä½åªå 79 度ã«è¨å® 62 * 割込み優先度マスクを最低優先度に設定 80 63 */ 81 64 gicc_set_priority((GIC_PRI_LEVEL - 1) << GIC_PRI_SHIFT); 82 65 83 66 /* 84 * å²è¾¼ã¿åªå 85 度ã®å 86 ¨ãããæå¹ã« 67 * 割込み優先度の全ビット有効に 87 68 */ 88 69 sil_wrw_mem(GICC_BPR, 0U); 89 70 90 71 /* 91 * ã¢ã¯ãã£ããªå²è¾¼ã¿ãããã°ï¼EOIã«ããã¯ãªã¢ãã72 * アクティブな割込みがあれば,EOIによりクリアする 92 73 */ 93 74 sil_wrw_mem(GICC_EOIR, sil_rew_mem(GICC_IAR)); 94 75 95 76 /* 96 * CPU ã¤ã³ã¿ãã§ã¼ã¹ãã¤ãã¼ãã«77 * CPUインタフェースをイネーブル 97 78 */ 98 79 sil_wrw_mem(GICC_CTLR, GICC_CTLR_ENABLE); … … 100 81 101 82 /* 102 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®çµäºå¦ç83 * CPUインタフェースの終了処理 103 84 */ 104 85 void … … 109 90 110 91 /* 111 * ãã£ã¹ããªãã¥ã¼ã¿ã®æä½92 * ディストリビュータの操作 112 93 */ 113 94 114 95 /* 115 * ãã£ã¹ããªãã¥ã¼ã¿ã®åæå96 * ディストリビュータの初期化 116 97 */ 117 98 void … … 121 102 122 103 /* 123 * ãã£ã¹ããªãã¥ã¼ã¿ãç¡å¹ã«ãã¦è»¢éã忢104 * ディストリビュータを無効にして転送を停止 124 105 */ 125 106 sil_wrw_mem(GICD_CTLR, GICD_CTLR_DISABLE); 126 107 127 108 /* 128 * ãã¹ã¦ã®å²è¾¼ã¿ã®è»¢éãç¦æ¢109 * すべての割込みの転送を禁止 129 110 */ 130 111 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 133 114 134 115 /* 135 * ãã¹ã¦ã®å²è¾¼ã¿å²è¾¼ã¿ä¿çç¶æ 136 ãã¯ãªã¢ 116 * すべての割込み割込み保留状態をクリア 137 117 */ 138 118 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 141 121 142 122 /* 143 * ãã¹ã¦ã®å²è¾¼ã¿ãæä½åªå 144 度ã«è¨å® 123 * すべての割込みを最低優先度に設定 145 124 */ 146 125 for (i = 0; i < (GIC_TNUM_INTNO + 3) / 4; i++){ … … 148 127 } 149 128 /* 150 * ãã¹ã¦ã®å 151 ±æããªãã§ã©ã«å²è¾¼ã¿ã®ã¿ã¼ã²ãããããã»ããµ0ã«è¨å® 129 * すべての共有ペリフェラル割込みのターゲットをプロセッサ0に設定 152 130 */ 153 131 for (i = GIC_INTNO_SPI0 / 4; i < (GIC_TNUM_INTNO + 3) / 4; i++) { … … 156 134 157 135 /* 158 * ãã¹ã¦ã®ããªãã§ã©ã«å²è¾¼ã¿ãã¬ãã«ããªã¬ã«è¨å®136 * すべてのペリフェラル割込みをレベルトリガに設定 159 137 */ 160 138 for (i = GIC_INTNO_PPI0 / 16; i < (GIC_TNUM_INTNO + 15) / 16; i++) { … … 162 140 } 163 141 /* 164 * ãã£ã¹ããªãã¥ã¼ã¿ãæå¹ã«ãã¦åªå 165 度è¦åã«ããå²è¾¼ã¿ã®è»¢éãéå§ 142 * ディストリビュータを有効にして優先度規則による割込みの転送を開始 166 143 */ 167 144 sil_wrw_mem(GICD_CTLR, GICD_CTLR_ENABLE); … … 169 146 170 147 /* 171 * ãã£ã¹ããªãã¥ã¼ã¿ã®çµäºå¦ç148 * ディストリビュータの終了処理 172 149 */ 173 150 void -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/gic_config.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: gic_config.h 714 2018-05-29 05:52:19Z saito $ … … 56 41 57 42 /* 58 * ã«ã¼ãã«ã®å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åé¨ï¼GICç¨ï¼59 * 60 * ãã®ããããã¡ã¤ã«ã¯ï¼target_config.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ã61 * ããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼62 * ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼43 * カーネルの割込みコントローラ依存部(GIC用) 44 * 45 * このヘッダファイルは,target_config.h(または,そこからインクルード 46 * されるファイル)のみからインクルードされる. 47 * 他のファイルから直接インクルードしてはならない. 63 48 */ 64 49 … … 70 55 71 56 /* 72 * å²è¾¼ã¿çªå·ã®å®ç¾©57 * 割込み番号の定義 73 58 */ 74 59 #define GIC_INTNO_PPI0 16U … … 76 61 77 62 /* 78 * å²è¾¼ã¿åªå 79 åº¦ã®æä½ 80 * 81 * å²è¾¼ã¿åªå 82 度ã®å 83 é¨è¡¨ç¾ã¯ï¼uint_tåã§è¡¨ãï¼0ãæé«åªå 84 度ã§ï¼å¤ã大ã 85 * ãã»ã©åªå 86 度ãä¸ãããã®ã¨ããï¼GICã®ã¬ã¸ã¹ã¿æ§æã¨æ´åãããããã«ï¼ 87 * åªå 88 åº¦ã®æ®µæ°ã256段éã®æã«ãããã¦è¡¨ãï¼ 63 * 割込み優先度の操作 64 * 65 * 割込み優先度の内部表現は,uint_t型で表し,0が最高優先度で,値が大き 66 * いほど優先度が下がるものとする.GICのレジスタ構成と整合させるために, 67 * 優先度の段数が256段階の時にあわせて表す. 89 68 */ 90 69 #define GIC_PRI_LEVEL (TMAX_INTPRI - TMIN_INTPRI + 2) … … 109 88 #endif /* GIC_PRI_LEVEL == 16 */ 110 89 111 /* å¤é¨è¡¨ç¾ã¸ã®å¤æ*/90 /* 外部表現への変換 */ 112 91 #define EXT_IPM(pri) \ 113 92 (((PRI)((pri) >> GIC_PRI_SHIFT)) - (GIC_PRI_LEVEL - 1)) 114 93 115 /* å 116 é¨è¡¨ç¾ã¸ã®å¤æ */ 94 /* 内部表現への変換 */ 117 95 #define INT_IPM(ipm) \ 118 96 (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT) 119 97 120 98 /* 121 * GICã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãå®ç¾©ããããã®ãã¯ã 122 * 123 * GICã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãï¼ã¢ã»ã³ããªè¨èªãããåç 124 §ã§ããããã«ããã 125 * ãã®ãã¯ãï¼ 99 * GICレジスタのアドレスを定義するためのマクロ 100 * 101 * GICレジスタのアドレスを,アセンブリ言語からも参照できるようにするた 102 * めのマクロ. 126 103 */ 127 104 #ifndef GIC_REG … … 130 107 131 108 /* 132 * CPU ã¤ã³ã¿ãã§ã¼ã¹é¢é£ã®å®ç¾©109 * CPUインタフェース関連の定義 133 110 */ 134 111 #define GICC_CTLR GIC_REG(GICC_BASE, 0x00) … … 141 118 142 119 /* 143 * CPU ã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICC_CTLRï¼ã®è¨å®å¤144 * ï¼GICv1ã§ã»ãã¥ãªãã£æ¡å¼µããªãå ´åï¼120 * CPUインタフェース制御レジスタ(GICC_CTLR)の設定値 121 * (GICv1でセキュリティ拡張がない場合) 145 122 */ 146 123 #define GICC_CTLR_DISABLE UINT_C(0x00) … … 148 125 149 126 /* 150 * ãã£ã¹ããªãã¥ã¼ã¿é¢é£ã®å®ç¾©127 * ディストリビュータ関連の定義 151 128 */ 152 129 #define GICD_CTLR GIC_REG(GICD_BASE, 0x000) … … 169 146 170 147 /* 171 * ãã£ã¹ããªãã¥ã¼ã¿å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICD_CTLRï¼ã®è¨å®å¤148 * ディストリビュータ制御レジスタ(GICD_CTLR)の設定値 172 149 */ 173 150 #define GICD_CTLR_DISABLE UINT_C(0x00) … … 175 152 176 153 /* 177 * å²è¾¼ã¿ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¬ã¸ã¹ã¿ï¼GICD_ICFGRnï¼ã®è¨å®å¤154 * 割込みコンフィギュレーションレジスタ(GICD_ICFGRn)の設定値 178 155 */ 179 156 #define GICD_ICFGRn_LEVEL UINT_C(0x00) … … 183 160 184 161 /* 185 * CPUã¤ã³ã¿ãã§ã¼ã¹ã®æä½ 186 */ 187 188 /* 189 * å²è¾¼ã¿åªå 190 度ãã¹ã¯ãè¨å®ï¼priã¯å 191 é¨è¡¨ç¾ï¼ 162 * CPUインタフェースの操作 163 */ 164 165 /* 166 * 割込み優先度マスクを設定(priは内部表現) 192 167 */ 193 168 Inline void … … 198 173 199 174 /* 200 * å²è¾¼ã¿åªå 201 度ãã¹ã¯ãåå¾ï¼å 202 é¨è¡¨ç¾ã§è¿ãï¼ 175 * 割込み優先度マスクを取得(内部表現で返す) 203 176 */ 204 177 Inline uint_t … … 209 182 210 183 /* 211 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®åæå184 * CPUインタフェースの初期化 212 185 */ 213 186 extern void gicc_initialize(void); 214 187 215 188 /* 216 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®çµäº189 * CPUインタフェースの終了 217 190 */ 218 191 extern void gicc_terminate(void); 219 192 220 193 /* 221 * ãã£ã¹ããªãã¥ã¼ã¿ã®æä½222 */ 223 224 /* 225 * å²è¾¼ã¿ç¦æ¢ï¼å²è¾¼ã¿ã¤ãã¼ãã«ã®ã¯ãªã¢ï¼194 * ディストリビュータの操作 195 */ 196 197 /* 198 * 割込み禁止(割込みイネーブルのクリア) 226 199 */ 227 200 Inline void … … 232 205 233 206 /* 234 * å²è¾¼ã¿è¨±å¯ï¼å²è¾¼ã¿ã¤ãã¼ãã«ã®ã»ããï¼207 * 割込み許可(割込みイネーブルのセット) 235 208 */ 236 209 Inline void … … 241 214 242 215 /* 243 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ã¯ãªã¢216 * 割込みペンディングのクリア 244 217 */ 245 218 Inline void … … 250 223 251 224 /* 252 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ã»ãã225 * 割込みペンディングのセット 253 226 */ 254 227 Inline void … … 259 232 260 233 /* 261 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ãã§ãã¯234 * 割込みペンディングのチェック 262 235 */ 263 236 Inline bool_t … … 268 241 269 242 /* 270 * å²è¾¼ã¿ã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³243 * 割込みのコンフィグレーション 271 244 */ 272 245 Inline void … … 283 256 284 257 /* 285 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿åªå 286 度ã®è¨å®ï¼priã¯å 287 é¨è¡¨ç¾ï¼ 258 * 割込み要求ラインに対する割込み優先度の設定(priは内部表現) 288 259 */ 289 260 Inline void … … 300 271 301 272 /* 302 * å²è¾¼ã¿ã¿ã¼ã²ããããã»ããµã®è¨å®303 * 304 * prcs ã¯ï¼ã¿ã¼ã²ããã¨ããããã»ããµã表ããããã®ãããæ¯è«çåã§æ305 * å®ããï¼306 * ããã»ããµ0 : 0x01307 * ããã»ããµ1 : 0x02308 * ããã»ããµ2 : 0x04309 * ããã»ããµ3 : 0x08273 * 割込みターゲットプロセッサの設定 274 * 275 * prcsは,ターゲットとするプロセッサを表すビットのビット毎論理和で指 276 * 定する. 277 * プロセッサ0 : 0x01 278 * プロセッサ1 : 0x02 279 * プロセッサ2 : 0x04 280 * プロセッサ3 : 0x08 310 281 */ 311 282 Inline void … … 322 293 323 294 /* 324 * ãã£ã¹ããªãã¥ã¼ã¿ã®åæå295 * ディストリビュータの初期化 325 296 */ 326 297 extern void gicd_initialize(void); 327 298 328 299 /* 329 * ãã£ã¹ããªãã¥ã¼ã¿ã®çµäº300 * ディストリビュータの終了 330 301 */ 331 302 extern void gicd_terminate(void); 332 303 333 304 /* 334 * ä¾å¤å 335 ¥å£ã®GICæä½ï¼gic_support.Sï¼ 305 * 例外入口のGIC操作(gic_support.S) 336 306 */ 337 307 extern void gic_exc_entry(void); 338 308 339 309 /* 340 * å²è¾¼ã¿å 341 ¥å£ã®GICæä½ï¼gic_support.Sï¼ 310 * 割込み入口のGIC操作(gic_support.S) 342 311 */ 343 312 extern void gic_int_entry(void); -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/gic_support.S
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 6 6 * Nagoya Municipal Industrial Research Institute, 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 */ 53 38 54 39 /* 55 * ããã»ããµä¾åã¢ã¸ã¥ã¼ã« ã¢ã»ã³ããªè¨èªé¨ï¼GICï¼40 * プロセッサ依存モジュール アセンブリ言語部(GIC) 56 41 */ 57 42 58 43 #define TOPPERS_MACRO_ONLY 59 #define UINT_C(val) (val) /* uint_t åã®å®æ°ãä½ããã¯ã*/60 #define ULONG_C(val) (val) /* ulong_t åã®å®æ°ãä½ããã¯ã*/61 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/44 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 45 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 46 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 62 47 63 48 #define GIC_REG(base, offset) ((base) + (offset)) … … 66 51 67 52 /* 68 * ä¾å¤å 69 ¥å£ã®GICæä½ 70 * x22: ä¾å¤çªå·(0..7) 53 * 例外入口のGIC操作 54 * x22: 例外番号(0..7) 71 55 */ 72 56 .text … … 74 58 .global gic_exc_entry 75 59 gic_exc_entry: 76 mov x0, sp // å²è¾¼ã¿åªå 77 度ãã¹ã¯ã®ä¿å 60 mov x0, sp // 割込み優先度マスクの保存 78 61 ldr x9, =GICC_PMR 79 62 ldr x9, [x9] 80 63 str x9, [x0, #0] 81 64 82 str x22, [x0, #8] // ä¾å¤çªå·ã®ä¿å65 str x22, [x0, #8] // 例外番号の保存 83 66 84 mov x1, x22 // 弿°ãã»ããã㦠call_exc_handler å¼ã³åºã67 mov x1, x22 // 引数をセットして call_exc_handler 呼び出し 85 68 ldr x30, =gic_ret_int 86 69 b call_exc_handler 87 70 88 71 /* 89 * å²è¾¼ã¿å 90 ¥å£ã®GICæä½ 72 * 割込み入口のGIC操作 91 73 */ 92 74 .text … … 96 78 mov x0, sp 97 79 /* 98 * å²è¾¼ã¿ã³ã³ããã¼ã©æä½80 * 割込みコントローラ操作 99 81 */ 100 ldr x9, =GICC_IAR // å²è¾¼ã¿è¦å ãä¿å82 ldr x9, =GICC_IAR // 割込み要因を保存 101 83 ldr w9, [x9] 102 84 str w9, [x0, #8] 103 85 104 ldr x10, =GICC_RPR // å²è¾¼ã¿è¦å ã®åªå 105 度ãå²è¾¼ã¿åªå 106 度ãã¹ã¯ã«ã»ãã 86 ldr x10, =GICC_RPR // 割込み要因の優先度を割込み優先度マスクにセット 107 87 ldr w10, [x10] 108 88 109 89 ldr x11, =GICC_PMR 110 ldr w12, [x11] // å²è¾¼ã¿çºçåã®ãã¹ã¯ã®å¤ãåãåºãã¦ãã90 ldr w12, [x11] // 割込み発生前のマスクの値を取り出しておく 111 91 str w10, [x11] 112 92 113 dsb sy // å²è¾¼ã¿åªå 114 度ãã¹ã¯ãã»ãããããã®ãå¾ 115 㤠93 dsb sy // 割込み優先度マスクがセットされるのを待つ 116 94 117 str w12, [x0, #0] // å²è¾¼ã¿çºçåã®åªå 118 度ãã¹ã¯ãä¿å 119 ldr x11, =GICC_EOIR // EOIã®çºè¡ 95 str w12, [x0, #0] // 割込み発生前の優先度マスクを保存 96 ldr x11, =GICC_EOIR // EOIの発行 120 97 str w9, [x11] 121 98 122 mov w0, w9 // 弿°ãã»ããã㦠call_int_handler å¼ã³åºã99 mov w0, w9 // 引数をセットして call_int_handler 呼び出し 123 100 ldr x30, =gic_ret_int 124 101 b call_int_handler … … 126 103 127 104 /* 128 * å²è¾¼ã¿åºå£ã®GICæä½105 * 割込み出口のGIC操作 129 106 */ 130 107 .text … … 132 109 gic_ret_int: 133 110 mov x0, sp 134 ldr w9, [x0, #0] // å²è¾¼ã¿åªå 135 度ãã¹ã¯ãå 136 ã«æ»ã 111 ldr w9, [x0, #0] // 割込み優先度マスクを元に戻す 137 112 ldr x10, =GICC_PMR 138 113 str w9, [x10] 139 114 140 dsb sy // å²è¾¼ã¿åªå 141 度ãã¹ã¯ãã»ãããããã®ãå¾ 142 㤠115 dsb sy // 割込み優先度マスクがセットされるのを待つ 143 116 144 117 b ret_int -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_cfg1_out.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 4 4 5 5 /* 6 * cfg1_out.cããªã³ã¯ããããã«å¿ 7 è¦ãªã¹ã¿ãã®å®ç¾© 6 * cfg1_out.cをリンクするために必要なスタブの定義 8 7 */ 9 8 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼3 # パス3の生成スクリプトのコア依存部(ARM用) 4 4 # 5 5 # $Id: core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro $ … … 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 inhinib_entry = SYMBOL("_kernel_inhinib_entry") … … 22 22 inthdr = PEEK(inhinib_entry, $sizeof_FP) 23 23 24 # å²è¾¼ã¿ãã³ãã©ã®å 25 é çªå°ã®ãã§ã㯠24 # 割込みハンドラの先頭番地のチェック 26 25 if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0 27 26 error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned") … … 35 34 36 35 # 37 # CPU ä¾å¤ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯36 # CPU例外ハンドラテーブルに関するチェック 38 37 # 39 # DEF_EXC ã§ç»é²ããCPUä¾å¤ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼40 # default_exc_handler ã®ãã§ãã¯ã¯è¡ããªãï¼38 # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと, 39 # default_exc_handlerのチェックは行わない. 41 40 # 42 41 excinib_entry = SYMBOL("_kernel_excinib_entry") … … 44 43 exchdr = PEEK(excinib_entry, $sizeof_FP) 45 44 46 # CPUä¾å¤ãã³ãã©ã®å 47 é çªå°ã®ãã§ã㯠45 # CPU例外ハンドラの先頭番地のチェック 48 46 if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0 49 47 error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned") -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_config.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 9 9 * Nagoya Municipal Industrial Research Institute, 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: prc_config.c 1304 2008-08-27 07:28:36Z ertl-honda $ … … 57 42 58 43 /* 59 * ããã»ããµä¾åã¢ã¸ã¥ã¼ã«ï¼ARM64ç¨ï¼44 * プロセッサ依存モジュール(ARM64用) 60 45 */ 61 46 … … 63 48 #include <t_syslog.h> 64 49 65 /* å²è¾¼ã¿ãã¹ãæ°ã®ç®¡ç*/50 /* 割込みネスト数の管理 */ 66 51 uint8_t intnest; 67 52 68 53 /* 69 * ããã»ããµä¾åã®åæå54 * プロセッサ依存の初期化 70 55 */ 71 56 void 72 57 prc_initialize(void) 73 58 { 74 /* å²è¾¼ã¿ãã¹ãæ°ã®åæå*/59 /* 割込みネスト数の初期化 */ 75 60 intnest = 0u; 76 61 77 62 /* 78 * GIC ã®è¨å®63 * GICの設定 79 64 */ 80 65 gicd_initialize(); … … 83 68 84 69 /* 85 * ããã»ããµä¾åã®çµäºå¦ç70 * プロセッサ依存の終了処理 86 71 */ 87 72 void … … 93 78 94 79 /* 95 * å²è¾¼ã¿è¦æ±ã©ã¤ã³å±æ§ã®è¨å®80 * 割込み要求ライン属性の設定 96 81 */ 97 82 void … … 102 87 103 88 /* 104 * å²è¾¼ã¿ãç¦æ¢89 * 割込みを禁止 105 90 * 106 * å²è¾¼ã¿ãåãä»ããã¾ã¾ï¼ã¬ãã«ããªã¬ï¼ã¨ãã¸ããªã¬ã®è¨å®ãï¼å² 107 * è¾¼ã¿åªå 108 度ã®è¨å®ãè¡ãã®ã¯å±éºãªããï¼å²è¾¼ã¿å±æ§ã«ãããããï¼ 109 * 䏿¦ãã¹ã¯ããï¼ 91 * 割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割 92 * 込み優先度の設定を行うのは危険なため,割込み属性にかかわらず, 93 * 一旦マスクする. 110 94 */ 111 95 x_disable_int(intno); 112 96 113 97 /* 114 * å²è¾¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³98 * 割込みをコンフィギュレーション 115 99 */ 116 100 … … 124 108 125 109 /* 126 * å²è¾¼ã¿åªå 127 度ã¨ã¿ã¼ã²ããããã»ããµãè¨å® 110 * 割込み優先度とターゲットプロセッサを設定 128 111 */ 129 112 gicd_set_priority(intno, INT_IPM(intpri)); … … 131 114 132 115 /* 133 * å²è¾¼ã¿ã許å¯116 * 割込みを許可 134 117 */ 135 118 if ((intatr & TA_ENAINT) != 0U) { … … 140 123 #ifndef OMIT_DEFAULT_EXC_HANDLER 141 124 /* 142 * ç»é²ããã¦ããªãä¾å¤ãçºçããã¨å¼ã³åºããã125 * 登録されていない例外が発生すると呼び出される 143 126 */ 144 127 void … … 147 130 uint64_t gicc_pmr = *(((uint64_t*)p_excinf) + 0); 148 131 uint64_t excno = *(((uint64_t*)p_excinf) + 1); 149 // ã¹ã¿ãã¯ãã¤ã³ã¿ã®èª¿æ´é132 // スタックポインタの調整量 150 133 uint64_t adj = *(((uint64_t*)p_excinf) + 3) >> 3; 151 134 uint64_t esr, pc, spsr, sp; … … 169 152 #ifndef OMIT_DEFAULT_INT_HANDLER 170 153 /* 171 * æªç»é²ã®å²è¾¼ã¿ãçºçããå ´åã«å¼ã³åºããã154 * 未登録の割込みが発生した場合に呼び出される 172 155 */ 173 156 void … … 181 164 182 165 /* 183 * å²è¾¼ã¿ãã³ãã©ã®å¼ã³åºã166 * 割込みハンドラの呼び出し 184 167 */ 185 168 void … … 190 173 i_unlock_cpu(); 191 174 192 // ãã³ãã©ã®å¼ã³åºã175 // ハンドラの呼び出し 193 176 inh_table[intno](); 194 177 … … 199 182 200 183 /* 201 * CPU ä¾å¤ãã³ãã©ã®å¼ã³åºã184 * CPU例外ハンドラの呼び出し 202 185 */ 203 186 void … … 206 189 intnest++; 207 190 208 // CPU ä¾å¤çºçæã¯CPUããã¯ãã©ã°ãæä½ããªã209 210 // ãã³ãã©ã®å¼ã³åºã191 // CPU例外発生時はCPUロックフラグを操作しない 192 193 // ハンドラの呼び出し 211 194 exc_table[excno](p_excinf); 212 195 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_config.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: prc_config.h 1304 2008-08-27 07:28:36Z ertl-honda $ … … 56 41 57 42 /* 58 * ããã»ããµä¾åã¢ã¸ã¥ã¼ã«ï¼ARM64ç¨ï¼59 * 60 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼target_config.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯61 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã62 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼43 * プロセッサ依存モジュール(ARM64用) 44 * 45 * このインクルードファイルは,target_config.h(または,そこからインク 46 * ルードされるファイル)のみからインクルードされる.他のファイルから 47 * 直接インクルードしてはならない. 63 48 */ 64 49 … … 71 56 72 57 /* 73 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯åæå¤58 * 非タスクコンテキスト用のスタック初期値 74 59 */ 75 60 #define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz))) 76 61 77 62 /* 78 * å²è¾¼ã¿ãã¹ãæ°63 * 割込みネスト数 79 64 */ 80 65 extern uint8_t intnest; 81 66 82 67 /* 83 * ã³ã³ããã¹ãã®åç 84 § 68 * コンテキストの参照 85 69 * 86 70 */ … … 103 87 104 88 /* 105 * TOPPERSæ¨æºå²è¾¼ã¿å¦çã¢ãã«ã®å®ç¾ 106 * 107 * å 108 ¨å²è¾¼ã¿ããã¯ãã©ã°ã¨ã㦠PSTATE.F ããã³ PSTATE.I ãç¨ãã 109 * CPUããã¯ãã©ã°ã¨ã㦠PSTATE.Iããç¨ãã 110 * å²è¾¼ã¿åªå 111 度ãã¹ã¯ã¨ã㦠GICC_PMR ã¬ã¸ã¹ã¿ãç¨ããï¼ 112 */ 113 114 /* 115 * TIPM_ENAALLï¼å²è¾¼ã¿åªå 116 度ãã¹ã¯å 117 ¨è§£é¤ï¼ã®å 118 é¨è¡¨ç¾ 89 * TOPPERS標準割込み処理モデルの実現 90 * 91 * 全割込みロックフラグとして PSTATE.F および PSTATE.I を用いる 92 * CPUロックフラグとして PSTATE.I を用いる 93 * 割込み優先度マスクとして GICC_PMR レジスタを用いる. 94 */ 95 96 /* 97 * TIPM_ENAALL(割込み優先度マスク全解除)の内部表現 119 98 */ 120 99 #define IIPM_ENAALL (0) … … 124 103 125 104 /* 126 * CPUããã¯ç¶æ 127 ã¸ã®ç§»è¡ 105 * CPUロック状態への移行 128 106 */ 129 107 Inline void … … 137 115 138 116 /* 139 * CPUããã¯ç¶æ 140 ã®è§£é¤ 117 * CPUロック状態の解除 141 118 */ 142 119 Inline void … … 150 127 151 128 /* 152 * CPUããã¯ç¶æ 153 ã®åç 154 § 129 * CPUロック状態の参照 155 130 */ 156 131 Inline bool_t … … 174 149 175 150 /* 176 * ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 177 度ãã¹ã¯ã®è¨å® 178 * 179 * CPUããã¯ãã©ã°ãã¯ãªã¢ããã¦ããæã¯ï¼ãã¼ãã¦ã§ã¢ã®å²è¾¼ã¿åªå 180 度ã 181 * ã¹ã¯ãè¨å®ããï¼CPUããã¯ãã©ã°ãã»ããããã¦ããæã¯ï¼saved_iipm 182 * ãè¨å®ãï¼ããã«ï¼ãã¼ãã¦ã§ã¢ã®å²è¾¼ã¿åªå 183 度ãã¹ã¯ãï¼è¨å®ããã㨠184 * ããï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 185 度ãã¹ã¯ã¨TIPM_LOCKã®é«ãæ¹ã«è¨å®ããï¼ 151 * (モデル上の)割込み優先度マスクの設定 152 * 153 * CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ 154 * スクを設定する.CPUロックフラグがセットされている時は,saved_iipm 155 * を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと 156 * した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する. 186 157 */ 187 158 Inline void … … 195 166 196 167 /* 197 * ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 198 度ãã¹ã¯ã®åç 199 § 200 * 201 * CPUããã¯ãã©ã°ãã¯ãªã¢ããã¦ããæã¯ãã¼ãã¦ã§ã¢ã®å²è¾¼ã¿åªå 202 度ã 203 * ã¹ã¯ãï¼ã»ããããã¦ããæã¯saved_iipmãåç 204 §ããï¼ 168 * (モデル上の)割込み優先度マスクの参照 169 * 170 * CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ 171 * スクを,セットされている時はsaved_iipmを参照する. 205 172 */ 206 173 Inline PRI … … 214 181 215 182 /* 216 * ãã£ã¹ãããã£ã®åä½éå§ï¼prc_support.Sï¼ 217 * 218 * start_dispatchã¯ï¼ã«ã¼ãã«èµ·åæã«å¼ã³åºãã¹ããã®ã§ï¼ãã¹ã¦ã®å²è¾¼ 219 * ã¿ãç¦æ¢ããç¶æ 220 ï¼å²è¾¼ã¿ããã¯ç¶æ 221 ã¨åçã®ç¶æ 222 ï¼ã§å¼ã³åºããªããã° 223 * ãªããªãï¼ 183 * ディスパッチャの動作開始(prc_support.S) 184 * 185 * start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込 186 * みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ 187 * ならない. 224 188 */ 225 189 extern void start_dispatch(void) NoReturn; … … 227 191 228 192 /* 229 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºãï¼prc_support.Sï¼230 * 231 * call_exit_kernel ã¯ï¼ã«ã¼ãã«ã®çµäºæã«å¼ã³åºãã¹ããã®ã§ï¼éã¿ã¹ã¯232 * ã³ã³ããã¹ãã«åãæãã¦ï¼ã«ã¼ãã«ã®çµäºå¦çï¼exit_kernelï¼ãå¼ã³åº233 * ãï¼193 * カーネルの終了処理の呼出し(prc_support.S) 194 * 195 * call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク 196 * コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出 197 * す. 234 198 */ 235 199 extern void call_exit_kernel(void) NoReturn; 236 200 237 201 /* 238 * ã¢ã¤ãã«ã«ã¼ãã®å®è£ 239 240 * 241 * åã«CPUããã¯ç¶æ 242 ã¨CPUããã¯è§£é¤ç¶æ 243 ãå¼ã³åºãå®è£ 244 ã¨ããï¼ 245 * ã¹ãªã¼ãã¢ã¼ãã«å 246 ¥ããå ´åã¯æ¬å¦çãwfiå½ä»¤ãç¨ãã¦æ¸ãæããã°è¯ãï¼ 202 * アイドルループの実装 203 * 204 * 単にCPUロック状態とCPUロック解除状態を呼び出す実装とする. 205 * スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い. 247 206 */ 248 207 Inline void … … 250 209 { 251 210 x_unlock_cpu(); 252 /* CPU ã¢ã³ãã㯠=> CPUããã¯*/211 /* CPUアンロック => CPUロック */ 253 212 x_lock_cpu(); 254 213 } 255 214 256 215 /* 257 * å²è¾¼ã¿çªå·ã»å²è¾¼ã¿ãã³ãã©çªå·258 * 259 * å²è¾¼ã¿ãã³ãã©çªå·(inhno)ã¨å²è¾¼ã¿çªå·(intno)ã¯ï¼260 * å²ãè¾¼ã¿çºçæã«GICC_IAR ã«è¨å®ãããä¾å¤çªå·ã¨ããï¼261 */ 262 263 /* 264 * å²è¾¼ã¿çªå·ã®ç¯å²ã®å¤å®216 * 割込み番号・割込みハンドラ番号 217 * 218 * 割込みハンドラ番号(inhno)と割込み番号(intno)は, 219 * 割り込み発生時にGICC_IAR に設定される例外番号とする. 220 */ 221 222 /* 223 * 割込み番号の範囲の判定 265 224 */ 266 225 #define VALID_INTNO(intno) ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO)) … … 269 228 270 229 /* 271 * å²è¾¼ã¿ãã³ãã©ã®è¨å®230 * 割込みハンドラの設定 272 231 */ 273 232 Inline void … … 277 236 278 237 /* 279 * å²è¾¼ã¿ãã³ãã©ã®åºå 280 ¥å£å¦çã®çæãã¯ã 238 * 割込みハンドラの出入口処理の生成マクロ 281 239 * 282 240 */ … … 285 243 286 244 /* 287 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°288 */ 289 290 /* 291 * å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«ï¼kernel_cfg.cï¼292 * 293 * å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããããå¤å¥ããããã®ãã¼ãã«ï¼kernel_cfg.cï¼294 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ãã¦å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããã°1ï¼è¨å®ããã¦ã295 * ãªããã°0ãä¿æãããã¼ãã«ï¼245 * 割込み要求禁止フラグ 246 */ 247 248 /* 249 * 割込み要求ライン設定テーブル(kernel_cfg.c) 250 * 251 * 割込み属性が設定されているかを判別するためのテーブル(kernel_cfg.c) 252 * 割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい 253 * なければ0を保持するテーブル. 296 254 */ 297 255 extern const uint8_t intcfg_table[]; … … 299 257 300 258 /* 301 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ãã302 * 303 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ã304 * ããï¼å²è¾¼ã¿ãç¦æ¢ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤305 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼259 * 割込み要求禁止フラグのセット 260 * 261 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのセッ 262 * トし,割込みを禁止する.割込み属性が設定されていない割込み要求ライ 263 * ンが指定された場合には,falseを返す. 306 264 */ 307 265 Inline bool_t … … 320 278 321 279 /* 322 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãªã¢323 * 324 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãª325 * ã¢ãï¼å²è¾¼ã¿ã許å¯ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤326 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼280 * 割込み要求禁止フラグのクリア 281 * 282 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのクリ 283 * アし,割込みを許可する.割込み属性が設定されていない割込み要求ライ 284 * ンが指定された場合には,falseを返す. 327 285 */ 328 286 Inline bool_t … … 341 299 342 300 /* 343 * å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢301 * 割込み要求のクリア 344 302 */ 345 303 Inline void … … 350 308 351 309 /* 352 * å²è¾¼ã¿è¦æ±ã®ãã§ãã¯310 * 割込み要求のチェック 353 311 */ 354 312 Inline bool_t … … 360 318 361 319 /* 362 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®å±æ§ã®è¨å®320 * 割込み要求ラインの属性の設定 363 321 */ 364 322 extern void x_config_int(INTNO intno, ATR intatr, PRI intpri); 365 323 366 324 /* 367 * å²è¾¼ã¿ãã³ãã©å 368 ¥å£ã§å¿ 369 è¦ãªIRCæä½ 325 * 割込みハンドラ入口で必要なIRC操作 370 326 */ 371 327 Inline void … … 375 331 376 332 /* 377 * å²è¾¼ã¿ãã³ãã©ã®åºå£ã§å¿ 378 è¦ãªIRCæä½ 333 * 割込みハンドラの出口で必要なIRC操作 379 334 */ 380 335 Inline void … … 384 339 385 340 /* 386 * CPU ä¾å¤ãã³ãã©é¢é£387 */ 388 389 /* 390 * CPU ä¾å¤ãã³ãã©çªå·341 * CPU例外ハンドラ関連 342 */ 343 344 /* 345 * CPU例外ハンドラ番号 391 346 */ 392 347 #define VALID_EXCNO_DEFEXC(excno) (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO) 393 348 394 349 /* 395 * CPU ä¾å¤ãã³ãã©ã®è¨å®350 * CPU例外ハンドラの設定 396 351 */ 397 352 Inline void … … 401 356 402 357 /* 403 * CPUä¾å¤ãã³ãã©ã®å 404 ¥å£å¦çã®çæãã¯ã 358 * CPU例外ハンドラの入口処理の生成マクロ 405 359 */ 406 360 #define EXC_ENTRY(excno, exchdr) exchdr … … 408 362 409 363 /* 410 * ããã»ããµä¾åã®åæå364 * プロセッサ依存の初期化 411 365 */ 412 366 extern void prc_initialize(void); 413 367 414 368 /* 415 * ããã»ããµä¾åã®çµäºæå¦ç369 * プロセッサ依存の終了時処理 416 370 */ 417 371 extern void prc_terminate(void) NoReturn; 418 372 419 373 /* 420 * ç»é²ããã¦ããªãä¾å¤ãçºçããã¨å¼ã³åºããã374 * 登録されていない例外が発生すると呼び出される 421 375 */ 422 376 extern void default_exc_handler(void *p_excinf); 423 377 424 378 /* 425 * æªç»é²ã®å²è¾¼ã¿ãçºçããå ´åã«å¼ã³åºããã379 * 未登録の割込みが発生した場合に呼び出される 426 380 */ 427 381 extern void default_int_handler(void); 428 382 429 383 /* 430 * å²è¾¼ã¿/ä¾å¤ãã³ãã©ãã¼ãã«(kernel_cfg.c)384 * 割込み/例外ハンドラテーブル(kernel_cfg.c) 431 385 */ 432 386 extern const INTHDR inh_table[]; … … 434 388 435 389 /* 436 * å²è¾¼ã¿ãã³ãã©ã®å¼ã³åºã390 * 割込みハンドラの呼び出し 437 391 */ 438 392 extern void call_int_handler(uint32_t intno); 439 393 440 394 /* 441 * CPU ä¾å¤ãã³ãã©ã®å¼ã³åºã395 * CPU例外ハンドラの呼び出し 442 396 */ 443 397 extern void call_exc_handler(void *p_excinf, uint32_t excno); -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_design.txt
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 ===================================================================== 2 ARM64 ããã»ããµä¾åé¨è¨è¨ã¡ã¢2 ARM64プロセッサ依存部設計メモ 3 3 Last Modified: 5 Jun 2018 4 4 ===================================================================== 5 5 6 âãã®ããã¥ã¡ã³ãã®ä½ç½®ã¥ã 7 8 ãã®ããã¥ã¡ã³ãã¯ï¼TOPPERS/SSPã«ã¼ãã«ãARMv8-Aããã»ããµã«ç§»æ¤ããé 9 ã®è¨è¨ã¡ã¢ã§ããï¼ 10 11 12 âARMv8-Aã®ä»æ§ã¾ã¨ã 13 14 ARMv8-Aã®ä»æ§ã®ãã¡ï¼ã«ã¼ãã«ã®è¨è¨ã«é¢ä¿ããäºé 15 ã«ã¤ãã¦ã¾ã¨ããï¼ 16 17 âã¬ã¸ã¹ã¿ 18 19 æ±ç¨ã¬ã¸ã¹ã¿ã¯r0ãr30 (ç¹ã«64ãããã¬ã¸ã¹ã¿ã¯X0..X30ã§è¡¨ç¾)ã®31種é¡ãããªãï¼ 20 ï¼åèï¼ãProcedure Call Standard for the ARM 64-bit Architectureã 21 22 r0...r7 Parameter/result registers(弿°ããã³è¿å¤ã®åãæ¸¡ãç¨) 23 r8 Indirect result location register (大ããªãã¼ã¿æ§é ã 24 è¿å¤ã¨ãã¦è¿ãå ´åãªã©ï¼å¼ã³åºãå´ãçµæãåãåºãããã« 25 鿥ã¢ãã¬ãã·ã³ã°ãå¤ç¨ããéï¼ãã®ãã¼ã¹ã¢ãã¬ã¹ãåãæ¸¡ã 26 ããããã«ä½¿ããã) 27 r9..r15 Caller-saved Temporary registers(å¼ã³åºãå´ã§ä¿åãã¹ãã¬ã¸ã¹ã¿) 6 ○このドキュメントの位置づけ 7 8 このドキュメントは,TOPPERS/SSPカーネルをARMv8-Aプロセッサに移植する際 9 の設計メモである. 10 11 12 ○ARMv8-Aの仕様まとめ 13 14 ARMv8-Aの仕様のうち,カーネルの設計に関係する事項についてまとめる. 15 16 ●レジスタ 17 18 汎用レジスタはr0〜r30 (特に64ビットレジスタはX0..X30で表現)の31種類からなる. 19 (参考)「Procedure Call Standard for the ARM 64-bit Architecture」 20 21 r0...r7 Parameter/result registers(引数および返値の受け渡し用) 22 r8 Indirect result location register (大きなデータ構造を 23 返値として返す場合など,呼び出し側が結果を取り出すために 24 間接アドレッシングを多用する際,そのベースアドレスを受け渡し 25 するために使われる) 26 r9..r15 Caller-saved Temporary registers(呼び出し側で保存すべきレジスタ) 28 27 r16(IP0) The first intra-procedure-call scratch register 29 ãªã³ã«ã«ãã£ã¦ veneer(注1) ããã³ PLT(Procedure Linkage Table,注2) ã³ã¼ã 30 ã®å¼ã³åºãã§ä½¿ãããï¼ãã以å¤ã®æã¯ãã³ãã©ãªã¬ã¸ã¹ã¿ã¨ãã¦ä½¿ããããã¨ãããï¼ 31 (注1)ãªã³ã«ã«ãã£ã¦æ¿å 32 ¥ãããå°ããªã³ã¼ãçã§ï¼ 33 åå²å½ä»¤ã®ã¿ã¼ã²ãããç¯å²å¤ã®å ´åãªã©ã«ä½¿ããã 34 (注2)å 35 ±æã©ã¤ãã©ãªã®å¼ã³åºãã§ã·ã³ãã«è§£æ±ºãè¡ãããã«ä½¿ç¨ããã 36 颿°ãã¼ãã« 37 r17(IP1) The second intra-procedure-call temporary register(r16ã¨å½¹å²ã¯åã) 38 r18 The Platform Register(ãã©ãããã©ã¼ã ABIã§ä½¿ç¨ãããã¬ã¸ã¹ã¿ï¼ 39 ABIã§ä½¿ãããªãå ´åã¯ãã³ãã©ãªã¬ã¸ã¹ã¿ã¨ãã¦ä½¿ããã) 40 r19..r28 Callee-saved registers(å¼ã³åºãããå´ã§ä¿åãã¦ä½¿ãã¬ã¸ã¹ã¿) 41 r29(FP) The Frame Pointer(ãã¬ã¼ã ãã¤ã³ã¿) 42 r30(LR) The Link Register(ãªã³ã¯ã¬ã¸ã¹ã¿) 43 44 SSPã«ã¼ãã«ã®ã¢ã»ã³ãã©ã«ããå®è£ 45 ã§ã¯r8, r16...r18ã¯ä½¿ç¨ãã¦ããªãï¼ 46 47 48 âã³ã¼ãªã³ã°ã³ã³ãã³ã·ã§ã³ 49 50 r0...R7 ã弿°ããã³è¿å¤ã«ä½¿ãããï¼ 51 ARMã«ããè¦å®ããã¦ããããï¼ã³ã³ãã¤ã©ã«ä¾åãããã®ã«ã¼ã«ã¨ãªã 52 53 âPSTATE 54 55 AArch64ã§ã¯ããã»ããµã®ç¶æ 56 ã表ããã©ã°ã®éã¾ããã¾ã¨ãã¦PSTATEã¨å¼ã³ï¼ 57 ããããã®ãã©ã°ã¸å¥ã 58 ã«ã¢ã¯ã»ã¹ããããã®ç¹å¥ãªã¬ã¸ã¹ã¿åãå®ç¾©ããã¦ããï¼ 59 60 PSTATEã®è©³ç´°ã¯ï¼ARM Architecture Reference Manual 61 ARMv8, for ARMv8-A architecture profile ã® D1.7 ãªã©ãåç 62 §ã®ãã¨ï¼ 63 64 ã»spsel 65 EL1ããä¸ã®ä¾å¤ã¬ãã«ã§ã¯ï¼spsel ã¨ããç¹å¥ãªåç§°ã®ã¬ã¸ã¹ã¿ã«ã¢ã¯ã»ã¹ãï¼ 66 PSTATE.SPãã©ã°ã®å¤ãã»ãããã¦ä½¿ç¨ã¹ã¿ãã¯ã®åãæ¿ããè¡ãï¼ 67 68 ã»daif 69 daif ã¨ããåç§°ã®ã¬ã¸ã¹ã¿ã使ç¨ãã¦PSTATEã®D,A,I,Fããããæä½ãï¼ 70 å種ä¾å¤ããã³å²è¾¼ã¿ã®ç¦æ¢/許å¯ãå¶å¾¡ãã 71 72 73 SSPã«ã¼ãã«ã®å®è£ 74 ã§ã¯ï¼ã¹ã¿ãã¯ã¯SP_EL1ã®ã¿ã使ç¨ããï¼ 75 ã¾ãï¼CPUããã¯ç¶æ 76 ããã³å²è¾¼ã¿ããã¯ç¶æ 77 ã®å®è£ 78 ã«PSTATEã®Iããã³Fãã©ã°ã 79 å©ç¨ãã¦ããï¼ 80 81 82 âå²è¾¼ã¿ãã¯ã¿ 83 84 ãã¯ã¿ãã¼ãã«ã®ã¢ãã¬ã¹ã¯ãªã»ããæã«ï¼ã·ã¹ãã ã¬ã¸ã¹ã¿ã®ä¸ã¤Vector Base 85 Address Register(VBAR, ã·ã¹ãã ã¬ã¸ã¹ã¿)ã«ã¢ãã¬ã¹ãã»ãããããã¨ã§ï¼ 86 2048ãã¤ãå¢çã®ä»»æã®ã¢ãã¬ã¹ã«é 87 ç½®å¯è½ã§ããï¼ 88 89 SSPã«ã¼ãã«ã®å®è£ 90 ã§ã¯ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§è¨å®ãã¦ããï¼ 91 92 93 âå²è¾¼ã¿åªå 94 度 95 96 è¨å®å¤ã®å°ããæ¹ãé«åªå 97 度ã¨ãªãï¼ 98 99 åªå 100 åº¦ã¯æå¤§8bitã§ããï¼SoCæ¯ã«å®è£ 101 ããã¦ãããããå¹ 102 ãç°ãªãï¼å®è£ 103 ã 104 ãããããã8bit以ä¸ã®å ´åã¯ï¼LSBããç¡å¹ã«ãªãï¼ä¾ãã°ï¼å®è£ 105 ããã¦ã 106 ããããå¹ 107 ã7bitã®å ´åã¯ï¼ããã0ãç¡å¹ã¨ãªãï¼ 108 109 åªå 110 度ã®ããããã£ã¼ã«ãã®LSBããæ°ãããããµãåªå 111 度ã¨å¼ã¶ãã£ã¼ã«ã 112 ã«è¨å®ãããã¨ãå¯è½ã§ããï¼æ®ãã®ä¸ä½ããããããªã¨ã³ãã·ã§ã³åªå 113 度㨠114 å¼ã¶ï¼ããªã¨ã³ãã·ã§ã³åªå 115 度ãåãã§ï¼ãµãåªå 116 度ãç°ãªãåªå 117 度ã®ã°ã«ã¼ 118 ãã¯ï¼ãäºããããªã¨ã³ãããããã¨ãã§ããªãï¼ 119 120 ä¾ã¨ãã¦ï¼QEMU Virtãã¼ãåãSSPã®å®è£ 121 ã§ã¯ Cortex-A53ããã»ããµã 122 ã¿ã¼ã²ããã¨ãã¦ããï¼åªå 123 度ã¯16段é(4bit)ã§ããã0ãã3ãç¡å¹ã§ããï¼ 124 125 âCPUã¢ã¼ã 126 127 ããã»ããµã¯ï¼EL0ããEL3ã¾ã§ã®ä¾å¤ã¬ãã«ã®ããããã§åä½ããï¼ 128 ã¾ãããããã®ã¬ãã«ã§64ãããã¢ã¼ã(AArch64) ã¾ãã¯32ãããã¢ã¼ã(AArch32)ã 129 鏿ãããã¨ãã§ããï¼ãã ãï¼ããä¾å¤ã¬ãã«ã32ãããã¢ã¼ãã§åä½ããå ´å㯠130 ããããä½ãä¾å¤ã¬ãã«ã§ã¯64ãããã¢ã¼ãã鏿ãããã¨ãã§ããªãï¼ 131 132 ã¾ãï¼ã»ãã¥ãªãã£æ¡å¼µæ©è½ãæè¼ããããã»ããµã§ã¯ã»ãã¥ã¢ã¢ã¼ãããã³ 133 éã»ãã¥ã¢ã¢ã¼ãã鏿ãããã¨ãã§ããï¼ 134 135 SSPã®å®è£ 136 ã§ã¯ï¼64ãããã¢ã¼ã(AArch64)ï¼éã»ãã¥ã¢ï¼ä¾å¤ã¬ãã«1(EL1) ã§åä½ããï¼ 137 138 139 âãªã»ããæã®ç¶æ 140 141 142 ãªã»ããæã¯ããã»ããµãããããµãã¼ãããæå¤§ã®ä¾å¤ã¬ãã«ããã³ãã®ã¬ãã«ã® 143 ã¹ã¿ãã¯(SP_ELx)ãæå¹ã¨ãªã£ã¦ããï¼ 144 145 ä¾ã¨ãã¦QEMUåãVirtãã¼ã(Cortex-A53) ã§ã¯ï¼æ¢å®ã§EL1ãæå¤§ä¾å¤ã¬ãã«ã®ãã 146 ãªã»ããç´å¾ã¯SP_EL1ãæå¹ã¨ãªã£ã¦ããï¼ 147 148 âå²è¾¼ã¿/ä¾å¤ã®åä» 149 150 å²è¾¼ã¿ãåãä»ããã¨åãä»ããå²è¾¼ã¿ã®çªå·ãï¼GICC_IARã«ã»ãããããï¼ 151 å²è¾¼ã¿çªå·ã¯ãã®ã¬ã¸ã¹ã¿ã«ã»ãããããå¤ã使ç¨ããï¼ 152 153 ä¾å¤çªå·ã¯ï¼ä¾å¤çºçæã®ããã»ããµç¶æ 154 ã«å¿ãã¦æ±ºå®ãããï¼ãã¯ã¿ãã¼ãã«ä¸ã® 155 ã¸ã£ã³ãå 156 ãªãã»ããæ¯ã«ç°ãªãçªå·ãå²ãæ¯ããã¨ã«ãã¦ããï¼ 157 158 ä¾å¤çºçæã®ç¶æ 159 ä¾å¤ã®ç¨®é¡ ä¾å¤çªå· ãä¾å¤ãã¯ã¿å 160 é ããã®ãªãã»ãã 28 リンカによって veneer(注1) および PLT(Procedure Linkage Table,注2) コード 29 の呼び出しで使われる.それ以外の時はテンポラリレジスタとして使われることもある. 30 (注1)リンカによって挿入される小さなコード片で, 31 分岐命令のターゲットが範囲外の場合などに使われる 32 (注2)共有ライブラリの呼び出しでシンボル解決を行うために使用される 33 関数テーブル 34 r17(IP1) The second intra-procedure-call temporary register(r16と役割は同じ) 35 r18 The Platform Register(プラットフォームABIで使用されるレジスタ. 36 ABIで使われない場合はテンポラリレジスタとして使われる) 37 r19..r28 Callee-saved registers(呼び出された側で保存して使うレジスタ) 38 r29(FP) The Frame Pointer(フレームポインタ) 39 r30(LR) The Link Register(リンクレジスタ) 40 41 SSPカーネルのアセンブラによる実装ではr8, r16...r18は使用していない. 42 43 44 ●コーリングコンベンション 45 46 r0...R7 が引数および返値に使われる. 47 ARMにより規定されているため,コンパイラに依存せずこのルールとなる 48 49 ●PSTATE 50 51 AArch64ではプロセッサの状態を表すフラグの集まりをまとめてPSTATEと呼び, 52 それぞれのフラグへ別々にアクセスするための特別なレジスタ名が定義されている. 53 54 PSTATEの詳細は,ARM Architecture Reference Manual 55 ARMv8, for ARMv8-A architecture profile の D1.7 などを参照のこと. 56 57 ・spsel 58 EL1より上の例外レベルでは,spsel という特別な名称のレジスタにアクセスし, 59 PSTATE.SPフラグの値をセットして使用スタックの切り替えを行う. 60 61 ・daif 62 daif という名称のレジスタを使用してPSTATEのD,A,I,Fビットを操作し, 63 各種例外および割込みの禁止/許可を制御する 64 65 66 SSPカーネルの実装では,スタックはSP_EL1のみを使用する. 67 また,CPUロック状態および割込みロック状態の実装にPSTATEのIおよびFフラグを 68 利用している. 69 70 71 ●割込みベクタ 72 73 ベクタテーブルのアドレスはリセット時に,システムレジスタの一つVector Base 74 Address Register(VBAR, システムレジスタ)にアドレスをセットすることで, 75 2048バイト境界の任意のアドレスに配置可能である. 76 77 SSPカーネルの実装ではスタートアップルーチンで設定している. 78 79 80 ●割込み優先度 81 82 設定値の小さい方が高優先度となる. 83 84 優先度は最大8bitであり,SoC毎に実装されているビット幅が異なる.実装さ 85 れるビットが8bit以下の場合は,LSBから無効になる.例えば,実装されてい 86 るビット幅が7bitの場合は,ビット0が無効となる. 87 88 優先度のビットフィールドのLSBから数ビットをサブ優先度と呼ぶフィールド 89 に設定することが可能である.残りの上位ビットをプリエンプション優先度と 90 呼ぶ.プリエンプション優先度が同じで,サブ優先度が異なる優先度のグルー 91 プは,お互いをプリエンプトすることができない. 92 93 例として,QEMU Virtボード向けSSPの実装では Cortex-A53プロセッサを 94 ターゲットとしており,優先度は16段階(4bit)でビット0から3が無効である. 95 96 ●CPUモード 97 98 プロセッサは,EL0からEL3までの例外レベルのいずれかで動作する. 99 またそれぞれのレベルで64ビットモード(AArch64) または32ビットモード(AArch32)を 100 選択することができる.ただし,ある例外レベルが32ビットモードで動作する場合は 101 それより低い例外レベルでは64ビットモードを選択することができない. 102 103 また,セキュリティ拡張機能を搭載するプロセッサではセキュアモードおよび 104 非セキュアモードを選択することができる. 105 106 SSPの実装では,64ビットモード(AArch64),非セキュア,例外レベル1(EL1) で動作する. 107 108 109 ●リセット時の状態 110 111 リセット時はプロセッサチップがサポートする最大の例外レベルおよびそのレベルの 112 スタック(SP_ELx)が有効となっている. 113 114 例としてQEMU向けVirtボード(Cortex-A53) では,既定でEL1が最大例外レベルのため 115 リセット直後はSP_EL1が有効となっている. 116 117 ●割込み/例外の受付 118 119 割込みを受け付けると受け付けた割込みの番号が,GICC_IARにセットされる. 120 割込み番号はこのレジスタにセットされる値を使用する. 121 122 例外番号は,例外発生時のプロセッサ状態に応じて決定される,ベクタテーブル中の 123 ジャンプ先オフセット毎に異なる番号を割り振ることにしている. 124 125 例外発生時の状態 例外の種類 例外番号 例外ベクタ先頭からのオフセット 161 126 AArch64, EL1t(EL1, SP_EL0) Synchronous 0 0x0000 162 127 AArch64, EL1t(EL1, SP_EL0) SError 1 0x0180 … … 168 133 AArch32, EL0 (EL0, SP_EL0) SError 7 0x0780 169 134 170 å²è¾¼ã¿ãåãä»ããéï¼åãä»ããå²è¾¼ã¿ã«è¨å®ãããåªå 171 度ããä½ãå²è¾¼ã¿ã 172 ç¦æ¢ããããï¼GICC_RPRããåå¾ããå²è¾¼ã¿è¦å ã®å²è¾¼ã¿åªå 173 度ã GICC_PMR㸠174 ã»ãããã¦ããï¼ããã¦ãã³ãã©çµäºå¾ã«å²è¾¼ã¿çºçåã®å²ãè¾¼ã¿åªå 175 åº¦ã«æ»ãï¼ 176 177 â ã¹ã¿ãã¯ãã¤ã³ã¿ï¼SP_EL0ã¨SP_ELxï¼ 178 179 ã¹ã¿ãã¯ãã¤ã³ã¿ã¯ï¼ä¾å¤ã¬ãã«0ã®ã¹ã¿ãã¯ãã¤ã³ã¿(SP_EL0)ããã³å®è¡ä¸ã® 180 ä¾å¤ã¬ãã«ã®ã¹ã¿ãã¯ãã¤ã³ã¿(SP_ELx)ã鏿å¯è½ã§ããï¼ 181 ã¹ã¿ãã¯ã®é¸æã¯spselã¬ã¸ã¹ã¿ã¸1ãè¨å®ããã¨SP_ELxãï¼0ãè¨å®ãã㨠182 SP_EL0 ã鏿ããï¼ 183 184 SSPã®å®è£ 185 ã§ã¯ï¼EL1 ã§ SP_EL1 ã®ã¿ã使ç¨ãã¦åä½ããï¼ 186 187 âä¾å¤ã¬ãã«ã®é·ç§» 188 189 ä¾å¤ã¬ãã«(EL)ã®é·ç§»ã¯å²è¾¼ã¿/ä¾å¤ã®åä»ããã³ä¾å¤ãªã¿ã¼ã³å½ä»¤(eret)ã«ããè¡ãï¼ 190 191 å²è¾¼ã¿ããã³ä¾å¤ãåãä»ãããã¨ã§çºçåã¨åãã¾ãã¯ããé«ãä¾å¤ã¬ãã«ã¸é·ç§»ããï¼ 192 䏿¹ï¼åãã¾ãã¯ããä½ãä¾å¤ã¬ãã«ã¸ã®é·ç§»ã¯ä¾å¤ãªã¿ã¼ã³å½ä»¤(eret)ã«ããè¡ãï¼ 193 194 å仿ã®é·ç§»å 195 ã¨ãªãä¾å¤ã¬ãã«ã®æå®ã¯ã·ã¹ãã ã¬ã¸ã¹ã¿ã«ããè¨å®ãããã¨ã§è¡ãï¼ 196 å²è¾¼ã¿/ä¾å¤ãªã¿ã¼ã³æã®é·ç§»å 197 ã¨ãªãä¾å¤ã¬ãã«ã¯ï¼SPSR_ELxã®ããã2ããã³3ã§ 198 æå®ããï¼å²è¾¼ã¿/ä¾å¤å仿ï¼PSTATEã®ç¶æ 199 ãSPSR_ELxã«ï¼ãªã¿ã¼ã³ã¢ãã¬ã¹ãELR_ELxã«ï¼ 200 ããããä¿åããeretå½ä»¤ã®å®è¡ã«ãããã®æ ¼ç´å¤ã復帰ãããããï¼eretå®è¡åã« 201 ãããããSPSR_ELxã«ã»ãããã¦ãããã¨ã§æå®ããä¾å¤ã¬ãã«ã¸é·ç§»ãããã¨ãå¯è½ã§ããï¼ 202 åãã¿ã¤ãã³ã°ã§ä½¿ç¨ã¹ã¿ãã¯ã64ããã/32ãããã¢ã¼ãã®æå®ãè¡ããã¨ãã§ããï¼ 203 204 QEMU VirtåãSSPã®å®è£ 205 ã§ã¯EL1ã®ã¿ã使ç¨ããããï¼ä¾å¤ã¬ãã«éã®é·ç§»å¦çã¯è¡ã£ã¦ããªãï¼ 206 207 âä¾å¤ã¬ãã«ã®å¤å® 208 209 ç¾ç¶ã®ä¾å¤ã¬ãã«ãå¤å®ããã«ã¯ï¼CPSRã®ããã2ããã³ããã3ã®å¤ã使ç¨ããï¼ 210 bit[3:2]ã®å¤ã 211 '11'ã®å ´åï¼EL3 212 '10'ã®å ´åï¼EL2 213 '01'ã®å ´åï¼EL1 214 '00'ã®å ´åï¼EL0 215 216 âGICC_PMRã¬ã¸ã¹ã¿ 217 218 è¨å®ããåªå 219 度以ä¸(å¤ã¨ãã¦ã¯ä»¥ä¸)ã®åªå 220 度ã®å²è¾¼ã¿ã®åä»ãç¦æ¢ããï¼ 221 è¨å®å¯è½ãªæå¤§å¤ãè¨å®ããã¨ï¼å 222 ¨ã¦ã®å²è¾¼ã¿ã許å¯ããï¼ 223 ä¾ãã°åªå 224 度ã16段éã®å ´åã¯0xf0(=0x0f << 4)ãã»ããããã¨ãã¹ã¦ã®å²è¾¼ã¿è¨±å¯ 225 ã¨ãªãï¼å¤ã¯ä¾å¤/å²è¾¼ã¿ã®åä»ã¨ãªã¿ã¼ã³ã«ããå¤åããªãããï¼åãä»ããå²è¾¼ã¿ 226 ã®åªå 227 度ãå²è¾¼ã¿ã®å 228 ¥å£å¦çã§è¨å®ããå¿ 229 è¦ãããï¼ 230 231 âä¾å¤/å²è¾¼ã¿ã®åä» 232 233 ã»ä¾å¤/å²è¾¼ã¿ãåä»ããã¨ï¼åä»ãæã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ä¸ã«ä»¥ä¸ã®ã³ 234 ã³ããã¹ããä¿åããï¼ 135 割込みを受け付けた際,受け付けた割込みに設定された優先度より低い割込みを 136 禁止するため,GICC_RPRから取得した割込み要因の割込み優先度を GICC_PMRへ 137 セットしている.そしてハンドラ終了後に割込み発生前の割り込み優先度に戻す. 138 139 ● スタックポインタ(SP_EL0とSP_ELx) 140 141 スタックポインタは,例外レベル0のスタックポインタ(SP_EL0)および実行中の 142 例外レベルのスタックポインタ(SP_ELx)が選択可能である. 143 スタックの選択はspselレジスタへ1を設定するとSP_ELxを,0を設定すると 144 SP_EL0 を選択する. 145 146 SSPの実装では,EL1 で SP_EL1 のみを使用して動作する. 147 148 ●例外レベルの遷移 149 150 例外レベル(EL)の遷移は割込み/例外の受付および例外リターン命令(eret)により行う. 151 152 割込みおよび例外を受け付けることで発生前と同じまたはより高い例外レベルへ遷移する. 153 一方,同じまたはより低い例外レベルへの遷移は例外リターン命令(eret)により行う. 154 155 受付時の遷移先となる例外レベルの指定はシステムレジスタにより設定することで行う. 156 割込み/例外リターン時の遷移先となる例外レベルは,SPSR_ELxのビット2および3で 157 指定する.割込み/例外受付時,PSTATEの状態がSPSR_ELxに,リターンアドレスがELR_ELxに, 158 それぞれ保存されeret命令の実行によりその格納値が復帰されるため,eret実行前に 159 あらかじめSPSR_ELxにセットしておくことで指定した例外レベルへ遷移することが可能である. 160 同じタイミングで使用スタックや64ビット/32ビットモードの指定も行うことができる. 161 162 QEMU Virt向けSSPの実装ではEL1のみを使用するため,例外レベル間の遷移処理は行っていない. 163 164 ●例外レベルの判定 165 166 現状の例外レベルを判定するには,CPSRのビット2およびビット3の値を使用する. 167 bit[3:2]の値が 168 '11'の場合:EL3 169 '10'の場合:EL2 170 '01'の場合:EL1 171 '00'の場合:EL0 172 173 ●GICC_PMRレジスタ 174 175 設定した優先度以下(値としては以上)の優先度の割込みの受付を禁止する. 176 設定可能な最大値を設定すると,全ての割込みを許可する. 177 例えば優先度が16段階の場合は0xf0(=0x0f << 4)をセットするとすべての割込み許可 178 となる.値は例外/割込みの受付とリターンにより変化しないため,受け付けた割込み 179 の優先度を割込みの入口処理で設定する必要がある. 180 181 ●例外/割込みの受付 182 183 ・例外/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ 184 ンテキストを保存する. 235 185 236 186 --------------- 237 187 | GICC_PMR | <- new SP 238 188 ---------------- 239 | å²è¾¼ã¿/ä¾å¤çªå·| 240 ---------------- 241 | ããã¼(0) | 242 ---------------- 243 | 調æ´é(0 or 8) | 244 ---------------- 245 |調æ´é å(å¿ 246 è¦æ)| (*)ã¢ã©ã¤ã¡ã³ã調æ´ãå¿ 247 è¦ãªã¨ãã®ã¿ 189 | 割込み/例外番号| 190 ---------------- 191 | ダミー(0) | 192 ---------------- 193 | 調整量(0 or 8) | 194 ---------------- 195 |調整領域(必要時)| (*)アライメント調整が必要なときのみ 248 196 ---------------- 249 197 | ESR_ELx | … … 257 205 | X29 | 258 206 ---------------- 259 | ï¼|260 | ï¼|207 | : | 208 | : | 261 209 ---------------- 262 210 | X1 | … … 267 215 268 216 269 å²è¾¼ã¿/ä¾å¤çºçæã®ä¸»ãªã·ã¼ã±ã³ã¹ã¯æ¬¡ã®ããã«ãªãï¼é·ç§»å 270 ã®ä¾å¤ã¬ãã«ãELxã¨è¡¨ç¾ããï¼ 271 272 ï¼ãã¼ãã¦ã§ã¢ã®å¦çï¼ 273 ã»PSTATEãSPSR_ELxã«ä¿åãã 274 ã»ãªã¿ã¼ã³ã¢ãã¬ã¹ãELR_ELxã«ä¿åãã 275 ã»PSTATE.{D,A,I,F}ã1ã«ã»ãããã 276 ã»åæä¾å¤ããã³SErrorå²è¾¼ã¿ã®ã¨ãï¼ä¾å¤è¦å æ 277 å ±ãESR_ELxã«ä¿åãã 278 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ãSP_ELxã«åãæ¿ãã 279 ã»ELxã¸é·ç§»ãã 280 281 ï¼ã½ããã¦ã§ã¢ã§ã®å¦çï¼ 282 ã»(çºçæã«SP_EL0ã使ç¨ãã¦ããå ´å)ã¹ã¿ãã¯ãå²è¾¼ã¿çºçå(SP_EL0)ã«æ»ã 283 ã»æ±ç¨ã¬ã¸ã¹ã¿(X0-X30)ãã¹ã¿ãã¯ã«ä¿å 284 ã»SPSR_ELx, ESR_ELx, ELR_ELxãã¹ã¿ãã¯ã«ä¿å 285 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ããèª¿æ´ 286 ã»å²è¾¼ã¿çªå·(GICC_IARããåå¾)ï¼ä¾å¤çªå·(ãªãã»ããæ¯ã«å®ç¾©ããå¤)ãã¹ã¿ãã¯ã«ä¿å 287 ã»å²è¾¼ã¿çºçåã®å²è¾¼ã¿åªå 288 度ãã¹ã¯ãã¹ã¿ãã¯ã«ä¿å 289 ã»GICC_PMRã«åãä»ããå²è¾¼ã¿ã®å²è¾¼ã¿åªå 290 度ãã»ãã 291 ã»å²è¾¼ã¿/ä¾å¤ãã¹ãã«ã¦ã³ã¿ã®ã¤ã³ã¯ãªã¡ã³ã 292 ã»(å²è¾¼ã¿ã®å ´å)CPUããã¯è§£é¤ 293 ã»ãã¯ã¿ãã¼ãã«ãèªã¿è¾¼ã¿ãã³ãã©ãå®è¡ãã 294 295 âä¾å¤/å²è¾¼ã¿ããã®ãªã¿ã¼ã³ 296 297 ï¼ã½ããã¦ã§ã¢ã§ã®å¦çï¼ 298 ã»CPUããã¯ç¶æ 299 ã¸ç§»è¡ 300 ã»å²è¾¼ã¿/ä¾å¤ãã¹ã¨ã«ã¦ã³ã¿ã®ãã¯ãªã¡ã³ã 301 ã»GICC_PMRã«å²è¾¼ã¿çºçåã®åªå 302 度ãã¹ã¯ãæ»ã 303 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ã調æ´åãæ»ã 304 ã»æ»ãå 305 ã®ã³ã³ããã¹ããã·ã¹ãã ç¶æ 306 ã«å¿ãã¦å²è¾¼ã¿/ä¾å¤çºçå 307 ã¸ãªã¿ã¼ã³ 308 ã¾ãã¯é 309 å»¶ãã£ã¹ããããå®è¡ãã 310 ã»ELR_ELxã«æ»ãå 311 ã¢ãã¬ã¹ï¼SPSR_ELxã«ããã»ããµç¶æ 312 ããããã 313 ã»ããããã¦ããç¶æ 314 ã§eretå½ä»¤ãå®è¡ãï¼å²è¾¼ã¿/ä¾å¤ãããªã¿ã¼ã³ 315 316 âã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ãèª¿æ´ 317 318 AArch64ã§ã¯ï¼å¤é¨ã¤ã³ã¿ãã§ã¼ã¹ã«ããã¦ã¹ã¿ãã¯ãã¤ã³ã¿ã¯16ãã¤ãå¢çã« 319 ã¢ã©ã¤ã³ãããå¿ 320 è¦ãããï¼ãããä¾å¤çºçæã«ãããæºãããã¦ããã¨ã¯éããªãããï¼ 321 å²è¾¼ã¿/CPUä¾å¤ã®å 322 ¥å£å¦çã§ï¼ã¹ã¿ãã¯ãã¤ã³ã¿ãã¢ã©ã¤ã¡ã³ãæ¡ä»¶ãæºããã¦ããªãå ´åã«ã¯ï¼ 323 ã¹ã¿ãã¯ãã¤ã³ã¿ã調æ´ããï¼ã¾ãï¼åºå£å¦çã§ã¹ã¿ãã¯ãã¤ã³ã¿ãå 324 ã«æ»ããããã«ï¼èª¿æ´éãä¿åããï¼ 325 326 327 âOSã®å®è£ 328 329 330 1.ããã»ããµä¾åé¨åç§°: arm64 331 332 ARMv8 ã§ã¯ï¼64ãããã¢ã¼ã(AArch64)ããã³32ãããã¢ã¼ã(AArch32)ã®ä¸¡æ¹ããµãã¼ãããã 333 æ¬å®è£ 334 ã¯64ãããã¢ã¼ãã®ã¿ããµãã¼ããããã¨ãæç¤ºããããããã»ããµä¾åé¨åç§°ã arm64 ã¨ãã 335 336 2. ä¾å¤ã¢ã¼ãã®ä½¿ãåã 337 338 æ¬å®è£ 339 ã§ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãããããä¾å¤ã¬ãã«1(EL1)ã§åä½ããï¼ 340 ã¿ã¹ã¯ã³ã³ããã¹ããEL0ã§åä½ããæ¡ãèããããï¼ãã®å ´åã¯å²è¾¼ã¿/ä¾å¤ã®åºå£å¦çã«ãã㦠341 é 342 å»¶ãã£ã¹ãããã®åã«ä¾å¤ã¬ãã«ã®åãæ¿ããå¿ 343 è¦ã¨ãªãï¼ 344 345 3.ãã£ã¹ãããã£ã®å®è¡ã¢ã¼ã 346 347 æ¬å®è£ 348 ã§ã¯ãã¹ã¦ä¾å¤ã¬ãã«1ã§åä½ããããï¼ãã£ã¹ãããã£ã¯ä¾å¤ã¬ãã«1(EL1)ã§åä½ããï¼ 349 350 351 4.ã¹ã¿ãã¯ã®ä½¿ãåã 352 353 SSPã§ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãå 354 ±ã«ä¸ã¤ã®ã¹ã¿ãã¯ãå 355 ±ç¨ããï¼ 356 æ¬å®è£ 357 ã§ã¯SP_ELxã使ç¨ãã¦ããï¼ 358 ãã®ä»ã«SP_EL0ã使ç¨ããå®è£ 359 ãèããããï¼ãã®å ´åã¯å²è¾¼ã¿/ä¾å¤ã®å 360 ¥å£å¦çã«ã¦ 361 ã¬ã¸ã¹ã¿ãä¿åããåã«SP_EL0ã¸ã®ã¹ã¿ãã¯åãæ¿ããè¡ãï¼ 362 363 5.ã³ã³ããã¹ãã®å¤å® 364 365 å²è¾¼ã¿/ä¾å¤ã®ãã¹ãåæ°ãä¿æãã夿°(intnest)ã0ãªãã¿ã¹ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼ 366 1以ä¸ãªãéã¿ã¹ã¯ã³ã³ããã¹ãã¨ããï¼ 367 ã³ã³ããã¹ãæ¯ã«ä¾å¤ã¬ãã«ãåããå®è£ 368 ãåãå ´åã¯PSTATEã®ããã2ããã³3ã§ 369 ä¾å¤ã¬ãã«ãèªã¿åºããã¨ã«ããå¤å¥ããã¨ããæ¹æ³ãèããããï¼ 370 æ¬å®è£ 371 ã§ã¯ã³ã³ããã¹ãã«ãããåãä¾å¤ã¬ãã«ã使ç¨ãï¼ããã»ããµã® 372 ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã§ã¯å¤å¥ãã§ããªããã夿°ã§å¤å¥ããï¼ 373 374 6. CPUãã㯠375 376 CPUããã¯PSTATE.Iããã³PSTATE.Fã«ããCPUããã¯ãå®ç¾ããï¼ 377 378 7. å²è¾¼ã¿ããã¯ã¨CPUä¾å¤ã®é¢ä¿ 379 380 ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¯ãµãã¼ãããªãããï¼å²è¾¼ã¿ããã¯ã¨CPUããã¯ããã¹ã¯ãã 381 å²è¾¼ã¿ã®ç¯å²ã¯åãã¨ããï¼ãã ãï¼ãã©ã°èªä½ã¯ãäºãã«ç¬ç«ãããããï¼ 382 å²è¾¼ã¿ããã¯ç¶æ 383 ã®è¨å®/è§£é¤ã®éã¯ï¼ããã¯åã«CPUããã¯ãã©ã°ã®ç¶æ 384 ãä¿åãï¼ 385 è§£é¤åã«å 386 ã®ç¶æ 387 ã«æ»ãããã«ãã¦ããï¼ 388 389 8. å¤é¨åªå 390 度ã¨å 391 é¨åªå 392 度 393 394 å¤é¨åªå 395 度ã¨ã¯APIã§æå®ããå²è¾¼ã¿åªå 396 度(PRIå)ã®ãã¨ã§ããï¼å¤ãå°ãã 397 ã»ã©åªå 398 度ãé«ãï¼å²è¾¼ã¿ãã³ãã©ã«ã¯ï¼-1ããé£ç¶ããè² ã®å¤ãè¨å®å¯è½ã§ 399 ããï¼å 400 é¨åªå 401 度ã¯ï¼GICC_PMRã¬ã¸ã¹ã¿ã«è¨å®ããå¤ã§ããï¼ 402 å¤é¨åªå 403 度ã¨å 404 é¨åªå 405 度ã®å¤æã¯ä»¥ä¸ã®ãã¯ãã§è¡¨ç¾ãããï¼ 406 407 /* å¤é¨è¡¨ç¾ã¸ã®å¤æ */ 217 割込み/例外発生時の主なシーケンスは次のようになる(遷移先の例外レベルをELxと表現する) 218 219 (ハードウェアの処理) 220 ・PSTATEをSPSR_ELxに保存する 221 ・リターンアドレスをELR_ELxに保存する 222 ・PSTATE.{D,A,I,F}を1にセットする 223 ・同期例外およびSError割込みのとき,例外要因情報をESR_ELxに保存する 224 ・スタックポインタをSP_ELxに切り替える 225 ・ELxへ遷移する 226 227 (ソフトウェアでの処理) 228 ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す 229 ・汎用レジスタ(X0-X30)をスタックに保存 230 ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存 231 ・スタックポインタのアライメントを調整 232 ・割込み番号(GICC_IARから取得),例外番号(オフセット毎に定義した値)をスタックに保存 233 ・割込み発生前の割込み優先度マスクをスタックに保存 234 ・GICC_PMRに受け付けた割込みの割込み優先度をセット 235 ・割込み/例外ネストカウンタのインクリメント 236 ・(割込みの場合)CPUロック解除 237 ・ベクタテーブルを読み込みハンドラを実行する 238 239 ●例外/割込みからのリターン 240 241 (ソフトウェアでの処理) 242 ・CPUロック状態へ移行 243 ・割込み/例外ネスとカウンタのデクリメント 244 ・GICC_PMRに割込み発生前の優先度マスクを戻す 245 ・スタックポインタのアライメント調整分を戻す 246 ・戻り先のコンテキストやシステム状態に応じて割込み/例外発生元へリターン 247 または遅延ディスパッチを実行する 248 ・ELR_ELxに戻り先アドレス,SPSR_ELxにプロセッサ状態がそれぞれ 249 セットされている状態でeret命令を実行し,割込み/例外からリターン 250 251 ●スタックポインタのアライメント調整 252 253 AArch64では,外部インタフェースにおいてスタックポインタは16バイト境界に 254 アラインさせる必要がある.しかし例外発生時にそれが満たされているとは限らないため, 255 割込み/CPU例外の入口処理で,スタックポインタがアライメント条件を満たしていない場合には, 256 スタックポインタを調整する.また,出口処理でスタックポインタを元に戻せるように,調整量を保存する. 257 258 259 ○OSの実装 260 261 1.プロセッサ依存部名称: arm64 262 263 ARMv8 では,64ビットモード(AArch64)および32ビットモード(AArch32)の両方をサポートするが 264 本実装は64ビットモードのみをサポートすることを明示するためプロセッサ依存部名称を arm64 とした 265 266 2. 例外モードの使い分け 267 268 本実装ではタスクコンテキスト,非タスクコンテキストいずれも例外レベル1(EL1)で動作する. 269 タスクコンテキストをEL0で動作する案も考えられる.その場合は割込み/例外の出口処理において 270 遅延ディスパッチの前に例外レベルの切り替えが必要となる. 271 272 3.ディスパッチャの実行モード 273 274 本実装ではすべて例外レベル1で動作するため,ディスパッチャは例外レベル1(EL1)で動作する. 275 276 277 4.スタックの使い分け 278 279 SSPではタスクコンテキスト,非タスクコンテキスト共に一つのスタックを共用する. 280 本実装ではSP_ELxを使用している. 281 この他にSP_EL0を使用する実装も考えられる.その場合は割込み/例外の入口処理にて 282 レジスタを保存する前にSP_EL0へのスタック切り替えを行う. 283 284 5.コンテキストの判定 285 286 割込み/例外のネスト回数を保持する変数(intnest)が0ならタスクタスクコンテキスト, 287 1以上なら非タスクコンテキストとする. 288 コンテキスト毎に例外レベルを分ける実装を取る場合はPSTATEのビット2および3で 289 例外レベルを読み出すことにより判別するという方法も考えられる. 290 本実装ではコンテキストによらず同じ例外レベルを使用し,プロセッサの 291 ステータスレジスタでは判別ができないため変数で判別する. 292 293 6. CPUロック 294 295 CPUロックPSTATE.IおよびPSTATE.FによりCPUロックを実現する. 296 297 7. 割込みロックとCPU例外の関係 298 299 カーネル管理外の割込みはサポートしないため,割込みロックとCPUロックがマスクする 300 割込みの範囲は同じとする.ただし,フラグ自体はお互いに独立させるため, 301 割込みロック状態の設定/解除の際は,ロック前にCPUロックフラグの状態を保存し, 302 解除前に元の状態に戻すようにしている. 303 304 8. 外部優先度と内部優先度 305 306 外部優先度とはAPIで指定する割込み優先度(PRI型)のことであり,値が小さい 307 ほど優先度が高い.割込みハンドラには,-1から連続した負の値を設定可能で 308 ある.内部優先度は,GICC_PMRレジスタに設定する値である. 309 外部優先度と内部優先度の変換は以下のマクロで表現される. 310 311 /* 外部表現への変換 */ 408 312 #define EXT_IPM(pri) \ 409 313 (((PRI)((pri) >> GIC_PRI_SHIFT)) - (GIC_PRI_LEVEL - 1)) 410 314 411 /* å 412 é¨è¡¨ç¾ã¸ã®å¤æ */ 315 /* 内部表現への変換 */ 413 316 #define INT_IPM(ipm) \ 414 317 (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT) 415 318 416 ããã§GIC_PRI_LEVELã¯ãµãã¼ãããå²è¾¼ã¿åªå 417 åº¦ã®æ°ï¼GIC_PRI_SHIFTã¯GICC_PMRã¬ã¸ã¹ã¿å 418 419 ã®ï¼å 420 é¨åªå 421 度ã®å¤ãæ ¼ç´ãããä½ç½®ï¼ããã0ããã®ãªãã»ããï¼ã表ãï¼ 422 423 424 9. ã«ã¼ãã«ç®¡çå 425 ã®æé«åªå 426 度(CPUããã¯ç¶æ 427 ã§ã®åªå 428 度ãã¹ã¯) 429 430 ã«ã¼ãã«ç®¡çå 431 ã®å²è¾¼ã¿ã®æé«åªå 432 度ã¯è¨å®å¯è½ãªå¤é¨åªå 433 åº¦ã®æé«å¤ã¨åãã¨ããï¼ 434 435 436 以ä¸ï¼ 319 ここでGIC_PRI_LEVELはサポートする割込み優先度の数,GIC_PRI_SHIFTはGICC_PMRレジスタ内 320 の,内部優先度の値が格納される位置(ビット0からのオフセット)を表す. 321 322 323 9. カーネル管理内の最高優先度(CPUロック状態での優先度マスク) 324 325 カーネル管理内の割込みの最高優先度は設定可能な外部優先度の最高値と同じとする. 326 327 328 以上. -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_kernel.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: prc_kernel.h 1304 2008-08-27 07:28:36Z ertl-honda $ … … 56 41 57 42 /* 58 * kernel.h ã®ããã»ããµä¾åé¨ï¼ARM64ç¨ï¼43 * kernel.hのプロセッサ依存部(ARM64用) 59 44 * 60 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼target_kernel.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯61 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã62 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼45 * このインクルードファイルは,target_kernel.h(または,そこからインク 46 * ルードされるファイル)のみからインクルードされる.他のファイルから 47 * 直接インクルードしてはならない. 63 48 */ 64 49 … … 67 52 68 53 /* 69 * ãµãã¼ãããæ©è½ã®å®ç¾©54 * サポートする機能の定義 70 55 */ 71 #define TOPPERS_TARGET_SUPPORT_DIS_INT /* dis_int ããµãã¼ããã*/72 #define TOPPERS_TARGET_SUPPORT_ENA_INT /* ena_int ããµãã¼ããã*/56 #define TOPPERS_TARGET_SUPPORT_DIS_INT /* dis_intをサポートする */ 57 #define TOPPERS_TARGET_SUPPORT_ENA_INT /* ena_intをサポートする */ 73 58 74 59 #ifndef TOPPERS_MACRO_ONLY 75 60 76 61 /* 77 * ã¹ã¿ãã¯ã®å 78 * ã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ãã¯ãã¤ã³ã¿ãµã¤ãºã®åã«ããå¿ 79 è¦ããã 62 * スタックの型 63 * スタックポインタのアライメントはポインタサイズの倍にする必要がある 80 64 */ 81 65 #define TOPPERS_STK_T uint128_t -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 12 12 # 13 13 # 14 # ä¸è¨è使¨©è 15 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 16 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 17 # å¤ã»åé 18 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 19 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 20 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 21 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 22 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 23 # ç¨ã§ããå½¢ã§åé 24 å¸ããå ´åã«ã¯ï¼åé 25 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 26 # è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 28 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 30 # ç¨ã§ããªãå½¢ã§åé 31 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 32 # ã¨ï¼ 33 # (a) åé 34 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 35 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 36 # 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 37 # (b) åé 38 å¸ã®å½¢æ 39 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 40 # å ±åãããã¨ï¼ 41 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 42 # 害ãããï¼ä¸è¨è使¨©è 43 ããã³TOPPERSããã¸ã§ã¯ããå 44 責ãããã¨ï¼ 45 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 46 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 47 ããã³TOPPERSããã¸ã§ã¯ãã 48 # å 49 責ãããã¨ï¼ 14 # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 15 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 16 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 17 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 18 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 19 # スコード中に含まれていること. 20 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 21 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 22 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 23 # の無保証規定を掲載すること. 24 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 25 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 26 # と. 27 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 28 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 29 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 30 # 報告すること. 31 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 32 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 33 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 34 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 35 # 免責すること. 50 36 # 51 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 52 ã 53 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 54 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 55 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 56 # ã®è²¬ä»»ãè² ããªãï¼ 37 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 38 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 39 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 40 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 41 # の責任を負わない. 57 42 # 58 43 # $Id: core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro $ … … 60 45 61 46 # 62 # ãã¹2ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼47 # パス2の生成スクリプトのコア依存部(ARM用) 63 48 # 64 49 65 50 # 66 # æå¹ãªå²è¾¼ã¿çªå·ï¼å²è¾¼ã¿ãã³ãã©çªå·51 # 有効な割込み番号,割込みハンドラ番号 67 52 # 68 53 $INTNO_VALID = [ *(0..63) ] … … 70 55 71 56 # 72 # æå¹ãªCPUä¾å¤ãã³ãã©çªå·57 # 有効なCPU例外ハンドラ番号 73 58 # 74 59 $EXCNO_VALID = [ *(0..7) ] 75 60 76 61 # 77 # ATT_ISR ã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·62 # ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号 78 63 # 79 64 $INTNO_ATTISR_VALID = $INTNO_VALID … … 81 66 82 67 # 83 # DEF_INT/DEF_EXC ã§ä½¿ç¨ã§ããå²è¾¼ã¿ãã³ãã©çªå·ï¼CPUä¾å¤ãã³ãã©çªå·68 # DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号 84 69 # 85 70 $INHNO_DEFINH_VALID = $INHNO_VALID … … 87 72 88 73 # 89 # ãã§ãã¯æ¹æ³ã®æå®74 # チェック方法の指定 90 75 # 91 76 $CHECK_STKSZ_ALIGN = 16 92 77 93 78 # 94 # CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨å²è¾¼ã¿åªå 95 度 79 # CFG_INTで使用できる割込み番号と割込み優先度 96 80 # 97 81 $INTNO_CFGINT_VALID = $INTNO_VALID … … 99 83 100 84 # 101 # å²è¾¼ã¿å±æ§ä¸ã®ã¿ã¼ã²ããä¾åã«ç¨ããããã85 # 割込み属性中のターゲット依存に用いるビット 102 86 # 103 87 #$TARGET_INTATR = 104 88 105 89 # 106 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã90 # ターゲット非依存部のインクルード 107 91 # 108 92 IncludeTrb("kernel/kernel.trb") … … 111 95 112 96 # 113 # å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«97 # 割込み要求ライン設定テーブル 114 98 # 115 99 … … 132 116 133 117 # 134 # å²è¾¼ã¿ãã³ãã©ãã¼ãã«118 # 割込みハンドラテーブル 135 119 # 136 120 $kernelCfgC.comment_header("Interrupt Handler Table") … … 150 134 151 135 # 152 # CPU ä¾å¤ãã³ãã©ãã¼ãã«136 # CPU例外ハンドラテーブル 153 137 # 154 138 $kernelCfgC.comment_header("CPU Exception Handler Table") -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_rename.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_rename.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_sil.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: prc_sil.h 1304 2008-08-27 07:28:36Z ertl-honda $ … … 56 41 57 42 /* 58 * sil.h ã®ããã»ããµä¾åé¨ï¼ARM64ç¨ï¼43 * sil.hのプロセッサ依存部(ARM64用) 59 44 */ 60 45 … … 67 52 68 53 /* 69 * å 70 ¨å²è¾¼ã¿ããã¯ãã©ã°ã®ã»ãã(NMIãé¤ããã¹ã¦ã®å²è¾¼ã¿ã®ç¦æ¢) 54 * 全割込みロックフラグのセット(NMIを除くすべての割込みの禁止) 71 55 */ 72 56 Inline bool_t … … 87 71 88 72 /* 89 * å 90 ¨å²è¾¼ã¿ããã¯ãã©ã°ã®è§£é¤ 73 * 全割込みロックフラグの解除 91 74 */ 92 75 Inline void … … 99 82 100 83 /* 101 * å 102 ¨å²è¾¼ã¿ããã¯ç¶æ 103 ã®å¶å¾¡ 84 * 全割込みロック状態の制御 104 85 */ 105 86 #define SIL_PRE_LOC bool_t TOPPERS_locked … … 108 89 109 90 /* 110 * ã¨ã³ãã£ã¢ã³ã®å®ç¾©91 * エンディアンの定義 111 92 */ 112 93 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_stddef.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: prc_stddef.h 1304 2008-08-27 07:28:36Z ertl-honda $ … … 56 41 57 42 /* 58 * t_stddef.h ã®ããã»ããµä¾åé¨ï¼ARM64ç¨ï¼43 * t_stddef.hのプロセッサ依存部(ARM64用) 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_ARM64 /* ããã»ããµç¥ç§°*/56 #define TOPPERS_ARM64 /* プロセッサ略称 */ 72 57 73 58 #ifndef TOPPERS_MACRO_ONLY 74 59 75 60 /* 76 * ãã¼ã¿åã®å®ç¾©61 * データ型の定義 77 62 */ 78 63 typedef __int128_t int128_t; -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_support.S
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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 * ã®è²¬ä»»ãè² ããªãï¼ 53 * 54 */ 55 56 /* 57 * ããã»ããµä¾åã¢ã¸ã¥ã¼ã« ã¢ã»ã³ããªè¨èªé¨ï¼ARM64ç¨ï¼ 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 * の責任を負わない. 38 * 39 */ 40 41 /* 42 * プロセッサ依存モジュール アセンブリ言語部(ARM64用) 58 43 */ 59 44 60 45 #define TOPPERS_MACRO_ONLY 61 #define UINT_C(val) (val) /* uint_t åã®å®æ°ãä½ããã¯ã*/62 #define ULONG_C(val) (val) /* ulong_t åã®å®æ°ãä½ããã¯ã*/63 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/46 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 47 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 48 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 64 49 65 50 #include "kernel_impl.h" 66 51 67 52 /* 68 * ãã£ã¹ãããã£ã®åä½éå§53 * ディスパッチャの動作開始 69 54 */ 70 55 .text … … 74 59 start_dispatch: 75 60 /* 76 * ãã®ã«ã¼ãã³ã¯ï¼ã«ã¼ãã«èµ·åæã«ï¼ãã¹ã¦ã®å²è¾¼ã¿ãç¦æ¢ããç¶æ 77 78 * ï¼å²è¾¼ã¿ããã¯ç¶æ 79 ã¨åçï¼ã§å¼ã³åºãããï¼ 61 * このルーチンは,カーネル起動時に,すべての割込みを禁止した状態 62 * (割込みロック状態と同等)で呼び出される. 80 63 * 81 * ããã§ã¯ dispatcher ãå¼ã³åºãåã®åæè¨å®ãè¡ãï¼ 82 * (1) ã·ã¹ãã ç¶æ 83 ã®åæåï¼ä»¥ä¸ã®ç¶æ 84 ã¸ç§»è¡ããï¼ 85 * ã»å 86 ¨å²è¾¼ã¿ããã¯è§£é¤ç¶æ 87 (ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿è¨±å¯) 88 * ã»CPUããã¯ç¶æ 89 (ã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ç¦æ¢) 90 * ã»å²è¾¼ã¿åªå 91 度ãã¹ã¯å 92 ¨è§£é¤ç¶æ 93 94 * ã»ãã£ã¹ããã許å¯ç¶æ 95 64 * ここでは dispatcher を呼び出す前の初期設定を行う. 65 * (1) システム状態の初期化.以下の状態へ移行する. 66 * ・全割込みロック解除状態(カーネル管理外の割込み許可) 67 * ・CPUロック状態(カーネル管理の割込み禁止) 68 * ・割込み優先度マスク全解除状態 69 * ・ディスパッチ許可状態 96 70 * 97 * (1-1) å²è¾¼ã¿åªå 98 度ãã¹ã¯ã¯ gicc_initializeã§ï¼GICC_PMR ãåæåãããã¨ã«ãã 99 * ãã§ã«ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 100 度ãã¹ã¯å 101 ¨è§£é¤ç¶æ 102 ã«ãªã£ã¦ããï¼ 103 * (1-2) ãã£ã¹ãããç¦æ¢ãã©ã°ã¯ task_initialize ã§ disdsp ã false ã«åæåãã¦ãããã 104 * ãã§ã«ãã£ã¹ããã許å¯ç¶æ 105 ã«ãªã£ã¦ããï¼ 106 * (1-3) ããã§ã¯ã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ãç¦æ¢ããï¼ 71 * (1-1) 割込み優先度マスクは gicc_initializeで,GICC_PMR を初期化することにより 72 * すでに(モデル上の)割込み優先度マスク全解除状態になっている. 73 * (1-2) ディスパッチ禁止フラグは task_initialize で disdsp を false に初期化しているため 74 * すでにディスパッチ許可状態になっている. 75 * (1-3) ここではカーネル管理の割込みを禁止する. 107 76 * 108 * (2) ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæå109 * start_dispatch ãå¼ã³åºãããã¨ããã«æ»ã£ã¦ãããã¨ã¯ãªããã110 * ã¹ã¿ãã¯ãã¤ã³ã¿ãããã§åæåããï¼77 * (2) スタックポインタの初期化 78 * start_dispatch が呼び出されるとここに戻ってくることはないため 79 * スタックポインタをここで初期化する. 111 80 */ 112 81 ldr x0, =_kernel_istkpt // setup stack … … 114 83 mov sp, x0 115 84 116 // ã«ã¼ãã«ç®¡çå 117 ã®å²è¾¼ã¿ç¦æ¢ 85 // カーネル管理内の割込み禁止 118 86 msr daifset, #3 119 87 120 // dispatcher å¼ã³åºã88 // dispatcher呼び出し 121 89 b dispatcher 122 90 123 91 /* 124 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºã125 * 126 * ã¹ã¿ãã¯ãéã¿ã¹ã¯ã³ã³ããã¹ãç¨ã«åãæ¿ãï¼92 * カーネルの終了処理の呼出し 93 * 94 * スタックを非タスクコンテキスト用に切り替え. 127 95 * 128 96 */ … … 133 101 call_exit_kernel: 134 102 /* 135 * ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæå103 * スタックポインタの初期化 136 104 */ 137 105 ldr x0, =_kernel_istkpt … … 139 107 mov sp, x0 140 108 141 b exit_kernel /* ã«ã¼ãã«ã®çµäºå¦çãå¼ã¶*/142 143 144 /* 145 * å²è¾¼ã¿/ä¾å¤ã³ã³ããã¹ãä¿åå¦ç109 b exit_kernel /* カーネルの終了処理を呼ぶ */ 110 111 112 /* 113 * 割込み/例外コンテキスト保存処理 146 114 */ 147 115 .macro __save_context 148 116 /* 149 * x0 - x29 ã®ä¿å(x0,x1ãã¢ããx28, x29ã¾ã§)117 * x0 - x29 の保存(x0,x1ペアからx28, x29まで) 150 118 */ 151 119 stp x1, x0, [sp, #-16]! … … 166 134 167 135 /* 168 * spsr_el1, x30 ããã¢ã§ä¿å136 * spsr_el1, x30をペアで保存 169 137 */ 170 138 mrs x21, spsr_el1 … … 172 140 173 141 /* 174 * esr_el1, elr_el1 ããã¢ã§ä¿å142 * esr_el1, elr_el1 をペアで保存 175 143 */ 176 144 mrs x21, esr_el1 … … 179 147 180 148 /* 181 * SP ã®èª¿æ´(16ãããã¢ã©ã¤ã¡ã³ãã«ãã)149 * SPの調整(16ビットアライメントにする) 182 150 */ 183 151 mov x1, #8 184 152 mov x2, sp 185 and x1, x2, x1 // 調æ´éã®è¨ç®(0 or 8)186 sub sp, sp, x1 // SP ã®èª¿æ´187 stp xzr, x1, [sp, #-16]! // 調æ´éãä¿å188 189 /* 190 * 追å ã®æ ¼ç´é åã確ä¿ããããï¼SPãæ¸ç®ãã¦ãã153 and x1, x2, x1 // 調整量の計算(0 or 8) 154 sub sp, sp, x1 // SPの調整 155 stp xzr, x1, [sp, #-16]! // 調整量を保存 156 157 /* 158 * 追加の格納領域を確保するため,SPを減算しておく 191 159 */ 192 160 sub sp, sp, #16 … … 194 162 195 163 /* 196 * ã³ã³ããã¹ã復帰å¦ç164 * コンテキスト復帰処理 197 165 */ 198 166 .macro __restore_context 199 167 /* 200 * ã¹ã¿ãã¯ã«ä¿åããä¸é¨ãã¼ã¿ã®ç ´æ£(ã¢ã©ã¤ã¡ã³ã調æ´åãèæ 201 ®) 168 * スタックに保存した一部データの破棄(アライメント調整分を考慮) 202 169 */ 203 170 mov x1, #40 … … 206 173 add sp, sp, x1 207 174 /* 208 * ELR/SPSR ã®å¾©å 209 175 * ELR/SPSR の復元 210 176 */ 211 177 ldp x21, x22, [sp], #16 … … 213 179 msr spsr_el1, x22 214 180 /* 215 * x0 - x30 ã®å¾©å 216 181 * x0 - x30 の復元 217 182 */ 218 183 ldr x30, [sp], #8 … … 235 200 236 201 /* 237 * å²è¾¼ã¿/ä¾å¤ã®åºå£å¦ç 238 * åæï¼CPUããã¯ç¶æ 239 , ãã¹ãã«ã¦ã³ã¿ãã¯ãªã¡ã³ãæ¸ã¿ 202 * 割込み/例外の出口処理 203 * 前提:CPUロック状態, ネストカウンタデクリメント済み 240 204 */ 241 205 .text … … 243 207 .global ret_int 244 208 ret_int: 245 // æ»ãå 246 ã®ã³ã³ããã¹ãã確èªãï¼å¤æ®µå²è¾¼ã¿ãªããªã¿ã¼ã³ 209 // 戻り先のコンテキストを確認し,多段割込みならリターン 247 210 ldr x1, =_kernel_intnest 248 211 ldrb w3, [x1] 249 212 cbnz w3, int_return 250 213 251 ret_int_2: // åæ®µã®å²è¾¼ã¿ã®å ´å 252 // reqflg ã false ãªãå¼ã³åºãå 253 ã¸æ»ã 214 ret_int_2: // 初段の割込みの場合 215 // reqflg が false なら呼び出し元へ戻る 254 216 ldr x0, =reqflg 255 217 ldr w1, [x0] 256 218 cbz w1, int_return 257 219 258 ret_int_3: // reqflg ã true ã®å ´å220 ret_int_3: // reqflg が true の場合 259 221 mov w1, #0 // reqflg = false 260 222 str w1, [x0] 261 223 262 // ãã£ã¹ãããç¦æ¢ãªãå¼ã³åºãå 263 ã¸æ»ã 224 // ディスパッチ禁止なら呼び出し元へ戻る 264 225 ldr x0, =disdsp 265 226 ldr w1, [x0] … … 267 228 268 229 /* 269 * é 270 å»¶ãã£ã¹ããã 271 * search_schedtsk ã®è¿å¤(x0)ã弿°ã¨ã㦠run_task ãå¼ã³åºã 230 * 遅延ディスパッチ 231 * search_schedtsk の返値(x0)を引数として run_task を呼び出す 272 232 */ 273 233 bl search_schedtsk … … 275 235 276 236 /* 277 * å¼ã³åºãå 278 ã¸ãªã¿ã¼ã³ 237 * 呼び出し元へリターン 279 238 */ 280 239 int_return: 281 __restore_context // ã¬ã¸ã¹ã¿å¾©å¸°240 __restore_context // レジスタ復帰 282 241 eret 283 242 284 243 /* 285 * å²è¾¼ã¿ãã¯ã¿286 * æåã«å²è¾¼ã¿çºçåã®ã¹ã¿ãã¯ã«æ»ãã¦ããã¬ã¸ã¹ã¿ãä¿åãã287 * ãã¼ãã¦ã§ã¢ã«ãã£ã¦PSTATE.{I,F} ãã»ããæ¸ã§ãããã¨ãåæã¨ãã244 * 割込みベクタ 245 * 最初に割込み発生前のスタックに戻してからレジスタを保存する 246 * ハードウェアによってPSTATE.{I,F} がセット済であることを前提とする 288 247 */ 289 248 .text … … 296 255 297 256 // Sync EL1 298 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã299 __save_context 300 mov x22, #0 // ä¾å¤çªå·ãx22ã«ã»ãã257 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 258 __save_context 259 mov x22, #0 // 例外番号をx22にセット 301 260 b gic_exc_entry 302 261 303 262 // IRQ EL1 304 263 .align 7 305 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã264 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 306 265 __save_context 307 266 b gic_int_entry … … 309 268 // FIQ EL1 310 269 .align 7 311 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã¸æ»ã270 msr spsel, #0 // 例外発生前のスタック(SP_EL0)へ戻す 312 271 __save_context 313 272 b gic_int_entry … … 315 274 // SError EL1 316 275 .align 7 317 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã¸æ»ã318 __save_context 319 mov x22, #1 // ä¾å¤çªå·ãx22ã«ã»ãã276 msr spsel, #0 // 例外発生前のスタック(SP_EL0)へ戻す 277 __save_context 278 mov x22, #1 // 例外番号をx22にセット 320 279 b gic_exc_entry 321 280 … … 327 286 .align 7 328 287 __save_context 329 mov x22, #2 // ä¾å¤çªå·ãx22ã«ã»ãã288 mov x22, #2 // 例外番号をx22にセット 330 289 b gic_exc_entry 331 290 … … 343 302 .align 7 344 303 __save_context 345 mov x22, #3 // ä¾å¤çªå·ãx22ã«ã»ãã304 mov x22, #3 // 例外番号をx22にセット 346 305 b gic_exc_entry 347 306 … … 352 311 // Sync EL0 353 312 .align 7 354 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã355 __save_context 356 mov x22, #4 // ä¾å¤çªå·ãx22ã«ã»ãã313 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 314 __save_context 315 mov x22, #4 // 例外番号をx22にセット 357 316 b gic_exc_entry 358 317 359 318 // IRQ EL0 360 319 .align 7 361 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã320 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 362 321 __save_context 363 322 b gic_int_entry … … 365 324 // FIQ EL0 366 325 .align 7 367 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã326 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 368 327 __save_context 369 328 b gic_int_entry … … 371 330 // Error EL0 372 331 .align 7 373 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã374 __save_context 375 mov x22, #5 // ä¾å¤çªå·ãx22ã«ã»ãã332 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 333 __save_context 334 mov x22, #5 // 例外番号をx22にセット 376 335 b gic_exc_entry 377 336 … … 382 341 // AArch32 sync 383 342 .align 7 384 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã385 __save_context 386 mov x22, #6 // ä¾å¤çªå·ãx22ã«ã»ãã343 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 344 __save_context 345 mov x22, #6 // 例外番号をx22にセット 387 346 b gic_exc_entry 388 347 389 348 // AArch32 IRQ 390 349 .align 7 391 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã350 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 392 351 __save_context 393 352 b gic_int_entry … … 395 354 // AArch32 FIQ 396 355 .align 7 397 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã356 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 398 357 __save_context 399 358 b gic_int_entry … … 401 360 // AArch32 Error 402 361 .align 7 403 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã404 __save_context 405 mov x22, #7 // ä¾å¤çªå·ãx22ã«ã»ãã406 b gic_exc_entry 362 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 363 __save_context 364 mov x22, #7 // 例外番号をx22にセット 365 b gic_exc_entry -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_sym.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_test.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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: prc_test.h 1304 2008-08-27 07:28:36Z ertl-honda $ … … 56 41 57 42 /* 58 * ãã¹ãããã°ã©ã ã®ãããä¾åå®ç¾©ï¼ARM64ç¨ï¼43 * テストプログラムのチップ依存定義(ARM64用) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ãããã§å 66 ±éãªå®ç¾© 50 * チップで共通な定義 67 51 */ 68 52 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_timer.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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 * ã¿ã¤ããã©ã¤ãï¼Generic Timerï¼43 * タイマドライバ(Generic Timer) 59 44 */ 60 45 #include "kernel_impl.h" … … 64 49 65 50 /* 66 * ä»®æ³ã¿ã¤ãã®å¶å¾¡ã¬ã¸ã¹ã¿ããã®èªã¿åºã51 * 仮想タイマの制御レジスタからの読み出し 67 52 */ 68 53 Inline uint64_t … … 77 62 78 63 /* 79 * ä»®æ³ã¿ã¤ãã®å¶å¾¡ã¬ã¸ã¹ã¿ã¸ã®æ¸ãè¾¼ã¿64 * 仮想タイマの制御レジスタへの書き込み 80 65 */ 81 66 Inline void … … 88 73 89 74 /* 90 * ä»®æ³ã¿ã¤ã(ããªã¼ã«ã¦ã³ã¿)ã®ã«ã¦ã³ãå¤ã®èªã¿åºã75 * 仮想タイマ(フリーカウンタ)のカウント値の読み出し 91 76 */ 92 77 Inline uint64_t … … 100 85 101 86 /* 102 * ä»®æ³ã¿ã¤ãã®å¤ã®èªã¿åºã87 * 仮想タイマの値の読み出し 103 88 */ 104 89 Inline uint64_t … … 112 97 113 98 /* 114 * ä»®æ³ã¿ã¤ãã®å¤ã®æ¸ãè¾¼ã¿99 * 仮想タイマの値の書き込み 115 100 */ 116 101 Inline void … … 122 107 123 108 /* 124 * ã·ã¹ãã ã«ã¦ã³ã¿ã®ã¯ããã¯å¨æ³¢æ°ã®åå¾109 * システムカウンタのクロック周波数の取得 125 110 */ 126 111 Inline uint64_t … … 133 118 134 119 /* 135 * ã¿ã¤ãã®éå§120 * タイマの開始 136 121 */ 137 122 static void … … 147 132 148 133 /* 149 * ã¿ã¤ãã®åæ¢134 * タイマの停止 150 135 */ 151 136 static void … … 161 146 162 147 /* 163 * ã¿ã¤ãå²è¾¼ã¿è¦æ±ã®ã¯ãªã¢148 * タイマ割込み要求のクリア 164 149 */ 165 150 static void … … 170 155 171 156 /* 172 * 次ã®ã¿ã¤ãå²è¾¼ã¿çºçã¾ã§ã®ãªãã»ãã157 * 次のタイマ割込み発生までのオフセット 173 158 */ 174 159 static uint64_t next_tval; 175 160 176 161 /* 177 * ã¿ã¤ãã®èµ·åå¦ç162 * タイマの起動処理 178 163 */ 179 164 void … … 183 168 target_timer_int_clear(); 184 169 185 // 次åã®ã¿ã¤ãå²è¾¼ã¿çºçã¾ã§ã®ãªãã»ããç®åº170 // 次回のタイマ割込み発生までのオフセット算出 186 171 next_tval = get_timer_freq() * 1000 / 1000000UL; /* 1ms */ 187 172 clock_write_tval(next_tval); … … 191 176 192 177 /* 193 * ã¿ã¤ãã®åæ¢å¦ç178 * タイマの停止処理 194 179 */ 195 180 void … … 200 185 201 186 /* 202 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©187 * タイマ割込みハンドラ 203 188 */ 204 189 void … … 207 192 target_timer_stop(); 208 193 target_timer_int_clear(); 209 clock_write_tval(next_tval); // 次åã®å²è¾¼ã¿194 clock_write_tval(next_tval); // 次回の割込み 210 195 target_timer_start(); 211 196 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_timer.cfg
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 4 4 5 5 /* 6 * ã¿ã¤ããã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«6 * タイマドライバのコンフィギュレーションファイル 7 7 */ 8 8 ATT_INI({ TA_NULL, 0, target_timer_initialize }); -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_timer.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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 * ã¿ã¤ããã©ã¤ãï¼Generic Timerï¼43 * タイマドライバ(Generic Timer) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ°50 * タイマ割込みハンドラ登録のための定数 66 51 */ 67 #define INTNO_TIMER TINTNO_TIMER /* å²è¾¼ã¿çªå·*/68 #define INHNO_TIMER INTNO_TIMER /* å²è¾¼ã¿ãã³ãã©çªå·*/52 #define INTNO_TIMER TINTNO_TIMER /* 割込み番号 */ 53 #define INHNO_TIMER INTNO_TIMER /* 割込みハンドラ番号 */ 69 54 70 55 #define CNTV_CTL_ENABLE (1 << 0) … … 75 60 76 61 /* 77 * ã¿ã¤ãå¤ã®å 78 é¨è¡¨ç¾ã®å 62 * タイマ値の内部表現の型 79 63 */ 80 64 typedef uint64_t CLOCK; 81 65 82 66 /* 83 * ã¿ã¤ãå¤ã®å 84 é¨è¡¨ç¾ã¨ããªç§ã»Î¼ç§åä½ã¨ã®å¤æ 67 * タイマ値の内部表現とミリ秒・μ秒単位との変換 85 68 * 86 69 */ … … 89 72 90 73 /* 91 * ã¿ã¤ãã®èµ·åå¦ç74 * タイマの起動処理 92 75 * 93 * ã¿ã¤ããåæåãï¼å¨æçãªã¿ã¤ãå²è¾¼ã¿è¦æ±ãçºçãããï¼76 * タイマを初期化し,周期的なタイマ割込み要求を発生させる. 94 77 */ 95 78 extern void target_timer_initialize(intptr_t exinf); 96 79 97 80 /* 98 * ã¿ã¤ãã®åæ¢å¦ç81 * タイマの停止処理 99 82 * 100 * ã¿ã¤ãã®åä½ã忢ãããï¼83 * タイマの動作を停止させる. 101 84 */ 102 85 extern void target_timer_terminate(intptr_t exinf); 103 86 104 87 /* 105 * ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã88 * タイマの現在値の読出し 106 89 */ 107 90 Inline CLOCK … … 116 99 117 100 /* 118 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©101 * タイマ割込みハンドラ 119 102 */ 120 103 extern void target_timer_handler(void); -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_unrename.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/arm64_gcc/prc_user.txt
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 ===================================================================== 2 ARM64 ããã»ããµä¾åé¨2 ARM64プロセッサ依存部 3 3 Last Modified: '18/05/29 4 4 ===================================================================== 5 5 6 6 7 (1) 対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã ã®ç¨®é¡ã»æ§æ7 (1) 対応しているターゲットシステムの種類・構成 8 8 9 ARM64 ä¾åé¨ã¯ï¼ARMv8-A ã¢ã¼ããã¯ãã£ãã¿ã¼ã²ããã¨ãã¦ããï¼ARMv8-A ã¯10 64 ãããã¢ã¼ããã¯ãã£ã§ããå½ä»¤ã»ããã¬ãã«ã§ãARMã¨ã¯ç°ãªãããï¼11 ARM ä¾åé¨ã¨åãã¦ããï¼9 ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は 10 64ビットアーキテクチャであり命令セットレベルでもARMとは異なるため, 11 ARM依存部と分けている. 12 12 13 (2) 使ç¨ããéçºç°å¢ã¨å使¤è¨¼ããæ¡ä»¶ï¼ãã¼ã¸ã§ã³ï¼ãªãã·ã§ã³çï¼13 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等) 14 14 15 ã«ã¼ãã«ã¯GCCãç¨ãã¦ã³ã³ãã¤ã«ããï¼åä½ç¢ºèªãããã¼ã¸ã§ã³ã¯åã¿ã¼ã² 16 ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼ 15 カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ 16 ット依存部のドキュメントに記載する. 17 17 18 (3) ã¿ã¼ã²ããå®ç¾©äºé 19 ã®è¦å® 18 (3) ターゲット定義事項の規定 20 19 21 (3-1) ãã¼ã¿åã«é¢ããè¦å®20 (3-1) データ型に関する規定 22 21 23 ãã¼ã¿å㯠arch/gcc/tool_stddef.h ã§å®ç¾©ããã¦ããå 24 容ã§ï¼floatå㨠25 doubleåã¯ï¼ããããIEEE754æºæ ã®å精度浮åå°æ°ç¹æ°ã¨å精度浮åå°æ°ç¹ 26 æ°ã§ããï¼ 22 データ型は arch/gcc/tool_stddef.h で定義されている内容で,float型と 23 double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点 24 数である. 27 25 28 (3-2) å²è¾¼ã¿å¦çã«é¢ããè¦å®26 (3-2) 割込み処理に関する規定 29 27 30 âå²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã®å²å½ã¦ï¼ä¸¡è 31 ã®å¯¾å¿ 28 ○割込みハンドラ番号と割込み番号の割当て,両者の対応 32 29 33 IRQ ããã³ FIQ ãã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ã¨ããï¼34 å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã¯ï¼ä¾å¤çºçæã«GICC_IAR ã«ã»ãããããä¾å¤çª 35 å·ãç¨ããï¼Generic Timer ã¯27çªã§ï¼å²è¾¼ã¿ã¯0çªããã®çªå·ãå²ãä»ããã 36 ã¦ããï¼ 30 IRQ および FIQ をカーネル管理の割込みとする. 31 割込みハンドラ番号と割込み番号は,例外発生時にGICC_IAR にセットされる例外番 32 号を用いる.Generic Timer は27番で,割込みは0番からの番号が割り付けられ 33 ている. 37 34 38 âå²è¾¼ã¿åªå 39 åº¦ã®æ®µéæ°ï¼TMIN_INTPRIã®å¤ï¼ï¼ãã®è¨å®æ¹æ³ 35 ○割込み優先度の段階数(TMIN_INTPRIの値),その設定方法 40 36 41 å²è¾¼ã¿åªå 42 åº¦ã®æ®µéæ°ã¯ï¼ã¿ã¼ã²ããä¾å鍿¯ã«ç°ãªãï¼ 43 ã«ã¼ãã«ç®¡çå 44 ã®å²è¾¼ã¿ã®æé«åªå 45 度ï¼TMIN_INTPRIï¼ã¯ã¿ã¼ã²ããä¾åé¨ã§è¨å®ããï¼ 37 割込み優先度の段階数は,ターゲット依存部毎に異なる. 38 カーネル管理内の割込みの最高優先度(TMIN_INTPRI)はターゲット依存部で設定する. 46 39 47 åå²è¾¼ã¿ã®å²è¾¼ã¿åªå 48 度ã¯ï¼CFG_INT ã§ TMIN_INTPRI 以ä¸ã®å¤ãæå®ããï¼ 40 各割込みの割込み優先度は,CFG_INT で TMIN_INTPRI 以上の値を指定する. 49 41 50 âdis_intã¨ena_intã®ãµãã¼ãã®æç¡ï¼ãã®å¶éäºé 42 ○dis_intとena_intのサポートの有無,その制限事項 43 44 dis_intとena_intをサポートする.制限事項は特にない. 45 46 ○CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性) 47 48 CFG_INTの制限事項はなく,ターゲット定義で使用可能な割込み属性は特にな 49 い. 50 51 ○カーネル管理外の割込み 52 53 カーネル管理外の割込みはサポートしない. 54 IRQ,FIQ共にカーネル管理の割込みとして扱う. 51 55 52 56 53 dis_intã¨ena_intããµãã¼ãããï¼å¶éäºé 54 ã¯ç¹ã«ãªãï¼ 57 (3-3) CPU例外処理に関する規定 55 58 56 âCFG_INTã®å¶éäºé 57 ã¨æ¡å¼µï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨ã§ããå²è¾¼ã¿å±æ§ï¼ 59 ○CPU例外ハンドラ番号 58 60 59 CFG_INTã®å¶éäºé 60 ã¯ãªãï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨å¯è½ãªå²è¾¼ã¿å±æ§ã¯ç¹ã«ãª 61 ãï¼ 61 ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状態(AArch32 or AArch64), 62 発生した例外の種類により,ジャンプ先となる例外ベクタ中のオフセットアドレスが異なる. 63 CPU例外ハンドラはこのジャンプ先のオフセットアドレスで区別することにし, 64 それぞれ異なるCPU例外ハンドラ番号を割り当てる. 62 65 63 âã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ 64 65 ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¯ãµãã¼ãããªãï¼ 66 IRQï¼FIQå 67 ±ã«ã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ã¨ãã¦æ±ãï¼ 68 69 70 (3-3) CPUä¾å¤å¦çã«é¢ããè¦å® 71 72 âCPUä¾å¤ãã³ãã©çªå· 73 74 ARMv8ã§ã¯ï¼ä¾å¤çºçæã®ä¾å¤ã¬ãã«(EL)ï¼ä½¿ç¨ã¹ã¿ãã¯ï¼å®è¡ç¶æ 75 (AArch32 or AArch64)ï¼ 76 çºçããä¾å¤ã®ç¨®é¡ã«ããï¼ã¸ã£ã³ãå 77 ã¨ãªãä¾å¤ãã¯ã¿ä¸ã®ãªãã»ããã¢ãã¬ã¹ãç°ãªãï¼ 78 CPUä¾å¤ãã³ãã©ã¯ãã®ã¸ã£ã³ãå 79 ã®ãªãã»ããã¢ãã¬ã¹ã§åºå¥ãããã¨ã«ãï¼ 80 ããããç°ãªãCPUä¾å¤ãã³ãã©çªå·ãå²ãå½ã¦ãï¼ 81 82 ä¾å¤çºçæã®ç¶æ 83 ä¾å¤ã®ç¨®é¡ ä¾å¤çªå· ãä¾å¤ãã¯ã¿å 84 é ããã®ãªãã»ãã 66 例外発生時の状態 例外の種類 例外番号 例外ベクタ先頭からのオフセット 85 67 AArch64, EL1t(EL1, SP_EL0) Synchronous 0 0x0000 86 68 AArch64, EL1t(EL1, SP_EL0) SError 1 0x0180 … … 92 74 AArch32, EL0 (EL0, SP_EL0) SError 7 0x0780 93 75 94 (3-4) CPU ããã¯ã»å²è¾¼ã¿ããã¯76 (3-4) CPUロック・割込みロック 95 77 96 CPUããã¯ã¯ï¼PSTATE.I ããã³ PSTATE.F ãå 97 ±ã« 1 ã«ãããã¨ã§å®ç¾ããï¼ 98 ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ããµãã¼ãããªãããï¼å 99 ¨å²è¾¼ã¿ããã¯ãã©ã°ã 100 CPUããã¯ã¨åæ§ã®å®è£ 101 ã§ããï¼ãã ã CPUããã¯ãã©ã°ã¨ã¯ç¬ç«ãããã©ã° 102 ã¨ãã¦å 103 ¨å²è¾¼ã¿ããã¯ãã©ã°ããµãã¼ãããï¼å 104 ·ä½çã«ã¯SIL_LOC_INTå¼ã³åºã 105 æã«Iããã³Fãã©ã°ã®ç¶æ 106 ãè¨æ¶ãã¦ããï¼SIL_UNL_INT ã§å 107 ã®ç¶æ 108 ã« 109 æ»ãã¦ããï¼ 78 CPUロックは,PSTATE.I および PSTATE.F を共に 1 にすることで実現する. 79 カーネル管理外の割込みをサポートしないため,全割込みロックフラグも 80 CPUロックと同様の実装である.ただし CPUロックフラグとは独立したフラグ 81 として全割込みロックフラグをサポートする.具体的にはSIL_LOC_INT呼び出し 82 時にIおよびFフラグの状態を記憶しておき,SIL_UNL_INT で元の状態に 83 戻している. 110 84 111 (3-5) æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç 112 §ã«é¢ããè¦å® 85 (3-5) 性能評価用システム時刻の参照に関する規定 113 86 114 get_utm ããµãã¼ãããªãï¼87 get_utmをサポートしない. 115 88 116 89 117 (3-6) ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã®åæåå 118 容 90 (3-6) スタートアップルーチンでの初期化内容 119 91 120 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ãåæã¨ããããã»ããµã®ç¶æ 121 ã¯ããã»ããµã«ããç°ãªãããï¼ 122 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã¯ã¿ã¼ã²ããä¾åé¨ã«é 123 ç½®ãã¦ããï¼ 92 スタートアップルーチンが前提とするプロセッサの状態はプロセッサにより異なるため, 93 スタートアップルーチンはターゲット依存部に配置している. 124 94 125 ä¾ã¨ãã¦QEMU VIRT ãã¼ãã®å ´åã¯ä»¥ä¸ã®ããã«ãªã£ã¦ããï¼ 126 ã»ä¾å¤ã¬ãã«ã¯æ¢å®ã§EL1127 ã»ä½¿ç¨ã¹ã¿ãã¯ã¯(EL1ã®å ´åï¼) SP_EL1128 ã»èµ·åç´å¾ã¯PSTATEã®Fããã³Iã¯1ï¼IRQ,FIQç¦æ¢ï¼ 95 例としてQEMU VIRT ボードの場合は以下のようになっている. 96 ・例外レベルは既定でEL1 97 ・使用スタックは(EL1の場合,) SP_EL1 98 ・起動直後はPSTATEのFおよびIは1(IRQ,FIQ禁止) 129 99 130 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã¯ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæåï¼ãã¯ã¿ãã¼ãã«ã¢ãã¬ã¹ã®è¨å®ï¼ 131 ã¡ã¢ãªã®åæåãªã©ã®å¿ 132 è¦ãªå¦çãè¡ãï¼sta_ker ãå¼ã³åºãï¼ 100 スタートアップルーチンではスタックポインタの初期化,ベクタテーブルアドレスの設定, 101 メモリの初期化などの必要な処理を行い,sta_ker を呼び出す. 133 102 134 103 135 (4) ã¿ã¤ããã©ã¤ãé¢é£ã®æ 136 å ± 104 (4) タイマドライバ関連の情報 137 105 138 ã«ã¼ãã«ã®ã¿ã¤ã ãã£ãã¯ã¨ãã¦ï¼Generic Timer ã使ç¨ããï¼ 139 ãã£ãã¯å¨æã¯1msecã¨ããï¼ 106 カーネルのタイムティックとして,Generic Timer を使用する, 107 ティック周期は1msecとする. 140 108 141 109 142 (5) ã¿ã¼ã²ããä¾åé¨ã§ã®è¨å®é 143 ç® 110 (5) ターゲット依存部での設定項目 144 111 145 ã¿ã¼ã²ããä¾åé¨ã§ã¯ä»¥ä¸ã®ãã¯ããå®ç¾©ããå¿ 146 è¦ãããï¼ 112 ターゲット依存部では以下のマクロを定義する必要がある. 147 113 148 ã»TMAX_INTNO : å²è¾¼ã¿çªå·ã®æå¤§å¤(é常ã®å²è¾¼ã¿çªå· + 15) 149 ã»TMIN_INTPRI : å²è¾¼ã¿åªå 150 åº¦ã®æå°å¤ï¼æé«å¤ï¼ 151 ã»TIC_NUME : ã¿ã¤ã ãã£ãã¯ã®å¨æã®åå 152 ã»TIC_DENO : ã¿ã¤ã ãã£ãã¯ã®å¨æã®åæ¯ 153 ã»INTPRI_TIMER : ã¿ã¤ãå²è¾¼ã¿å²è¾¼ã¿åªå 154 度 155 ã»INTATR_TIMER : ã¿ã¤ãå²è¾¼ã¿ã®å²è¾¼ã¿å±æ§ 156 ã»DEFAULT_ISTKSZ : ã¹ã¿ãã¯ãµã¤ãºï¼16byteåä½ã§æå®ï¼ 114 ・TMAX_INTNO : 割込み番号の最大値(通常の割込み番号 + 15) 115 ・TMIN_INTPRI : 割込み優先度の最小値(最高値) 116 ・TIC_NUME : タイムティックの周期の分子 117 ・TIC_DENO : タイムティックの周期の分母 118 ・INTPRI_TIMER : タイマ割込み割込み優先度 119 ・INTATR_TIMER : タイマ割込みの割込み属性 120 ・DEFAULT_ISTKSZ : スタックサイズ(16byte単位で指定) 157 121 158 122 159 (6) ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ123 (6) ディレクトリ構成・ファイル構成 160 124 ./arch/arm64/ 161 125 ./MANIFEST … … 185 149 ./prc_user.txt 186 150 187 (12) ãã¼ã¸ã§ã³å±¥æ´151 (12) バージョン履歴 188 152 189 153 2018/05/30 190 ã»æåã®ãªãªã¼ã¹154 ・最初のリリース -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/build_ssp.sh
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/install.sh
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/E_PACKAGE
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/MANIFEST
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/Makefile.target
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 # 2 # Makefile ã®ã¿ã¼ã²ããä¾åé¨(QEMU-VIRTç¨)2 # Makefile のターゲット依存部(QEMU-VIRT用) 3 3 # 4 4 5 5 # 6 # ãã¼ãåï¼ããã»ããµåï¼éçºç°å¢åã®å®ç¾©6 # ボード名,プロセッサ名,開発環境名の定義 7 7 # 8 8 BOARD = qemu_virt … … 11 11 12 12 # 13 # GNU éçºç°å¢ã®ã¿ã¼ã²ããã¢ã¼ããã¯ãã£ã®å®ç¾©13 # GNU開発環境のターゲットアーキテクチャの定義 14 14 # 15 15 GCC_TARGET = aarch64-elf 16 16 17 17 # 18 # ã³ã³ãã¤ã«ãªãã·ã§ã³18 # コンパイルオプション 19 19 # 20 20 COPTS := $(COPTS) -Werror -mgeneral-regs-only -ggdb3 -fno-pic -fno-builtin -mstrict-align -mtune=cortex-a53 -mcpu=cortex-a53+nofp #-mfix-cortex-a53-835769 -mfix-cortex-a53-843419 … … 25 25 26 26 # 27 # ã·ã¹ãã ãµã¼ãã¹ã«é¢ããå®ç¾©27 # システムサービスに関する定義 28 28 # 29 29 SYSSVC_DIRS := $(SYSSVC_DIRS) … … 34 34 35 35 # 36 # ã«ã¼ãã«ã«é¢ããå®ç¾©36 # カーネルに関する定義 37 37 # 38 38 KERNEL_DIRS := $(KERNEL_DIRS) $(TARGETDIR) … … 42 42 43 43 # 44 # ãã¬ã¼ã¹ãã°ã«é¢ããè¨å®44 # トレースログに関する設定 45 45 # 46 46 ifeq ($(ENABLE_TRACE),true) … … 51 51 52 52 # 53 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©53 # コンフィギュレータ関係の変数の定義 54 54 # 55 55 CFG_TABS := $(CFG_TABS) --symval-table $(TARGETDIR)/target_sym.def … … 59 59 60 60 # 61 # -Wall ãªãã·ã§ã³ã®çç¥62 # -Wall ã追å ããããªãå ´åã« true ã«å®ç¾©ãã61 # -Wall オプションの省略 62 # -Wallを追加したくない場合に true に定義する 63 63 # 64 64 #OMIT_WARNING_ALL = true 65 65 66 66 # 67 # æé©åãã©ã°ã®çç¥68 # -O2 ã追å ããããªãå ´åã« true ã«å®ç¾©ãã67 # 最適化フラグの省略 68 # -O2を追加したくない場合に true に定義する 69 69 # 70 70 #OMIT_OPTIMIZATION = true 71 71 72 72 # 73 # ãªã³ã«ã¹ã¯ãªããã®å®ç¾©73 # リンカスクリプトの定義 74 74 # 75 75 LDSCRIPT = $(SRCDIR)/target/$(BOARD)_$(TOOL)/$(BOARD).ld 76 76 77 77 # 78 # åã»ã¯ã·ã§ã³ã®å 79 é çªå°ã®æå® 78 # 各セクションの先頭番地の指定 80 79 # 81 80 #TEXT_START_ADDRESS = … … 83 82 84 83 # 85 # ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã«é¢ããå®ç¾©84 # スタートアップモジュールに関する定義 86 85 # 87 86 88 # ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«87 # スタートアップモジュール 89 88 START_OBJS = start.o 90 # ãªã³ã«ã¹ã¯ãªããã«ãSTARTUP(start.o)ããè¨è¿°ããå ´åï¼91 # ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã®ååãSTART_OBJS ã®ä»£ããã« HIDDEN_OBJS ã§å®ç¾©ããï¼89 # リンカスクリプトに「STARTUP(start.o)」を記述した場合, 90 # スタートアップモジュールの名前をSTART_OBJS の代わりに HIDDEN_OBJS で定義する. 92 91 HIDDEN_OBJS = 93 92 94 93 95 # ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã®ã³ã³ãã¤ã«ã«ã¼ã«94 # スタートアップモジュールのコンパイルルール 96 95 $(START_OBJS): %.o: %.S 97 96 $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $< … … 100 99 101 100 102 # ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã®ä¾åé¢ä¿ä½æã«ã¼ã«101 # スタートアップモジュールの依存関係作成ルール 103 102 $(START_OBJS:.o=.d): %.d: %.S 104 103 @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \ … … 109 108 110 109 # 111 # ä¾åé¢ä¿ã®å®ç¾©110 # 依存関係の定義 112 111 # 113 112 cfg1_out.c: $(TARGETDIR)/target_sym.def … … 116 115 117 116 # 118 # ãã®ä»117 # その他 119 118 # 120 119 CLEAN_FILES := $(CLEAN_FILES) … … 123 122 124 123 # 125 # ããã»ããµä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã124 # プロセッサ依存部のインクルード 126 125 # 127 126 include $(SRCDIR)/arch/$(PRC)_$(TOOL)/Makefile.prc -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/qemu_virt.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 9 9 * Nagoya Municipal Industrial Research Institute, 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 * QEMU VIRT ã¿ã¼ã²ããã®ãã¼ãã¦ã§ã¢è³æºå®ç¾©44 * QEMU VIRT ターゲットのハードウェア資源定義 60 45 */ 61 46 … … 64 49 65 50 /* 66 * å²è¾¼ã¿çªå·ï¼intnoï¼ã®å®ç¾©51 * 割込み番号(intno)の定義 67 52 */ 68 #define TINTNO_TIMER 27 /* é«åè§£è½ã¿ã¤ã*/69 #define TINTNO_UART0 33 /* SIO ãã¼ã*/53 #define TINTNO_TIMER 27 /* 高分解能タイマ */ 54 #define TINTNO_UART0 33 /* SIOポート */ 70 55 71 56 /* … … 78 63 79 64 /* 80 * å²è¾¼ã¿çªå·ã®æå°å¤ã¨æå¤§å¤65 * 割込み番号の最小値と最大値 81 66 */ 82 67 #define TMIN_INTNO UINT_C(0) … … 84 69 85 70 /* 86 * UART ã¬ã¸ã¹ã¿ã®ãã¼ã¹ã¢ãã¬ã¹71 * UARTレジスタのベースアドレス 87 72 */ 88 73 #define VIRT_UART0_BASE (0x09000000) 89 74 90 75 /* 91 * ãã¼ã¬ã¼ãè¨å®ï¼38400bpsï¼76 * ボーレート設定(38400bps) 92 77 */ 93 78 #define VIRT_UART_IBRD_38400 0x27U -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/qemu_virt.ld
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/start.S
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 10 10 * Nagoya Municipal Industrial Research Institute, JAPAN 11 11 * 12 * ä¸è¨è使¨©è 13 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 14 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 15 * å¤ã»åé 16 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 17 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 18 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 19 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 20 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 21 * ç¨ã§ããå½¢ã§åé 22 å¸ããå ´åã«ã¯ï¼åé 23 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 24 * è 25 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 26 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 27 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 28 * ç¨ã§ããªãå½¢ã§åé 29 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 30 * ã¨ï¼ 31 * (a) åé 32 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 33 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 34 * 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 35 * (b) åé 36 å¸ã®å½¢æ 37 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 38 * å ±åãããã¨ï¼ 39 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 40 * 害ãããï¼ä¸è¨è使¨©è 41 ããã³TOPPERSããã¸ã§ã¯ããå 42 責ãããã¨ï¼ 43 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 44 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 45 ããã³TOPPERSããã¸ã§ã¯ãã 46 * å 47 責ãããã¨ï¼ 12 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 14 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 17 * スコード中に含まれていること. 18 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 19 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 20 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 21 * の無保証規定を掲載すること. 22 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 23 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 24 * と. 25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 26 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 28 * 報告すること. 29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 30 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 31 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 32 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 33 * 免責すること. 48 34 * 49 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 50 ã 51 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 52 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 53 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 54 * ã®è²¬ä»»ãè² ããªãï¼ 35 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 36 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 37 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 38 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 39 * の責任を負わない. 55 40 * 56 41 * $Id$ … … 65 50 .global vectors 66 51 start: 67 msr daifset, #3 // å²è¾¼ã¿ç¦æ¢(å²è¾¼ã¿ããã¯ç¸å½)52 msr daifset, #3 //割込み禁止(割込みロック相当) 68 53 69 54 /* 70 * ä¾å¤ãã¯ã¿ãã¼ãã«ã®ãã¼ã¹ã¢ãã¬ã¹è¨å®55 * 例外ベクタテーブルのベースアドレス設定 71 56 */ 72 57 ldr x0, =vectors … … 74 59 75 60 /* 76 * ã¹ã¿ãã¯ãã¤ã³ã¿ã¨ãã¬ã¼ã ãã¤ã³ã¿ã®åæå61 * スタックポインタとフレームポインタの初期化 77 62 */ 78 63 ldr x0, =_kernel_istkpt // setup stack -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_cfg1_out.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 /* 2 * cfg1_out.cããªã³ã¯ããããã«å¿ 3 è¦ãªã¹ã¿ãã®å®ç¾© 2 * cfg1_out.cをリンクするために必要なスタブの定義 4 3 */ 5 4 6 5 /* 7 * ã³ã¢ä¾åã®ã¹ã¿ãã®å®ç¾©6 * コア依存のスタブの定義 8 7 */ 9 8 #include "arm64_gcc/prc_cfg1_out.h" -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ã¿ã¼ã²ããä¾åé¨3 # パス3の生成スクリプトのターゲット依存部 4 4 # 5 5 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_config.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 11 11 * Nagoya Municipal Industrial Research Institute, JAPAN 12 12 * 13 * ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 * å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 * è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 * ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 * ã¨ï¼ 32 * (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 * 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 * (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 * å ±åãããã¨ï¼ 40 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 * 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 * å 48 責ãããã¨ï¼ 13 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 * スコード中に含まれていること. 19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 * の無保証規定を掲載すること. 23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 * と. 26 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 * 報告すること. 30 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 * 免責すること. 49 35 * 50 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 * ã®è²¬ä»»ãè² ããªãï¼ 36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 * の責任を負わない. 56 41 * 57 42 */ 58 43 59 44 /* 60 * ã¿ã¼ã²ããä¾åã¢ã¸ã¥ã¼ã«(QEMU_VIRTç¨)45 * ターゲット依存モジュール(QEMU_VIRT用) 61 46 */ 62 47 #include "kernel_impl.h" … … 66 51 67 52 /* 68 * ã¿ã¼ã²ããä¾åé¨ãåæåå¦ç53 * ターゲット依存部 初期化処理 69 54 */ 70 55 void target_initialize(void) 71 56 { 72 57 /* 73 * ããã»ããµä¾åé¨ã®åæå58 * プロセッサ依存部の初期化 74 59 */ 75 60 prc_initialize(); … … 77 62 78 63 /* 79 * ã¿ã¼ã²ããä¾åé¨ çµäºå¦ç64 * ターゲット依存部 終了処理 80 65 */ 81 66 void target_exit(void) 82 67 { 83 /* ããã»ããµä¾åé¨ã®çµäºå¦ç*/68 /* プロセッサ依存部の終了処理 */ 84 69 prc_terminate(); 85 70 } 86 71 87 72 /* 88 * ã·ã¹ãã ãã°ã®ä½ã¬ãã«åºåã®ããã®æååºå73 * システムログの低レベル出力のための文字出力 89 74 */ 90 75 void target_fput_log(char c) -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_config.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 11 11 * Nagoya Municipal Industrial Research Institute, JAPAN 12 12 * 13 * ä¸è¨è使¨©è 14 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 15 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 16 * å¤ã»åé 17 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 18 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 19 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 20 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 21 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼åé 24 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 25 * è 26 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 27 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 28 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 29 * ç¨ã§ããªãå½¢ã§åé 30 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 31 * ã¨ï¼ 32 * (a) åé 33 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 35 * 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 * (b) åé 37 å¸ã®å½¢æ 38 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 39 * å ±åãããã¨ï¼ 40 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 41 * 害ãããï¼ä¸è¨è使¨©è 42 ããã³TOPPERSããã¸ã§ã¯ããå 43 責ãããã¨ï¼ 44 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 45 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 46 ããã³TOPPERSããã¸ã§ã¯ãã 47 * å 48 責ãããã¨ï¼ 13 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 15 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 18 * スコード中に含まれていること. 19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 20 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 21 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 22 * の無保証規定を掲載すること. 23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 24 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 25 * と. 26 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 27 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 28 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 29 * 報告すること. 30 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 31 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 32 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 33 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 34 * 免責すること. 49 35 * 50 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 51 ã 52 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 53 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 54 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 55 * ã®è²¬ä»»ãè² ããªãï¼ 36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 38 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 39 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 40 * の責任を負わない. 56 41 * 57 42 */ … … 61 46 62 47 /* 63 * ã¿ã¼ã²ããä¾åé¨ã¢ã¸ã¥ã¼ã«(QEMU-VIRTç¨)48 * ターゲット依存部モジュール(QEMU-VIRT用) 64 49 * 65 * ã«ã¼ãã«ã®ã¿ã¼ã²ããä¾åé¨ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ï¼66 * kernel_impl.h ã®ã¿ã¼ã²ããä¾åé¨ã®ä½ç½®ä»ãã¨ãªãï¼50 * カーネルのターゲット依存部のインクルードファイル. 51 * kernel_impl.hのターゲット依存部の位置付けとなす. 67 52 */ 68 53 … … 70 55 71 56 /* 72 * ãã¬ã¼ã¹ãã°ã«é¢ããè¨å®57 * トレースログに関する設定 73 58 */ 74 59 #ifdef TOPPERS_ENABLE_TRACE … … 77 62 78 63 /* 79 * ããã©ã«ãã®éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é åã®å®ç¾©80 * 16byte åä½ã§åå¾ãããï¼64 * デフォルトの非タスクコンテキスト用のスタック領域の定義 65 * 16byte単位で取得される. 81 66 */ 82 67 #define DEFAULT_ISTKSZ (0x4000 / 16) /* 16KByte */ … … 85 70 86 71 /* 87 * ã¿ã¼ã²ããã·ã¹ãã ä¾åã®åæå72 * ターゲットシステム依存の初期化 88 73 */ 89 74 extern void target_initialize(void); 90 75 91 76 /* 92 * ã¿ã¼ã²ããã·ã¹ãã ã®çµäº77 * ターゲットシステムの終了 93 78 * 94 * ã·ã¹ãã ãçµäºããæã«ä½¿ãï¼79 * システムを終了する時に使う. 95 80 */ 96 81 extern void target_exit(void) NoReturn; 97 82 98 83 /* 99 * 対象ã¨ããããã»ããµçªå·84 * 対象とするプロセッサ番号 100 85 */ 101 86 #define ARM_PRC_INDEX (0) … … 104 89 105 90 /* 106 * ãããä¾åã¢ã¸ã¥ã¼ã«ï¼ARM64ç¨ï¼91 * チップ依存モジュール(ARM64用) 107 92 */ 108 93 #include "arm64_gcc/prc_config.h" -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_kernel.cfg
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_kernel.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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 */ 55 40 56 41 /* 57 * kernel.h ã®ã¿ã¼ã²ããä¾åé¨(QEMU-VIRTç¨)42 * kernel.hのターゲット依存部(QEMU-VIRT用) 58 43 * 59 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼kernel.hã§ã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡60 * ã¤ã«ããç´æ¥ã¤ã³ã¯ã«ã¼ããããã¨ã¯ãªãï¼ãã®ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ã61 * ããåã«ï¼t_stddef.hãã¤ã³ã¯ã«ã¼ããããã®ã§ï¼ãããã«ä¾åãã¦ãã62 * ãï¼44 * このインクルードファイルは,kernel.hでインクルードされる.他のファ 45 * イルから直接インクルードすることはない.このファイルをインクルード 46 * する前に,t_stddef.hがインクルードされるので,それらに依存してもよ 47 * い. 63 48 */ 64 49 … … 67 52 68 53 /* 69 * å²è¾¼ã¿åªå 70 度ã®ç¯å² 54 * 割込み優先度の範囲 71 55 */ 72 #define TMIN_INTPRI (-15) /* å²è¾¼ã¿åªå 73 åº¦ã®æå°å¤ï¼æé«å¤ï¼*/ 74 #define TMAX_INTPRI (-1) /* å²è¾¼ã¿åªå 75 åº¦ã®æå¤§å¤ï¼æä½å¤ï¼ */ 56 #define TMIN_INTPRI (-15) /* 割込み優先度の最小値(最高値)*/ 57 #define TMAX_INTPRI (-1) /* 割込み優先度の最大値(最低値) */ 76 58 77 59 /* 78 * ã¿ã¤ã ãã£ãã¯ã®å®ç¾©60 * タイムティックの定義 79 61 */ 80 #define TIC_NUME 1U /* ã¿ã¤ã ãã£ãã¯ã®å¨æã®åå*/81 #define TIC_DENO 1U /* ã¿ã¤ã ãã£ãã¯ã®å¨æã®åæ¯*/62 #define TIC_NUME 1U /* タイムティックの周期の分子 */ 63 #define TIC_DENO 1U /* タイムティックの周期の分母 */ 82 64 83 65 /* 84 * ããã»ããµã§å 85 ±éãªå®ç¾© 66 * プロセッサで共通な定義 86 67 */ 87 68 #include "arm64_gcc/prc_kernel.h" -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹2ã®çæã¹ã¯ãªããã®ã¿ã¼ã²ããä¾åé¨3 # パス2の生成スクリプトのターゲット依存部 4 4 # 5 5 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_rename.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_rename.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_serial.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 10 10 * Nagoya Municipal Industrial Research Institute, JAPAN 11 11 * 12 * ä¸è¨è使¨©è 13 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 14 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 15 * å¤ã»åé 16 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 17 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 18 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 19 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 20 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 21 * ç¨ã§ããå½¢ã§åé 22 å¸ããå ´åã«ã¯ï¼åé 23 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 24 * è 25 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 26 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 27 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 28 * ç¨ã§ããªãå½¢ã§åé 29 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 30 * ã¨ï¼ 31 * (a) åé 32 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 33 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 34 * 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 35 * (b) åé 36 å¸ã®å½¢æ 37 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 38 * å ±åãããã¨ï¼ 39 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 40 * 害ãããï¼ä¸è¨è使¨©è 41 ããã³TOPPERSããã¸ã§ã¯ããå 42 責ãããã¨ï¼ 43 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 44 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨è使¨©è 45 ããã³TOPPERSããã¸ã§ã¯ãã 46 * å 47 責ãããã¨ï¼ 48 * 49 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 50 ã 51 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 52 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 53 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 54 * ã®è²¬ä»»ãè² ããªãï¼ 55 * 56 */ 57 58 /* 59 * ã·ãªã¢ã«ãã©ã¤ã 12 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 14 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 15 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 16 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 17 * スコード中に含まれていること. 18 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 19 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 20 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 21 * の無保証規定を掲載すること. 22 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 23 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 24 * と. 25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 26 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 28 * 報告すること. 29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 30 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 31 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 32 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 33 * 免責すること. 34 * 35 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 36 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 37 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 38 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 39 * の責任を負わない. 40 * 41 */ 42 43 /* 44 * シリアルドライバ 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ã¬ã¸ã¹ã¿è¨å®å¤52 * レジスタ設定値 68 53 */ 69 54 #define PORT2SIOPID(x) ((x) + 1) … … 83 68 84 69 /* 85 * éä¿¡ãããã¡ã«ç©ºãããããï¼70 * 送信バッファに空きがあるか? 86 71 */ 87 72 Inline bool_t … … 92 77 93 78 /* 94 * åä¿¡ãããã¡ã«æåããããï¼79 * 受信バッファに文字があるか? 95 80 */ 96 81 Inline bool_t … … 101 86 102 87 /* 103 * åä¿¡ããæåã®ååºã88 * 受信した文字の取出し 104 89 */ 105 90 Inline char … … 110 95 111 96 /* 112 * éä¿¡ããæåã®æ¸è¾¼ã¿97 * 送信する文字の書込み 113 98 */ 114 99 Inline void … … 120 105 121 106 /* 122 * ã¿ã¼ã²ããã®ã·ãªã¢ã«åæå107 * ターゲットのシリアル初期化 123 108 */ 124 109 void target_low_output_init(ID siopid) … … 130 115 131 116 /* 132 * UART ããã£ã¹ã¨ã¼ãã«117 * UARTをディスエーブル 133 118 */ 134 119 sil_wrw_mem(UART_CR(inib->baseAddress), 0U); 135 120 136 121 /* 137 * ã¨ã©ã¼ãã©ã°ãã¯ãªã¢122 * エラーフラグをクリア 138 123 */ 139 124 sil_wrw_mem(UART_ECR(inib->baseAddress), 0U); 140 125 141 126 /* 142 * å²è¾¼ã¿ã¹ãã¼ã¿ã¹ãã¯ãªã¢127 * 割込みステータスをクリア 143 128 */ 144 129 sil_wrw_mem(UART_ICR(inib->baseAddress), 0U); … … 147 132 148 133 /* 149 * FIFO ã空ã«ãã134 * FIFOを空にする 150 135 */ 151 136 while (sio_getready(siopcb)) { … … 154 139 155 140 /* 156 * ãã¼ã¬ã¼ãã¨éä¿¡è¦æ ¼ãè¨å®141 * ボーレートと通信規格を設定 157 142 */ 158 143 sil_wrw_mem(UART_IBRD(inib->baseAddress), inib->ibrd); … … 161 146 162 147 /* 163 * UART ãã¤ãã¼ãã«148 * UARTをイネーブル 164 149 */ 165 150 sil_wrw_mem(UART_CR(inib->baseAddress), … … 168 153 169 154 /* 170 * SIO åæå155 * SIO初期化 171 156 */ 172 157 void sio_initialize(intptr_t exinf) … … 181 166 182 167 /* 183 * ã·ãªã¢ã«ãªã¼ãã³168 * シリアルオープン 184 169 */ 185 170 SIOPCB *sio_opn_por(ID siopid, intptr_t exinf) … … 196 181 target_low_output_init(siopid); 197 182 198 // åä¿¡ã³ã¼ã«ããã¯è¨±å¯183 // 受信コールバック許可 199 184 sio_ena_cbr(siopcb, SIO_RDY_RCV); 200 185 … … 203 188 204 189 /* 205 * ã·ãªã¢ã«ã¯ãã¼ãº190 * シリアルクローズ 206 191 */ 207 192 void sio_cls_por(SIOPCB *siopcb) 208 193 { 209 194 /* 210 * UART ããã£ã¹ã¨ã¼ãã«195 * UARTをディスエーブル 211 196 */ 212 197 sil_wrw_mem(UART_CR(siopcb->inib->baseAddress), 0U); … … 214 199 215 200 /* 216 * å²è¾¼ã¿ãã³ãã©201 * 割込みハンドラ 217 202 */ 218 203 void sio_isr(intptr_t exinf) … … 222 207 if (sio_getready(siopcb)) { 223 208 /* 224 * åä¿¡éç¥ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼209 * 受信通知コールバックルーチンを呼び出す. 225 210 */ 226 211 sio_irdy_rcv(siopcb->exinf); … … 228 213 if (sio_putready(siopcb)) { 229 214 /* 230 * éä¿¡å¯è½ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼215 * 送信可能コールバックルーチンを呼び出す. 231 216 */ 232 217 sio_irdy_snd(siopcb->exinf); … … 235 220 236 221 /* 237 * 1 æåéä¿¡222 * 1文字送信 238 223 */ 239 224 bool_t sio_snd_chr(SIOPCB *siopcb, char c) … … 247 232 248 233 /* 249 * 1 æååä¿¡234 * 1文字受信 250 235 */ 251 236 int_t sio_rcv_chr(SIOPCB *siopcb) … … 258 243 259 244 /* 260 * ã³ã¼ã«ããã¯ã®è¨±å¯245 * コールバックの許可 261 246 */ 262 247 void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn) … … 280 265 281 266 /* 282 * ã³ã¼ã«ããã¯ã®ç¦æ¢267 * コールバックの禁止 283 268 */ 284 269 void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn) … … 302 287 303 288 /* 304 * 1 æååºåï¼ãã¼ãªã³ã°ã§ã®åºåï¼289 * 1文字出力(ポーリングでの出力) 305 290 */ 306 291 void sio_pol_snd_chr(char c, ID siopid) -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_serial.cfg
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 1 1 /* 2 * SIO ãã©ã¤ãï¼CQ-FRK-FM3ç¨ï¼ã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«2 * SIOドライバ(CQ-FRK-FM3用)のコンフィグレーションファイル 3 3 */ 4 4 -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_serial.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, 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 */ 55 40 56 41 /* 57 * ã·ãªã¢ã«I/Oããã¤ã¹(SIO)ãã©ã¤ã42 * シリアルI/Oデバイス(SIO)ドライバ 58 43 */ 59 44 … … 62 47 63 48 /* 64 * SIO ã®å²è¾¼ã¿è¨å®49 * SIOの割込み設定 65 50 */ 66 #define INTNO_SIO TINTNO_UART0 // å²è¾¼ã¿çªå· 67 #define INTATR_SIO TA_NULL // å²è¾¼ã¿å±æ§ 68 #define INTPRI_SIO (-2) // å²è¾¼ã¿åªå 69 度 51 #define INTNO_SIO TINTNO_UART0 // 割込み番号 52 #define INTATR_SIO TA_NULL // 割込み属性 53 #define INTPRI_SIO (-2) // 割込み優先度 70 54 71 55 /* 72 * ã³ã¼ã«ããã¯ã«ã¼ãã³ã®èå¥çªå·56 * コールバックルーチンの識別番号 73 57 */ 74 #define SIO_RDY_SND 1U /* éä¿¡å¯è½ã³ã¼ã«ããã¯*/75 #define SIO_RDY_RCV 2U /* åä¿¡éç¥ã³ã¼ã«ããã¯*/58 #define SIO_RDY_SND 1U /* 送信可能コールバック */ 59 #define SIO_RDY_RCV 2U /* 受信通知コールバック */ 76 60 77 61 #ifndef TOPPERS_MACRO_ONLY 78 62 79 63 /* 80 * ã·ãªã¢ã«ãã¼ãã®åæåãããã¯64 * シリアルポートの初期化ブロック 81 65 */ 82 66 typedef const struct tag_SIOPINIB { … … 88 72 89 73 /* 90 * ã·ãªã¢ã«ãã¼ãã®ç®¡çãããã¯74 * シリアルポートの管理ブロック 91 75 */ 92 76 typedef struct sio_port_control_block { … … 96 80 97 81 /* 98 * SIO åæå82 * SIO初期化 99 83 */ 100 84 extern void sio_initialize(intptr_t exinf); 101 85 102 86 /* 103 * ã·ãªã¢ã«ãªã¼ãã³87 * シリアルオープン 104 88 */ 105 89 extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf); 106 90 107 91 /* 108 * ã·ãªã¢ã«ã¯ãã¼ãº92 * シリアルクローズ 109 93 */ 110 94 extern void sio_cls_por(SIOPCB *p_siopcb); 111 95 112 96 /* 113 * å²è¾¼ã¿ãã³ãã©97 * 割込みハンドラ 114 98 */ 115 99 extern void sio_isr(intptr_t exinf); 116 100 117 101 /* 118 * 1 æåéä¿¡102 * 1文字送信 119 103 */ 120 104 extern bool_t sio_snd_chr(SIOPCB *siopcb, char c); 121 105 122 106 /* 123 * 1 æååä¿¡107 * 1文字受信 124 108 */ 125 109 extern int_t sio_rcv_chr(SIOPCB *siopcb); 126 110 127 111 /* 128 * ã³ã¼ã«ããã¯ã®è¨±å¯112 * コールバックの許可 129 113 */ 130 114 extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn); 131 115 132 116 /* 133 * ã³ã¼ã«ããã¯ã®ç¦æ¢117 * コールバックの禁止 134 118 */ 135 119 extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn); 136 120 137 121 /* 138 * éä¿¡å¯è½ã³ã¼ã«ããã¯122 * 送信可能コールバック 139 123 */ 140 124 extern void sio_irdy_snd(intptr_t exinf); 141 125 142 126 /* 143 * åä¿¡éç¥ã³ã¼ã«ããã¯127 * 受信通知コールバック 144 128 */ 145 129 extern void sio_irdy_rcv(intptr_t exinf); 146 130 147 131 /* 148 * 1 æåéä¿¡ï¼ãã¼ãªã³ã°ã§ã®åºåï¼132 * 1文字送信(ポーリングでの出力) 149 133 */ 150 134 extern void sio_pol_snd_chr(char c, ID siopid); 151 135 152 136 /* 153 * ä½ã¬ãã«åºååæå137 * 低レベル出力初期化 154 138 */ 155 139 extern void target_low_output_init(ID siopid); -
Property svn:mime-type
set to
-
ssp_aarch64/trunk/qemu_virt_gcc/target_sil.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, JAPAN 9 9 * 10 * ä¸è¨è使¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºã -
Property svn:mime-type
set to