Changeset 356 for ssp_aarch64/trunk/arm64_gcc/gic_support.S
- Timestamp:
- Jun 8, 2018, 11:24:32 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.