- Timestamp:
- Apr 17, 2019, 12:13:00 PM (4 years ago)
- Location:
- ssp_rpi3/trunk
- Files:
-
- 73 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_rpi3/trunk/arch/arm64_gcc/MANIFEST
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/MANIFEST
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/Makefile.chip
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 # 2 # Makefile ã®ãããä¾åé¨ï¼BCM2837ç¨ï¼2 # Makefile のチップ依存部(BCM2837用) 3 3 # 4 4 5 5 # 6 # ãã£ã¬ã¯ããªåã®å®ç¾©6 # ディレクトリ名の定義 7 7 # 8 8 CHIPDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/$(CHIP) 9 9 10 10 # 11 # ã³ã³ãã¤ã«ãªãã·ã§ã³11 # コンパイルオプション 12 12 # 13 13 COPTS := $(COPTS) -mtune=cortex-a53 -mcpu=cortex-a53 … … 18 18 19 19 # 20 # ã·ã¹ãã ãµã¼ãã¹ã«é¢ããå®ç¾©20 # システムサービスに関する定義 21 21 # 22 22 SYSSVC_DIRS := $(SYSSVC_DIRS) … … 27 27 28 28 # 29 # ã«ã¼ãã«ã«é¢ããå®ç¾©29 # カーネルに関する定義 30 30 # 31 31 KERNEL_DIRS := $(KERNEL_DIRS) $(CHIPDIR) … … 35 35 36 36 # 37 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©37 # コンフィギュレータ関係の変数の定義 38 38 # 39 39 CFG_TABS := $(CFG_TABS) --symval-table $(CHIPDIR)/chip_sym.def … … 43 43 44 44 # 45 # ä¾åé¢ä¿ã®å®ç¾©45 # 依存関係の定義 46 46 # 47 47 cfg1_out.c: $(CHIPDIR)/chip_sym.def … … 50 50 51 51 # 52 # ãã®ä»52 # その他 53 53 # 54 54 CLEAN_FILES := $(CLEAN_FILES) … … 56 56 57 57 # 58 # ARM64 ä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã58 # ARM64依存部のインクルード 59 59 # 60 60 include $(SRCDIR)/arch/$(CORE)_$(TOOL)/common/Makefile.core -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/bcm2837.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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$ … … 60 45 61 46 /* 62 * å²è¾¼ã¿çªå·ï¼intnoï¼ã®å®ç¾©47 * 割込み番号(intno)の定義 63 48 */ 64 49 // Core interrupts … … 104 89 105 90 /* 106 * å²è¾¼ã¿çªå·ã®æå°å¤ã¨æå¤§å¤91 * 割込み番号の最小値と最大値 107 92 */ 108 93 #define TMIN_INTNO UINT_C(0) … … 110 95 111 96 /* 112 * ã¡ã¢ãªããããI/Oã®ãã¼ã¹ã¢ãã¬ã¹97 * メモリマップドI/Oのベースアドレス 113 98 */ 114 99 #define MMIO_BASE 0x3F000000 115 100 116 101 /* 117 * å²è¾¼ã¿é¢é£ã¬ã¸ã¹ã¿102 * 割込み関連レジスタ 118 103 */ 119 104 #define IRQ_PEND_B 0x3f00b200 … … 154 139 155 140 /* 156 * UART ã¬ã¸ã¹ã¿ã®ãã¼ã¹ã¢ãã¬ã¹141 * UARTレジスタのベースアドレス 157 142 */ 158 143 #define RPI_UART0_BASE (MMIO_BASE + 0x00201000) 159 144 160 145 /* 161 * ãã¼ã¬ã¼ãè¨å®146 * ボーレート設定 162 147 */ 163 148 #define RPI_UART_IBRD_38400 0x27U // 38400bps … … 167 152 168 153 /* 169 * ã¡ã¼ã«ããã¯ã¹é¢é£154 * メールボックス関連 170 155 * https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface 171 156 */ … … 184 169 #define MBOX_REQUEST 0 185 170 186 /* ãã£ãã«*/171 /* チャネル */ 187 172 #define MBOX_CH_POWER 0 188 173 #define MBOX_CH_FB 1 … … 220 205 221 206 /* 222 * mailbox å¼ã³åºã223 * 注æï¼ç¬¬2弿°ã®ã¢ãã¬ã¹ã¯16ãã¤ãã¢ã©ã¤ã¡ã³ãã§ãããã¨207 * mailbox 呼び出し 208 * 注意:第2引数のアドレスは16バイトアライメントであること 224 209 */ 225 210 Inline int_t mbox_call(unsigned char ch, volatile uint32_t *mbox) … … 227 212 uint32_t r = (((uint32_t)((uint64_t)mbox) & ~0xF) | (ch & 0xF)); 228 213 229 // 使ããããã«ãªãã¾ã§å¾ 230 㤠214 // 使えるようになるまで待つ 231 215 do{ 232 216 Asm("nop"); 233 217 } while(sil_rew_mem((uint32_t *)MBOX_STATUS) & MBOX_FULL); 234 218 235 // ãã£ãã«ã®èå¥åãä»å ãã¦ã¡ãã»ã¼ã¸ã®ã¢ãã¬ã¹ãæ¸ãè¾¼ã¿219 // チャネルの識別子を付加してメッセージのアドレスを書き込み 236 220 sil_wrw_mem((uint32_t *)MBOX_WRITE , r); 237 221 238 222 while(1) { 239 // å¿çãããã¾ã§å¾ 240 㤠223 // 応答があるまで待つ 241 224 do{ 242 225 Asm("nop"); -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_cfg1_out.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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/common/core_cfg1_out.h" -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ãããä¾åé¨ï¼BCM2837ç¨ï¼3 # パス3の生成スクリプトのチップ依存部(BCM2837用) 4 4 # 5 5 IncludeTrb("arm64_gcc/common/core_check.trb") 6 6 7 7 # 8 # å²è¾¼ã¿ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯8 # 割込みハンドラテーブルに関するチェック 9 9 # 10 # DEF_INH ã§ç»é²ããå²è¾¼ã¿ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼ã³ã³ãã£11 # ã®ã¥ã¬ã¼ã¿ã§çæããå²è¾¼ã¿ãã³ãã©ãï¼default_int_handlerã®ãã§ãã¯ã¯12 # è¡ããªãï¼10 # DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ 11 # ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは 12 # 行わない. 13 13 # 14 14 inhinib_entry = SYMBOL("_kernel_inhinib_entry") … … 16 16 inthdr = PEEK(inhinib_entry, $sizeof_FP) 17 17 18 # å²è¾¼ã¿ãã³ãã©ã®å 19 é çªå°ã®ãã§ã㯠18 # 割込みハンドラの先頭番地のチェック 20 19 if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0 21 20 error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned") … … 29 28 30 29 # 31 # CPU ä¾å¤ãã³ãã©ãã¼ãã«ã«é¢ãããã§ãã¯30 # CPU例外ハンドラテーブルに関するチェック 32 31 # 33 # DEF_EXC ã§ç»é²ããCPUä¾å¤ãã³ãã©ã®ã¿ãã§ãã¯ããï¼éã«è¨ãã¨ï¼34 # default_exc_handler ã®ãã§ãã¯ã¯è¡ããªãï¼32 # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと, 33 # default_exc_handlerのチェックは行わない. 35 34 # 36 35 excinib_entry = SYMBOL("_kernel_excinib_entry") … … 38 37 exchdr = PEEK(excinib_entry, $sizeof_FP) 39 38 40 # CPUä¾å¤ãã³ãã©ã®å 41 é çªå°ã®ãã§ã㯠39 # CPU例外ハンドラの先頭番地のチェック 42 40 if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0 43 41 error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned") -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_config.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ãããä¾åå¦çï¼BCM2837ç¨ï¼ 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 * チップ依存処理(BCM2837用) 57 42 */ 58 43 #include <sil.h> … … 60 45 61 46 /* 62 * ããã»ããµã®å²è¾¼ã¿åªå 63 度 47 * プロセッサの割込み優先度 64 48 */ 65 49 PRI current_intpri; 66 50 67 51 /* 68 * ãããã®åæå52 * チップの初期化 69 53 */ 70 54 void … … 74 58 75 59 /* 76 * ARM64 ä¾åã®åæå60 * ARM64依存の初期化 77 61 */ 78 62 core_initialize(); 79 63 80 64 /* 81 * ã¢ã©ã¤ã¡ã³ããã§ãã¯æå¹65 * アライメントチェック有効 82 66 */ 83 67 tmp = (1<<3)|(1<<1); … … 85 69 86 70 /* 87 * å²è¾¼ã¿ãã¹ã¯ã®åæå71 * 割込みマスクの初期化 88 72 */ 89 73 sil_wrw_mem((uint32_t *)(DISABLE_IRQ_B), 0xffffffff); // basic interrupt … … 91 75 sil_wrw_mem((uint32_t *)(DISABLE_IRQ_2), 0xffffffff); // gpu2 92 76 93 // 使ç¨ããå²è¾¼ã¿ã®è¨±å¯77 // 使用する割込みの許可 94 78 chip_unmask_interrupt(0); 95 79 } 96 80 97 81 /* 98 * ãããã®çµäºå¦ç82 * チップの終了処理 99 83 */ 100 84 void … … 102 86 { 103 87 /* 104 * å²è¾¼ã¿ç¦æ¢88 * 割込み禁止 105 89 */ 106 90 chip_mask_interrupt(INT_IPM(TMIN_INTPRI)); … … 110 94 111 95 /* 112 * å²è¾¼ã¿è¦æ±ã©ã¤ã³å±æ§ã®è¨å®96 * 割込み要求ライン属性の設定 113 97 */ 114 98 void 115 99 x_config_int(INTNO intno, ATR intatr, PRI intpri) 116 100 { 117 // BCM283X ã¯ã¨ãã¸/ã¬ãã«ã®è¨å®ãå²è¾¼ã¿åªå 118 度ã®è¨å®æ©è½ãæããªã 101 // BCM283X はエッジ/レベルの設定や割込み優先度の設定機能を持たない 119 102 assert(VALID_INTNO(intno)); 120 103 assert(TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI); … … 122 105 123 106 /* 124 * çºçããå²è¾¼ã¿ã®åªå 125 度ã«å¿ãã¦å²è¾¼ã¿ããã¹ã¯ãã 126 * å²è¾¼ã¿ã®å 127 ¥å£å¦çããã³åæåå¦çããå¼ã³åºããã 128 * priï¼å²è¾¼ã¿è¦å ã®å²è¾¼ã¿åªå 129 度(å 130 é¨è¡¨ç¾) 107 * 発生した割込みの優先度に応じて割込みをマスクする 108 * 割込みの入口処理および初期化処理から呼び出される 109 * pri:割込み要因の割込み優先度(内部表現) 131 110 */ 132 111 void … … 144 123 145 124 /* 146 * å²è¾¼ã¿ã®ãã¹ã¯125 * 割込みのマスク 147 126 */ 148 127 // core interrupt(core timers) … … 182 161 183 162 /* 184 * ãã¹ã¯ããå²è¾¼ã¿ãå²è¾¼ã¿çºçåã®ç¶æ 185 ã«æ»ã 186 * ãã³ãã©å®è¡å¾ï¼åºå£å¦çã®å®è¡åã«å¼ã³åºããã 187 * priï¼å²è¾¼ã¿çºçåã®å²è¾¼ã¿åªå 188 度 163 * マスクした割込みを割込み発生前の状態に戻す 164 * ハンドラ実行後,出口処理の実行前に呼び出される 165 * pri:割込み発生前の割込み優先度 189 166 */ 190 167 void … … 202 179 203 180 /* 204 * ãã¹ã¯è§£é¤181 * マスク解除 205 182 */ 206 183 // core interrupt(core timers) -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_config.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ãããä¾åå¦ç(BCM2837ç¨) 58 * 59 * ãã®ããããã¡ã¤ã«ã¯ï¼target_config.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ã 60 * ããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ 61 * ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼ 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 * チップ依存処理(BCM2837用) 43 * 44 * このヘッダファイルは,target_config.h(または,そこからインクルード 45 * されるファイル)のみからインクルードされる. 46 * 他のファイルから直接インクルードしてはならない. 62 47 */ 63 48 … … 66 51 67 52 /* 68 * ãã¼ãã¦ã§ã¢å®ç¾©53 * ハードウェア定義 69 54 */ 70 55 #include "bcm2837.h" 71 56 72 57 /* 73 * å²è¾¼ã¿é¢é£ 74 */ 75 76 /* 77 * å²è¾¼ã¿åªå 78 度ã®å¤æ 79 */ 80 #define EXT_IPM(pri) (-pri) // å 81 é¨è¡¨ç¾ããå¤é¨è¡¨ç¾ã¸ 82 #define INT_IPM(ipm) (-ipm) // å¤é¨è¡¨ç¾ããå 83 é¨è¡¨ç¾ã¸ 84 85 /* 86 * TIPM_ENAALLï¼å²è¾¼ã¿åªå 87 度ãã¹ã¯å 88 ¨è§£é¤ï¼ã®å 89 é¨è¡¨ç¾ 58 * 割込み関連 59 */ 60 61 /* 62 * 割込み優先度の変換 63 */ 64 #define EXT_IPM(pri) (-pri) // 内部表現から外部表現へ 65 #define INT_IPM(ipm) (-ipm) // 外部表現から内部表現へ 66 67 /* 68 * TIPM_ENAALL(割込み優先度マスク全解除)の内部表現 90 69 */ 91 70 #define IIPM_ENAALL (0) 92 71 93 72 /* 94 * å²è¾¼ã¿çªå·ã®ç¯å²ã®å¤å®73 * 割込み番号の範囲の判定 95 74 */ 96 75 #define VALID_INTNO(intno) ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO)) … … 98 77 99 78 /* 100 * å²è¾¼ã¿ãã³ãã©ã®åºå 101 ¥å£å¦çã®çæãã¯ã 79 * 割込みハンドラの出入口処理の生成マクロ 102 80 */ 103 81 #define INT_ENTRY(inhno, inthdr) inthdr … … 107 85 108 86 /* 109 * CPUããã¯ç¶æ 110 ã¸ã®ç§»è¡ 87 * CPUロック状態への移行 111 88 */ 112 89 Inline void … … 120 97 121 98 /* 122 * CPUããã¯ç¶æ 123 ã®è§£é¤ 99 * CPUロック状態の解除 124 100 */ 125 101 Inline void … … 133 109 134 110 /* 135 * CPUããã¯ç¶æ 136 ã®åç 137 § 111 * CPUロック状態の参照 138 112 */ 139 113 Inline bool_t … … 156 130 157 131 /* 158 * ããã»ããµã®å²è¾¼ã¿åªå 159 度 160 * ãããã®å²è¾¼ã¿ã³ã³ããã¼ã©ã«ã¯å²è¾¼ã¿åªå 161 度ã«ããå¶å¾¡æ©è½ã 162 * å®è£ 163 ããã¦ããªãããï¼å²è¾¼ã¿åªå 164 åº¦ãæ ¼ç´ãã夿°ãç¨æãã 132 * プロセッサの割込み優先度 133 * チップの割込みコントローラには割込み優先度による制御機能が 134 * 実装されていないため,割込み優先度を格納する変数を用意する 165 135 */ 166 136 extern PRI current_intpri; 167 137 168 138 /* 169 * å²è¾¼ã¿ãã³ãã©ã®è¨å®139 * 割込みハンドラの設定 170 140 */ 171 141 Inline void … … 175 145 176 146 /* 177 * å²è¾¼ã¿ãã³ãã©å 178 ¥å£ã§å¿ 179 è¦ãªIRCæä½ 147 * 割込みハンドラ入口で必要なIRC操作 180 148 */ 181 149 Inline void … … 185 153 186 154 /* 187 * å²è¾¼ã¿ãã³ãã©ã®åºå£ã§å¿ 188 è¦ãªIRCæä½ 155 * 割込みハンドラの出口で必要なIRC操作 189 156 */ 190 157 Inline void … … 194 161 195 162 /* 196 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®å±æ§ã®è¨å®163 * 割込み要求ラインの属性の設定 197 164 */ 198 165 extern void x_config_int(INTNO intno, ATR intatr, PRI intpri); 199 166 200 167 /* 201 * å²è¾¼ã¿åªå 202 度ã«ãã¨ã¥ãå²è¾¼ã¿ã®ãã¹ã¯ 203 * å²è¾¼ã¿ã®å 204 ¥å£ã§ï¼åãä»ããå²è¾¼ã¿ã®å²è¾¼ã¿ã¬ãã«ã«å¿ã㦠205 * å²è¾¼ã¿ããã¹ã¯ãã 168 * 割込み優先度にもとづく割込みのマスク 169 * 割込みの入口で,受け付けた割込みの割込みレベルに応じて 170 * 割込みをマスクする 206 171 */ 207 172 extern void chip_mask_interrupt(PRI pri); 208 173 209 174 /* 210 * å²è¾¼ã¿ãã¹ã¯ã®è§£é¤211 * å²è¾¼ã¿ã®åºå£ã§ï¼åãä»ãç´åã®å²è¾¼ã¿ã¬ãã«ããã¨ã«212 * å²è¾¼ã¿ã®ãã¹ã¯ãè§£é¤ãã175 * 割込みマスクの解除 176 * 割込みの出口で,受け付け直前の割込みレベルをもとに 177 * 割込みのマスクを解除する 213 178 */ 214 179 extern void chip_unmask_interrupt(PRI pri); 215 180 216 181 /* 217 * å²è¾¼ã¿å 218 ¥å£ã®å²è¾¼ã¿æä½ï¼chip_support.Sï¼ 182 * 割込み入口の割込み操作(chip_support.S) 219 183 */ 220 184 extern void chip_int_entry(void); 221 185 222 186 /* 223 * å²è¾¼ã¿åªå 224 度ãã¼ãã«(kernel_cfg.c) 187 * 割込み優先度テーブル(kernel_cfg.c) 225 188 */ 226 189 extern const PRI intpri_table[]; 227 190 228 191 /* 229 * å²è¾¼ã¿ãã¹ã¯ãã¼ãã«(kernel_cfg.c)192 * 割込みマスクテーブル(kernel_cfg.c) 230 193 */ 231 194 extern const uint32_t iipm_mask_table[]; 232 195 233 196 /* 234 * å²è¾¼ã¿ãã³ãã©ãã¼ãã«(kernel_cfg.c)197 * 割込みハンドラテーブル(kernel_cfg.c) 235 198 */ 236 199 extern const INTHDR inh_table[]; … … 241 204 242 205 /* 243 * CPU ä¾å¤é¢é£244 */ 245 246 /* 247 * CPU ä¾å¤ãã³ãã©çªå·206 * CPU例外関連 207 */ 208 209 /* 210 * CPU例外ハンドラ番号 248 211 */ 249 212 #define VALID_EXCNO_DEFEXC(excno) (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO) 250 213 251 214 /* 252 * CPUä¾å¤ãã³ãã©ã®å 253 ¥å£å¦çã®çæãã¯ã 215 * CPU例外ハンドラの入口処理の生成マクロ 254 216 */ 255 217 #define EXC_ENTRY(excno, exchdr) exchdr … … 260 222 261 223 /* 262 * CPU ä¾å¤ãã³ãã©ã®è¨å®224 * CPU例外ハンドラの設定 263 225 */ 264 226 Inline void … … 268 230 269 231 /* 270 * ä¾å¤å 271 ¥å£ã®å²è¾¼ã¿æä½ï¼chip_support.Sï¼ 232 * 例外入口の割込み操作(chip_support.S) 272 233 */ 273 234 extern void chip_exc_entry(void); 274 235 275 236 /* 276 * ä¾å¤ãã³ãã©ãã¼ãã«(kernel_cfg.c)237 * 例外ハンドラテーブル(kernel_cfg.c) 277 238 */ 278 239 extern const EXCHDR exc_table[]; … … 281 242 282 243 /* 283 * ãã®ä»244 * その他 284 245 */ 285 246 … … 287 248 288 249 /* 289 * ãããä¾åã®åæå250 * チップ依存の初期化 290 251 */ 291 252 extern void chip_initialize(void); 292 253 293 254 /* 294 * ãããä¾åã®çµäºå¦ç255 * チップ依存の終了処理 295 256 */ 296 257 extern void chip_terminate(void) NoReturn; … … 299 260 300 261 /* 301 * ã³ã¢ä¾åå®ç¾©262 * コア依存定義 302 263 */ 303 264 #include "arm64_gcc/common/core_config.h" -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_design.txt
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 ===================================================================== 2 BCM283x ãããä¾åé¨è¨è¨ã¡ã¢2 BCM283x チップ依存部設計メモ 3 3 Last Modified: 16 Apr 2019 4 4 ===================================================================== 5 5 6 âãã®ããã¥ã¡ã³ãã®ä½ç½®ã¥ã 6 ○このドキュメントの位置づけ 7 7 8 ãã®ããã¥ã¡ã³ãã¯ï¼TOPPERS/SSPã«ã¼ãã«ãBCM283xã«ç§»æ¤ããéã® 9 ãããåºæäºé 10 ã«é¢ããè¨è¨ã¡ã¢ã§ããï¼ 8 このドキュメントは,TOPPERS/SSPカーネルをBCM283xに移植する際の 9 チップ固有事項に関する設計メモである. 11 10 12 ( åè)11 (参考) 13 12 14 13 (a) QA7(ARM Quad A7 core) … … 20 19 21 20 22 [CPU ã¢ã¼ã]21 [CPUモード] 23 22 24 âãªã»ããæã®ç¶æ 25 23 ●リセット時の状態 26 24 27 ãªã»ããæï¼BCM283x (Cortex-A53) ã¯ï¼EL3h (使ç¨ã¹ã¿ã㯠SP_EL3)ã§èµ·åããï¼ 25 リセット時,BCM283x (Cortex-A53) は,EL3h (使用スタック SP_EL3)で起動する. 28 26 29 27 30 [ å²è¾¼ã¿]28 [割込み] 31 29 32 30 33 âå²è¾¼ã¿åªå 34 度 31 ●割込み優先度 35 32 36 BCM283x ã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¯åªå 37 度ãå®è£ 38 ããã¦ããªãï¼ãã®ãã 39 åªå 40 度ã«åºã¥ãå²è¾¼ã¿ã®ãã¹ã¯ãã½ããã¦ã§ã¢ã§æ¬ä¼¼çã«å®è£ 41 ãã¦ããï¼ 42 å²è¾¼ã¿ã®å 43 é¨åªå 44 度ã®å¤ã¯å¤é¨åªå 45 度ã®ç¬¦å·ãå転ãããã®ãç¨ããããï¼ 46 å¤ã®å¤§ããæ¹ãé«åªå 47 度ã¨ãªãï¼ 33 BCM283x の割込みコントローラは優先度が実装されていない.そのため 34 優先度に基づく割込みのマスクをソフトウェアで擬似的に実装している. 35 割込みの内部優先度の値は外部優先度の符号を反転したものを用いるため, 36 値の大きい方が高優先度となる. 48 37 49 åªå 50 度ã®ç¯å²ã¯èªç±ã«æ±ºãããã¨ãã§ããï¼æ¢å®ã®æé«å¤ã¯15ã¨ãªã£ã¦ããï¼ 38 優先度の範囲は自由に決めることができる.既定の最高値は15となっている. 51 39 52 40 53 âå²è¾¼ã¿/ä¾å¤ã®åä» 41 ●割込み/例外の受付 54 42 55 å²è¾¼ã¿ä¿¡å·ãåä¿¡ããã¨ï¼BCM283xã®ãã³ãã£ã³ã°ã¬ã¸ã¹ã¿ã®è©²å½ããããããã»ãããããï¼ 56 å²è¾¼ã¿çªå·ã¯ãã®ã¬ã¸ã¹ã¿ã«ã»ãããããå¤ã使ç¨ããï¼ 43 割込み信号を受信すると,BCM283xのペンディングレジスタの該当するビットがセットされる. 44 割込み番号はこのレジスタにセットされる値を使用する. 57 45 58 å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã¯ï¼BCM2835åã³BCM2836ã® 59 ããªãã§ã©ã«ããã¥ã¢ã«(ä¸è¨aåã³b)ããï¼ãã³ãã£ã³ã°ã¬ã¸ã¹ã¿ã®ãããä½ç½®ã«åºã¥ã㦠60 0ãã127ã®çªå·ãå²ãå½ã¦ãï¼(åã 61 ã®å®ç¾©ã¯ bcm2837.h ãåç 62 §) 46 割込みハンドラ番号と割込み番号は,BCM2835及びBCM2836の 47 ペリフェラルマニュアル(下記a及びb)から,ペンディングレジスタのビット位置に基づいて 48 0から127の番号を割り当てる.(個々の定義は bcm2837.h を参照) 63 49 64 0 ... 31 Core interrupt ( ä¸è¨aã®P16 ãCore0 interrupt sourceãã«å¯¾å¿)65 32 ... 63 ARM peripherals interrupt(b ã®P113ãBasic pending registerãã«å¯¾å¿)66 64 ... 95 ARM peripherals interrupt(b ã®P115ãGPU pending register 1ãã«å¯¾å¿)67 96 ...127 ARM peripherals interrupt(b ã®P115ãGPU pending register 2ãã«å¯¾å¿)50 0 ... 31 Core interrupt (下記aのP16 「Core0 interrupt source」に対応) 51 32 ... 63 ARM peripherals interrupt(bのP113「Basic pending register」に対応) 52 64 ... 95 ARM peripherals interrupt(bのP115「GPU pending register 1」に対応) 53 96 ...127 ARM peripherals interrupt(bのP115「GPU pending register 2」に対応) 68 54 69 å²è¾¼ã¿ãåãä»ããã¨ä¾å¤ã¬ãã«ã¨ä¾å¤ã®ç¨®é¡ã«å¿ããæå®ã®ä½ç½®ãã 70 å®è¡ãéå§ããç¹ã¯ã³ã¢ä¾åé¨ã®èª¬æã¨åæ§ã§ãããï¼å²è¾¼ã¿ã®åªå 71 度㮠72 å¦çå 73 容ã«ã¤ãã¦ã¯ä»¥ä¸ã®ããã«ãªãï¼ 55 割込みを受け付けると例外レベルと例外の種類に応じた所定の位置から 56 実行を開始する点はコア依存部の説明と同様であるが,割込みの優先度の 57 処理内容については以下のようになる. 74 58 75 ã¾ãå²è¾¼ã¿ã®å 76 ¥å£å¦çã§ã¯ä»¥ä¸ã®å¦çãè¡ãï¼ 77 ã»å²è¾¼ã¿çºçæï¼å²è¾¼ã¿è¦å ãå 78 ã«åªå 79 度ãåå¾ãã 80 ã»åªå 81 度ãå 82 ã«ï¼ãã®å²è¾¼ã¿åªå 83 ã¬ãã«ã§å½è©²ã®å²è¾¼ã¿è¦å ããã¹ã¯ãããã©ãããæ±ºå®ããï¼ 84 ã»ãã®åªå 85 度ã§ãã¹ã¯ããå¿ 86 è¦ã®ããå²è¾¼ã¿ãå 87 ¨ã¦ãã¹ã¯ããï¼ 88 ã»CPUããã¯ãè§£é¤ãï¼å²è¾¼ã¿ãã³ãã©ãå¼ã³åºãï¼ 59 まず割込みの入口処理では以下の処理を行う: 60 ・割込み発生時,割込み要因を元に優先度を取得する 61 ・優先度を元に,その割込み優先レベルで当該の割込み要因をマスクするかどうかを決定する. 62 ・その優先度でマスクする必要のある割込みを全てマスクする. 63 ・CPUロックを解除し,割込みハンドラを呼び出す. 89 64 90 å²è¾¼ã¿ãã³ãã©ããã®ãªã¿ã¼ã³å¾ï¼åºå£å¦çã«å 91 ¥ãåã«åªå 92 度ãå 93 ã«æ»ãï¼ 94 ã»å²è¾¼ã¿çºçåã®å²è¾¼ã¿åªå 95 度ãã¹ã¿ãã¯ããåå¾ãã 96 ã»å²è¾¼ã¿çºçåã®åªå 97 度ãå 98 ã«ï¼ãã®å²è¾¼ã¿åªå 99 度ã§ãã¹ã¯è§£é¤ã®å¯¾è±¡ã¨ãªãå²è¾¼ã¿ã決ãã 100 ã»å¯¾è±¡ã¨ãªãå²è¾¼ã¿ã®å²è¾¼ã¿ãã¹ã¯ããã¹ã¦è§£é¤ããï¼ 65 割込みハンドラからのリターン後,出口処理に入る前に優先度を元に戻す: 66 ・割込み発生前の割込み優先度をスタックから取得する 67 ・割込み発生前の優先度を元に,その割込み優先度でマスク解除の対象となる割込みを決める 68 ・対象となる割込みの割込みマスクをすべて解除する. 101 69 102 å²è¾¼ã¿è¦å ã¨åªå 103 度ã¨ã®å¯¾å¿ï¼ããã³åªå 104 度ã¨ãã¹ã¯ãã¿ã¼ã³ã¨ã®å¯¾å¿ã«ã¯ 105 ãããã intpri_tableï¼åã³ iipm_mask_table ã¨ããé 106 åã使ç¨ããï¼ 107 ããã㯠CFG_INT ã®è¨å®å¤ããã¨ã«ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã kernel_cfg.c ã«åºåããï¼ 70 割込み要因と優先度との対応,および優先度とマスクパターンとの対応には 71 それぞれ intpri_table,及び iipm_mask_table という配列を使用する. 72 これらは CFG_INT の設定値をもとにコンフィギュレータが kernel_cfg.c に出力する. 108 73 109 74 110 CPU ä¾å¤ã®ä¾å¤çªå·ã«ã¤ãã¦ã¯ï¼ã³ã¢ä¾åé¨ã¨åæ§ã®ããçç¥ããï¼75 CPU例外の例外番号については,コア依存部と同様のため省略する. 111 76 112 77 113 âä¾å¤/å²è¾¼ã¿ã®åä» 78 ●例外/割込みの受付 114 79 115 ã»ä¾å¤/å²è¾¼ã¿ãåä»ããã¨ï¼åä»ãæã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ä¸ã«ä»¥ä¸ã®ã³ 116 ã³ããã¹ããä¿åããï¼80 ・例外/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ 81 ンテキストを保存する. 117 82 118 83 --------------- 119 84 | GICC_PMR | <- new SP 120 85 ---------------- 121 | å²è¾¼ã¿/ä¾å¤çªå·|86 | 割込み/例外番号| 122 87 ---------------- 123 88 | ESR_ELx | … … 131 96 | X29 | 132 97 ---------------- 133 | ï¼|134 | ï¼|98 | : | 99 | : | 135 100 ---------------- 136 101 | X1 | … … 141 106 142 107 143 å²è¾¼ã¿/ä¾å¤çºçæã®ä¸»ãªã·ã¼ã±ã³ã¹ã¯æ¬¡ã®ããã«ãªãï¼é·ç§»å 144 ã®ä¾å¤ã¬ãã«ãELxã¨è¡¨ç¾ããï¼ 108 割込み/例外発生時の主なシーケンスは次のようになる(遷移先の例外レベルをELxと表現する) 145 109 146 ï¼ãã¼ãã¦ã§ã¢ã®å¦çï¼ 147 ã»PSTATEãSPSR_ELxã«ä¿åãã 148 ã»ãªã¿ã¼ã³ã¢ãã¬ã¹ãELR_ELxã«ä¿åãã 149 ã»PSTATE.{D,A,I,F}ã1ã«ã»ãããã 150 ã»åæä¾å¤ããã³SErrorå²è¾¼ã¿ã®ã¨ãï¼ä¾å¤è¦å æ 151 å ±ãESR_ELxã«ä¿åãã 152 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ãSP_ELxã«åãæ¿ãã 153 ã»ï¼CPUä¾å¤ã®å ´åï¼ä¾å¤çªå·ãx22ã«æ ¼ç´ 154 ã»ELxã¸é·ç§»ãã 110 (ハードウェアの処理) 111 ・PSTATEをSPSR_ELxに保存する 112 ・リターンアドレスをELR_ELxに保存する 113 ・PSTATE.{D,A,I,F}を1にセットする 114 ・同期例外およびSError割込みのとき,例外要因情報をESR_ELxに保存する 115 ・スタックポインタをSP_ELxに切り替える 116 ・(CPU例外の場合)例外番号をx22に格納 117 ・ELxへ遷移する 155 118 156 ï¼ã½ããã¦ã§ã¢ã§ã®å¦çï¼ 157 ã»(çºçæã«SP_EL0ã使ç¨ãã¦ããå ´å)ã¹ã¿ãã¯ãå²è¾¼ã¿çºçå(SP_EL0)ã«æ»ã 158 ã»æ±ç¨ã¬ã¸ã¹ã¿(X0-X30)ãã¹ã¿ãã¯ã«ä¿å 159 ã»SPSR_ELx, ESR_ELx, ELR_ELxãã¹ã¿ãã¯ã«ä¿å 160 ã»(å²è¾¼ã¿)ãã³ãã£ã³ã°ã¬ã¸ã¹ã¿ããå²è¾¼ã¿çªå·ãåå¾ 161 (CPUä¾å¤)ä¾å¤çªå·ãx22ããåå¾ 162 ã»å²è¾¼ã¿çªå·ï¼ä¾å¤çªå·ãã¹ã¿ãã¯ã«ä¿å 163 ã»å²è¾¼ã¿çºçåã®å²è¾¼ã¿åªå 164 度ãã¹ã¯ãã¹ã¿ãã¯ã«ä¿å 165 ã»åãä»ããå²è¾¼ã¿ã®å²è¾¼ã¿åªå 166 度ã夿° current_intpri ã«ã»ãã 167 ã»(å²è¾¼ã¿ã®å ´å)å²è¾¼ã¿åªå 168 度ã®å¤ãå 169 ã«ï¼å²è¾¼ã¿ããã¹ã¯ãã 170 ã»å²è¾¼ã¿/ä¾å¤ãã¹ãã«ã¦ã³ã¿ã®ã¤ã³ã¯ãªã¡ã³ã 171 ã»(å²è¾¼ã¿ã®å ´å)CPUããã¯è§£é¤ 172 (ã«ã¼ãã«ç®¡çã®CPUä¾å¤ã®å ´å)ä¾å¤çºçåã®PSTATEç¶æ 173 ã«è¨å® 174 ã»ãã³ãã©ã®é 175 åããã¢ãã¬ã¹ãèªã¿è¾¼ã¿ãã³ãã©ãå®è¡ãã 119 (ソフトウェアでの処理) 120 ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す 121 ・汎用レジスタ(X0-X30)をスタックに保存 122 ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存 123 ・(割込み)ペンディングレジスタから割込み番号を取得 124 (CPU例外)例外番号をx22から取得 125 ・割込み番号,例外番号をスタックに保存 126 ・割込み発生前の割込み優先度マスクをスタックに保存 127 ・受け付けた割込みの割込み優先度を変数 current_intpri にセット 128 ・(割込みの場合)割込み優先度の値を元に,割込みをマスクする 129 ・割込み/例外ネストカウンタのインクリメント 130 ・(割込みの場合)CPUロック解除 131 (カーネル管理のCPU例外の場合)例外発生前のPSTATE状態に設定 132 ・ハンドラの配列からアドレスを読み込みハンドラを実行する 176 133 177 âä¾å¤/å²è¾¼ã¿ããã®ãªã¿ã¼ã³ 134 ●例外/割込みからのリターン 178 135 179 ï¼ã½ããã¦ã§ã¢ã§ã®å¦çï¼ 180 ã»CPUããã¯ç¶æ 181 ã¸ç§»è¡ 182 ã»å²è¾¼ã¿/ä¾å¤ãã¹ãã«ã¦ã³ã¿ã®ãã¯ãªã¡ã³ã 183 ã»(å²è¾¼ã¿ã®å ´å)å²è¾¼ã¿çºçåã®åªå 184 度ãã¹ã¯ãæ»ãï¼åªå 185 度ã«å¿ãã¦å²è¾¼ã¿ã®ãã¹ã¯ãè§£é¤ãã 186 (CPUä¾å¤ã®å ´å)CPU管çå¤ã®ä¾å¤ã®å ´åï¼ä¾å¤çºçå 187 ã¸ãªã¿ã¼ã³ãã 188 ã»æ»ãå 189 ã®ã³ã³ããã¹ããã·ã¹ãã ç¶æ 190 ã«å¿ãã¦å²è¾¼ã¿/ä¾å¤çºçå 191 ã¸ãªã¿ã¼ã³ 192 ã¾ãã¯é 193 å»¶ãã£ã¹ããããå®è¡ãã 194 ã»ELR_ELxã«æ»ãå 195 ã¢ãã¬ã¹ï¼SPSR_ELxã«ããã»ããµç¶æ 196 ããããã 197 ã»ããããã¦ããç¶æ 198 ã§eretå½ä»¤ãå®è¡ãï¼å²è¾¼ã¿/ä¾å¤ãããªã¿ã¼ã³ 136 (ソフトウェアでの処理) 137 ・CPUロック状態へ移行 138 ・割込み/例外ネストカウンタのデクリメント 139 ・(割込みの場合)割込み発生前の優先度マスクを戻し,優先度に応じて割込みのマスクを解除する 140 (CPU例外の場合)CPU管理外の例外の場合,例外発生元へリターンする 141 ・戻り先のコンテキストやシステム状態に応じて割込み/例外発生元へリターン 142 または遅延ディスパッチを実行する 143 ・ELR_ELxに戻り先アドレス,SPSR_ELxにプロセッサ状態がそれぞれ 144 セットされている状態でeret命令を実行し,割込み/例外からリターン 199 145 200 146 201 â OSã®å®è£ 147 ○ OSの実装 148 149 1.チップ依存部名称: bcm283x 150 151 現状では Raspberry Pi3B に搭載されるBCM2837のみサポートするが, 152 Raspberry Pi に搭載されるプロセッサBCM283x (x=5,6,7)は周辺回路について 153 共通する部分が多く,まとめて扱うことにするため依存部名称を bcm283x とした 202 154 203 155 204 1.ãããä¾åé¨åç§°: bcm283x 156 2. 外部優先度と内部優先度 205 157 206 ç¾ç¶ã§ã¯ Raspberry Pi3B ã«æè¼ãããBCM2837ã®ã¿ãµãã¼ããããï¼ 207 Raspberry Pi ã«æè¼ãããããã»ããµBCM283x (x=5,6,7)ã¯å¨è¾ºåè·¯ã«ã¤ã㦠208 å 209 ±éããé¨åãå¤ãï¼ã¾ã¨ãã¦æ±ããã¨ã«ããããä¾åé¨åç§°ã bcm283x ã¨ãã 158 外部優先度とはAPIで指定する割込み優先度(PRI型)のことであり,値が小さい 159 ほど優先度が高い.割込みハンドラには,-1から連続した負の値を設定可能で 160 ある.内部優先度は外部優先度の符号を反転した値とする. 161 外部優先度と内部優先度の変換は以下のマクロで表現される. 210 162 211 212 2. å¤é¨åªå 213 度ã¨å 214 é¨åªå 215 度 216 217 å¤é¨åªå 218 度ã¨ã¯APIã§æå®ããå²è¾¼ã¿åªå 219 度(PRIå)ã®ãã¨ã§ããï¼å¤ãå°ãã 220 ã»ã©åªå 221 度ãé«ãï¼å²è¾¼ã¿ãã³ãã©ã«ã¯ï¼-1ããé£ç¶ããè² ã®å¤ãè¨å®å¯è½ã§ 222 ããï¼å 223 é¨åªå 224 度ã¯å¤é¨åªå 225 度ã®ç¬¦å·ãå転ããå¤ã¨ããï¼ 226 å¤é¨åªå 227 度ã¨å 228 é¨åªå 229 度ã®å¤æã¯ä»¥ä¸ã®ãã¯ãã§è¡¨ç¾ãããï¼ 230 231 /* å¤é¨è¡¨ç¾ã¸ã®å¤æ */ 163 /* 外部表現への変換 */ 232 164 #define EXT_IPM(pri) (-pri) 233 165 234 /* å 235 é¨è¡¨ç¾ã¸ã®å¤æ */ 166 /* 内部表現への変換 */ 236 167 #define INT_IPM(ipm) (-ipm) 237 168 238 169 239 3. ã«ã¼ãã«ç®¡çå 240 ã®æé«åªå 241 度(CPUããã¯ç¶æ 242 ã§ã®åªå 243 度ãã¹ã¯) 170 3. カーネル管理内の最高優先度(CPUロック状態での優先度マスク) 244 171 245 CPUããã¯ç¶æ 246 ã®å®è£ 247 ã«åªå 248 度ã¯ç¨ãã¦ããªãï¼ 249 ã¾ãåªå 250 度å¶å¾¡ã¯ã½ããã¦ã§ã¢ã§å®è£ 251 ãã¦ããããï¼ 252 ã«ã¼ãã«ç®¡çå 253 ã®å²è¾¼ã¿ã®æé«åªå 254 度ã¯èªç±ã«è¨å®å¯è½ã§ããï¼ 172 CPUロック状態の実装に優先度は用いていない. 173 また優先度制御はソフトウェアで実装しているため, 174 カーネル管理内の割込みの最高優先度は自由に設定可能である. 255 175 256 ãããä¾åé¨ã§æ¢å®å¤ã¨ãã¦-15ã«å®ç¾©ãã¦ãããï¼å¿ 257 è¦ã«å¿ã㦠258 ã¿ã¼ã²ããæ¯ã«å¿ 259 è¦ãªå¤ãè¨å®ãããã¨ãã§ããï¼ 176 チップ依存部で既定値として-15に定義しているが,必要に応じて 177 ターゲット毎に必要な値を設定することができる. 260 178 261 179 262 以ä¸ï¼ 180 以上. -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_kernel.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 ã®ãããä¾åé¨ï¼BCM2837ç¨ï¼42 * kernel.hのチップ依存部(BCM2837用) 58 43 * 59 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼target_kernel.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯60 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã61 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼44 * このインクルードファイルは,target_kernel.h(または,そこからインク 45 * ルードされるファイル)のみからインクルードされる.他のファイルから 46 * 直接インクルードしてはならない. 62 47 */ 63 48 … … 66 51 67 52 /* 68 * ARM64 ä¾åå®ç¾©53 * ARM64依存定義 69 54 */ 70 55 #include "arm64_gcc/common/core_kernel.h" 71 56 72 57 /* 73 * ãµãã¼ãããæ©è½ã®å®ç¾©58 * サポートする機能の定義 74 59 */ 75 // dis_int, ena_int å 76 ±ã«ãµãã¼ãããªã 60 // dis_int, ena_int 共にサポートしない 77 61 78 62 /* 79 * å²è¾¼ã¿åªå 80 度ã®ç¯å² 63 * 割込み優先度の範囲 81 64 */ 82 65 #ifndef TMIN_INTPRI 83 #define TMIN_INTPRI (-15) /* å²è¾¼ã¿åªå 84 åº¦ã®æå°å¤ï¼æé«å¤ï¼*/ 66 #define TMIN_INTPRI (-15) /* 割込み優先度の最小値(最高値)*/ 85 67 #endif 86 68 #ifndef TMAX_INTPRI 87 #define TMAX_INTPRI (-1) /* å²è¾¼ã¿åªå 88 åº¦ã®æå¤§å¤ï¼æä½å¤ï¼ */ 69 #define TMAX_INTPRI (-1) /* 割込み優先度の最大値(最低値) */ 89 70 #endif 90 71 -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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$ … … 60 45 61 46 # 62 # ãã¹2ã®çæã¹ã¯ãªããã®ãããä¾åé¨ï¼BCM2837ç¨ï¼47 # パス2の生成スクリプトのチップ依存部(BCM2837用) 63 48 # 64 49 65 50 # 66 # æå¹ãªå²è¾¼ã¿çªå·ï¼å²è¾¼ã¿ãã³ãã©çªå·51 # 有効な割込み番号,割込みハンドラ番号 67 52 # 68 53 $INTNO_VALID = [ *($TMIN_INTNO..$TMAX_INTNO) ] … … 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 # CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨å²è¾¼ã¿åªå 90 度 74 # CFG_INTで使用できる割込み番号と割込み優先度 91 75 # 92 76 $INTNO_CFGINT_VALID = [*($TMIN_INTNO..11),*(32..39),93, 107,109,110,*(112..119),121] … … 94 78 95 79 # 96 # å²è¾¼ã¿å±æ§ä¸ã®ã¿ã¼ã²ããä¾åã«ç¨ããããã80 # 割込み属性中のターゲット依存に用いるビット 97 81 # 98 82 #$TARGET_INTATR = 99 83 100 84 # 101 # ã³ã¢ä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã85 # コア依存部のインクルード 102 86 # 103 87 IncludeTrb("arm64_gcc/common/core_kernel.trb") … … 106 90 107 91 # 108 # å²è¾¼ã¿è¦æ±ã©ã¤ã³åªå 109 度ãã¼ãã« 92 # 割込み要求ライン優先度テーブル 110 93 # 111 94 … … 127 110 128 111 # 129 # å²è¾¼ã¿åªå 130 度ãã¹ã¯ãã¼ãã« 112 # 割込み優先度マスクテーブル 131 113 # 132 114 … … 156 138 157 139 # 158 # å²è¾¼ã¿ãã³ãã©ãã¼ãã«140 # 割込みハンドラテーブル 159 141 # 160 142 $kernelCfgC.comment_header("Interrupt Handler Table") … … 174 156 175 157 # 176 # CPU ä¾å¤ãã³ãã©ãã¼ãã«158 # CPU例外ハンドラテーブル 177 159 # 178 160 $kernelCfgC.comment_header("CPU Exception Handler Table") -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_rename.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_rename.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_serial.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 */ 57 42 58 43 /* 59 * ã·ãªã¢ã«ãã©ã¤ã44 * シリアルドライバ 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ã¬ã¸ã¹ã¿è¨å®å¤54 * レジスタ設定値 70 55 */ 71 56 #define PORT2SIOPID(x) ((x) + 1) … … 85 70 86 71 /* 87 * éä¿¡ãããã¡ã«ç©ºãããããï¼72 * 送信バッファに空きがあるか? 88 73 */ 89 74 Inline bool_t … … 94 79 95 80 /* 96 * åä¿¡ãããã¡ã«æåããããï¼81 * 受信バッファに文字があるか? 97 82 */ 98 83 Inline bool_t … … 103 88 104 89 /* 105 * åä¿¡ããæåã®ååºã90 * 受信した文字の取出し 106 91 */ 107 92 Inline char … … 112 97 113 98 /* 114 * éä¿¡ããæåã®æ¸è¾¼ã¿99 * 送信する文字の書込み 115 100 */ 116 101 Inline void … … 121 106 122 107 /* 123 * ã¿ã¼ã²ããã®ã·ãªã¢ã«åæå108 * ターゲットのシリアル初期化 124 109 */ 125 110 void target_low_output_init(ID siopid) … … 135 120 sil_wrw_mem(UART_CR(inib->baseAddress), 0U); 136 121 137 // ã¯ããã¯ã®ã»ããã¢ãã122 // クロックのセットアップ 138 123 mbox[0] = 9*4; 139 124 mbox[1] = MBOX_REQUEST; … … 174 159 175 160 /* 176 * SIO åæå161 * SIO初期化 177 162 */ 178 163 void sio_initialize(intptr_t exinf) … … 187 172 188 173 /* 189 * ã·ãªã¢ã«ãªã¼ãã³174 * シリアルオープン 190 175 */ 191 176 SIOPCB *sio_opn_por(ID siopid, intptr_t exinf) … … 202 187 target_low_output_init(siopid); 203 188 204 // åä¿¡ã³ã¼ã«ããã¯è¨±å¯189 // 受信コールバック許可 205 190 sio_ena_cbr(siopcb, SIO_RDY_RCV); 206 191 … … 209 194 210 195 /* 211 * ã·ãªã¢ã«ã¯ãã¼ãº196 * シリアルクローズ 212 197 */ 213 198 void sio_cls_por(SIOPCB *siopcb) 214 199 { 215 200 /* 216 * UART ããã£ã¹ã¨ã¼ãã«201 * UARTをディスエーブル 217 202 */ 218 203 sil_wrw_mem(UART_CR(siopcb->inib->baseAddress), 0U); … … 220 205 221 206 /* 222 * å²è¾¼ã¿ãã³ãã©207 * 割込みハンドラ 223 208 */ 224 209 #include "target_syssvc.h" … … 229 214 if (sio_getready(siopcb)) { 230 215 /* 231 * åä¿¡éç¥ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼216 * 受信通知コールバックルーチンを呼び出す. 232 217 */ 233 218 sio_irdy_rcv(siopcb->exinf); … … 235 220 if (sio_putready(siopcb)) { 236 221 /* 237 * éä¿¡å¯è½ã³ã¼ã«ããã¯ã«ã¼ãã³ãå¼ã³åºãï¼222 * 送信可能コールバックルーチンを呼び出す. 238 223 */ 239 224 sio_irdy_snd(siopcb->exinf); … … 242 227 243 228 /* 244 * 1 æåéä¿¡229 * 1文字送信 245 230 */ 246 231 bool_t sio_snd_chr(SIOPCB *siopcb, char c) … … 254 239 255 240 /* 256 * 1 æååä¿¡241 * 1文字受信 257 242 */ 258 243 int_t sio_rcv_chr(SIOPCB *siopcb) … … 265 250 266 251 /* 267 * ã³ã¼ã«ããã¯ã®è¨±å¯252 * コールバックの許可 268 253 */ 269 254 void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn) … … 287 272 288 273 /* 289 * ã³ã¼ã«ããã¯ã®ç¦æ¢274 * コールバックの禁止 290 275 */ 291 276 void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn) … … 309 294 310 295 /* 311 * 1 æååºåï¼ãã¼ãªã³ã°ã§ã®åºåï¼296 * 1文字出力(ポーリングでの出力) 312 297 */ 313 298 void sio_pol_snd_chr(char c, ID siopid) -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_serial.cfg
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 /* 2 * SIO ãã©ã¤ãï¼CQ-FRK-FM3ç¨ï¼ã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãã¡ã¤ã«2 * SIOドライバ(CQ-FRK-FM3用)のコンフィグレーションファイル 3 3 */ 4 4 -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_serial.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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_UART // å²è¾¼ã¿çªå·51 #define INTNO_SIO TINTNO_UART // 割込み番号 67 52 68 53 #ifndef INTATR_SIO 69 #define INTATR_SIO TA_NULL // å²è¾¼ã¿å±æ§54 #define INTATR_SIO TA_NULL // 割込み属性 70 55 #endif 71 56 72 57 #ifndef INTPRI_SIO 73 #define INTPRI_SIO (-2) // å²è¾¼ã¿åªå 74 度 58 #define INTPRI_SIO (-2) // 割込み優先度 75 59 #endif 76 60 77 61 /* 78 * ã³ã¼ã«ããã¯ã«ã¼ãã³ã®èå¥çªå·62 * コールバックルーチンの識別番号 79 63 */ 80 #define SIO_RDY_SND 1U /* éä¿¡å¯è½ã³ã¼ã«ããã¯*/81 #define SIO_RDY_RCV 2U /* åä¿¡éç¥ã³ã¼ã«ããã¯*/64 #define SIO_RDY_SND 1U /* 送信可能コールバック */ 65 #define SIO_RDY_RCV 2U /* 受信通知コールバック */ 82 66 83 67 #ifndef TOPPERS_MACRO_ONLY 84 68 85 69 /* 86 * ã·ãªã¢ã«ãã¼ãã®åæåãããã¯70 * シリアルポートの初期化ブロック 87 71 */ 88 72 typedef const struct tag_SIOPINIB { … … 94 78 95 79 /* 96 * ã·ãªã¢ã«ãã¼ãã®ç®¡çãããã¯80 * シリアルポートの管理ブロック 97 81 */ 98 82 typedef struct sio_port_control_block { … … 102 86 103 87 /* 104 * SIO åæå88 * SIO初期化 105 89 */ 106 90 extern void sio_initialize(intptr_t exinf); 107 91 108 92 /* 109 * ã·ãªã¢ã«ãªã¼ãã³93 * シリアルオープン 110 94 */ 111 95 extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf); 112 96 113 97 /* 114 * ã·ãªã¢ã«ã¯ãã¼ãº98 * シリアルクローズ 115 99 */ 116 100 extern void sio_cls_por(SIOPCB *p_siopcb); 117 101 118 102 /* 119 * å²è¾¼ã¿ãã³ãã©103 * 割込みハンドラ 120 104 */ 121 105 extern void sio_isr(intptr_t exinf); 122 106 123 107 /* 124 * 1 æåéä¿¡108 * 1文字送信 125 109 */ 126 110 extern bool_t sio_snd_chr(SIOPCB *siopcb, char c); 127 111 128 112 /* 129 * 1 æååä¿¡113 * 1文字受信 130 114 */ 131 115 extern int_t sio_rcv_chr(SIOPCB *siopcb); 132 116 133 117 /* 134 * ã³ã¼ã«ããã¯ã®è¨±å¯118 * コールバックの許可 135 119 */ 136 120 extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn); 137 121 138 122 /* 139 * ã³ã¼ã«ããã¯ã®ç¦æ¢123 * コールバックの禁止 140 124 */ 141 125 extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn); 142 126 143 127 /* 144 * éä¿¡å¯è½ã³ã¼ã«ããã¯128 * 送信可能コールバック 145 129 */ 146 130 extern void sio_irdy_snd(intptr_t exinf); 147 131 148 132 /* 149 * åä¿¡éç¥ã³ã¼ã«ããã¯133 * 受信通知コールバック 150 134 */ 151 135 extern void sio_irdy_rcv(intptr_t exinf); 152 136 153 137 /* 154 * 1 æåéä¿¡ï¼ãã¼ãªã³ã°ã§ã®åºåï¼138 * 1文字送信(ポーリングでの出力) 155 139 */ 156 140 extern void sio_pol_snd_chr(char c, ID siopid); 157 141 158 142 /* 159 * ä½ã¬ãã«åºååæå143 * 低レベル出力初期化 160 144 */ 161 145 extern void target_low_output_init(ID siopid); -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_sil.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * sil.h ã®ãããä¾åé¨ï¼BCM2837ç¨ï¼43 * sil.hのチップ依存部(BCM2837用) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ARMv8-A ã®å 66 ±éå®ç¾© 50 * ARMv8-A の共通定義 67 51 */ 68 52 #include "arm64_gcc/common/core_sil.h" -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_stddef.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * t_stddef.h ã®ãããä¾åé¨ï¼BCM2837ç¨ï¼43 * t_stddef.hのチップ依存部(BCM2837用) 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_BCM283X /* ãããç¥ç§°*/56 #define TOPPERS_BCM283X /* チップ略称 */ 72 57 73 58 /* 74 * ã³ã¢ä¾åé¨å®ç¾©59 * コア依存部定義 75 60 */ 76 61 #include "arm64_gcc/common/core_stddef.h" -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_support.S
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 責ãããã¨ï¼ 44 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 51 * 52 */ 53 54 /* 55 * ãããä¾åã¢ã¸ã¥ã¼ã« ã¢ã»ã³ããªè¨èªé¨(BCM2837) 8 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 9 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 * スコード中に含まれていること. 14 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 * の無保証規定を掲載すること. 18 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 * と. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 * 報告すること. 25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 * 免責すること. 30 * 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 36 * 37 */ 38 39 /* 40 * チップ依存モジュール アセンブリ言語部(BCM2837) 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 UINT64_C(val) (val) /* uint64_t åã®å®æ°ãä½ããã¯ã*/62 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/44 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 45 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 46 #define UINT64_C(val) (val) /* uint64_t型の定数を作るマクロ */ 47 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 63 48 64 49 #include "kernel_impl.h" 65 50 66 51 /* 67 * ä¾å¤å 68 ¥å£ã®æä½ 52 * 例外入口の操作 69 53 * x22: excno(0..7) 70 54 */ … … 84 68 bl call_exc_handler 85 69 86 // ä¾å¤çºçç´åã®Iãã©ã°ã¾ãã¯Fãã©ã°ã1ãªãã«ã¼ãã«ç®¡çå¤ã®CPUä¾å¤ã¨ã¿ãªã70 // 例外発生直前のIフラグまたはFフラグが1ならカーネル管理外のCPU例外とみなす 87 71 ldr x3, [x0, #32] // SPSR --> x1 88 72 tst x3, #(3 << 6) 89 73 b.ne ret_exc 90 74 91 // ã«ã¼ãã«ç®¡çã®CPUä¾å¤ã®å ´åã¯å²è¾¼ã¿ã®åºå£å¦çã¨å 92 ±é 75 // カーネル管理のCPU例外の場合は割込みの出口処理と共通 93 76 msr daifclr, #AARCH64_DAIF_FIQ 94 77 b ret_int 95 78 96 79 /* 97 * FIQã®å 98 ¥å£å¦ç 80 * FIQの入口処理 99 81 */ 100 82 .text … … 106 88 107 89 /* 108 * å²è¾¼ã¿å 109 ¥å£ã®æä½ 90 * 割込み入口の操作 110 91 */ 111 92 .text … … 115 96 mov x0, sp 116 97 /* 117 * å²è¾¼ã¿è¦å ã®ç¹å®ã¨ä¿å98 * 割込み要因の特定と保存 118 99 */ 119 100 find_int_src_core: // find a interrupt source from core(core 0) … … 250 231 251 232 /* 252 * å²è¾¼ã¿çºçç´åã®å²è¾¼ã¿åªå 253 度ï¼å 254 é¨è¡¨ç¾ï¼ãä¿å 233 * 割込み発生直前の割込み優先度(内部表現)を保存 255 234 */ 256 235 adrp x1, current_intpri … … 260 239 261 240 /* 262 * å²è¾¼ã¿è¦å ã®åªå 263 度ãåå¾ 241 * 割込み要因の優先度を取得 264 242 */ 265 243 adrp x3, _kernel_intpri_table … … 267 245 ldr w4, [x3, x9, lsl #2] 268 246 269 // çºçããå²è¾¼ã¿ã®åªå 270 度ããã¨ã«å²è¾¼ã¿ããã¹ã¯ 247 // 発生した割込みの優先度をもとに割込みをマスク 271 248 mov w0, w4 // arg: intpri 272 249 bl chip_mask_interrupt 273 250 274 // D,A,F ãã©ã°ãã¯ãªã¢ãã¦ãã(CPUããã¯ç¸å½ã«ãã)251 // D,A,F フラグをクリアしておく(CPUロック相当にする) 275 252 msr daifclr, #(AARCH64_DAIF_DBG | AARCH64_DAIF_SERR | AARCH64_DAIF_FIQ) 276 253 277 // ãã³ãã©å¼ã³åºã254 // ハンドラ呼び出し 278 255 mov x0, sp 279 256 ldr w9, [x0, #8] 280 257 mov w0, w9 // arg: intno 281 258 bl call_int_handler 282 /* ãã®ã¾ã¾ chip_ret_int ã¸*/283 284 /* 285 * å²è¾¼ã¿åºå£ã®GICæä½259 /* そのまま chip_ret_int へ */ 260 261 /* 262 * 割込み出口のGIC操作 286 263 */ 287 264 chip_ret_int: 288 // å²è¾¼ã¿çºçåã®åªå 289 åº¦ã«æ»ã 265 // 割込み発生前の優先度に戻す 290 266 mov x0, sp 291 267 adrp x1, current_intpri … … 294 270 str w2, [x1] 295 271 296 // åªå 297 度ãå 298 ã«å²è¾¼ã¿ã®ãã¹ã¯ãæ»ã 272 // 優先度を元に割込みのマスクを戻す 299 273 mov w0, w2 300 274 bl chip_unmask_interrupt -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_sym.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_test.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ãã¹ãããã°ã©ã ã®ãããä¾åå®ç¾©ï¼BCM2837ç¨ï¼43 * テストプログラムのチップ依存定義(BCM2837用) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ã³ã¢å 66 ±éå®ç¾© 50 * コア共通定義 67 51 */ 68 52 #include "arm64_gcc/common/core_test.h" -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_timer.cfg
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 /* 2 * ã¿ã¤ããã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«2 * タイマドライバのコンフィギュレーションファイル 3 3 */ 4 4 INCLUDE("arm64_gcc/common/core_timer.cfg"); -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_timer.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ã¿ã¤ããã©ã¤ãï¼BCM283Xç¨ï¼43 * タイマドライバ(BCM283X用) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ARMv8-A ä¾åå®ç¾©50 * ARMv8-A 依存定義 66 51 */ 67 52 #include "arm64_gcc/common/core_timer.h" -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_unrename.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_user.txt
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 ===================================================================== 2 BCM283x ãããä¾åé¨2 BCM283xチップ依存部 3 3 Last Modified: '19/04/16 4 4 ===================================================================== 5 5 6 6 7 (1) 対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã ã®ç¨®é¡ã»æ§æ7 (1) 対応しているターゲットシステムの種類・構成 8 8 9 bcm283x ãããä¾åé¨ã¯ï¼ä¸»ã« Raspberry Pi ã§ä½¿ç¨ããã Broadcom製ãããã10 ã¿ã¼ã²ããã¨ããï¼ç¾æç¹ã§ã¯ Raspberru Pi 3B ã«æè¼ãããBCM2837 ããµãã¼ãããï¼ 9 bcm283xチップ依存部は,主に Raspberry Pi で使用される Broadcom製チップを 10 ターゲットとする.現時点では Raspberru Pi 3B に搭載されるBCM2837 をサポートする. 11 11 12 (2) 使ç¨ããéçºç°å¢ã¨å使¤è¨¼ããæ¡ä»¶ï¼ãã¼ã¸ã§ã³ï¼ãªãã·ã§ã³çï¼12 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等) 13 13 14 ã«ã¼ãã«ã¯GCCãç¨ãã¦ã³ã³ãã¤ã«ããï¼åä½ç¢ºèªãããã¼ã¸ã§ã³ã¯åã¿ã¼ã² 15 ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼ 14 カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ 15 ット依存部のドキュメントに記載する. 16 16 17 (3) ã¿ã¼ã²ããå®ç¾©äºé 18 ã®è¦å® 17 (3) ターゲット定義事項の規定 19 18 20 (3-1) å²è¾¼ã¿å¦çã«é¢ããè¦å®19 (3-1) 割込み処理に関する規定 21 20 22 (3-1-1) æ¦è¦21 (3-1-1) 概要 23 22 24 BCM283x ã¯ç¬èªã®å²è¾¼ã¿ã³ã³ããã¼ã©ãæè¼ãï¼ä»¥ä¸ã®ç¹å¾´ãæã¤ï¼ 25 ã»å²è¾¼ã¿åªå 26 ã¬ãã«ã¯ãµãã¼ãããªãï¼ 27 ã»å²è¾¼ã¿ã¯å 28 ¨ã¦ã¬ãã«ããªã¬ã§ããï¼ãããã£ã¦å²è¾¼ã¿è¦æ±ãã©ã°ã¯ 29 å²è¾¼ã¿çºçå 30 ã®ããã¤ã¹ãç´æ¥æä½ãã¦ã¯ãªã¢ããå¿ 31 è¦ãããï¼ 23 BCM283x は独自の割込みコントローラを搭載し,以下の特徴を持つ. 24 ・割込み優先レベルはサポートしない. 25 ・割込みは全てレベルトリガである.したがって割込み要求フラグは 26 割込み発生元のデバイスを直接操作してクリアする必要がある. 32 27 33 BCM283x ä¾åé¨ã§ã¯ï¼IRQ ãã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ï¼FIQãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¨ããï¼28 BCM283x依存部では,IRQ をカーネル管理の割込み,FIQをカーネル管理外の割込みとする. 34 29 35 30 36 (3-1-2) å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã®å²å½ã¦ï¼ä¸¡è 37 ã®å¯¾å¿ 31 (3-1-2) 割込みハンドラ番号と割込み番号の割当て,両者の対応 38 32 39 å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã¯ï¼BCM2835åã³BCM2836ã® 40 ããªãã§ã©ã«ããã¥ã¢ã«(ä¸è¨aåã³b)ããï¼ãã³ãã£ã³ã°ã¬ã¸ã¹ã¿ã®ãããä½ç½®ã«åºã¥ã㦠41 0ãã127ã®çªå·ãå²ãå½ã¦ãï¼(åã 42 ã®å®ç¾©ã¯ bcm2837.h ãåç 43 §) 33 割込みハンドラ番号と割込み番号は,BCM2835及びBCM2836の 34 ペリフェラルマニュアル(下記a及びb)から,ペンディングレジスタのビット位置に基づいて 35 0から127の番号を割り当てる.(個々の定義は bcm2837.h を参照) 44 36 45 0 ... 31 Core interrupt ( ä¸è¨aã®P16 ãCore0 interrupt sourceãã«å¯¾å¿)46 32 ... 63 ARM peripherals interrupt(b ã®P113ãBasic pending registerãã«å¯¾å¿)47 64 ... 95 ARM peripherals interrupt(b ã®P115ãGPU pending register 1ãã«å¯¾å¿)48 96 ...127 ARM peripherals interrupt(b ã®P115ãGPU pending register 2ãã«å¯¾å¿)37 0 ... 31 Core interrupt (下記aのP16 「Core0 interrupt source」に対応) 38 32 ... 63 ARM peripherals interrupt(bのP113「Basic pending register」に対応) 39 64 ... 95 ARM peripherals interrupt(bのP115「GPU pending register 1」に対応) 40 96 ...127 ARM peripherals interrupt(bのP115「GPU pending register 2」に対応) 49 41 50 42 (a) QA7(ARM Quad A7 core) … … 55 47 56 48 57 (3-1-3) å²è¾¼ã¿åªå 58 åº¦ã®æ®µéæ°ï¼TMIN_INTPRIã®å¤ï¼ï¼ãã®è¨å®æ¹æ³ 49 (3-1-3) 割込み優先度の段階数(TMIN_INTPRIの値),その設定方法 59 50 60 å²è¾¼ã¿åªå 61 åº¦ã®æ®µéæ°ã¯ï¼ã¿ã¼ã²ããä¾å鍿¯ã«ç°ãªãï¼ 62 BCM283x ã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¯åªå 63 度å¶å¾¡æ©è½ãæããªãããã½ããã¦ã§ã¢ã§å®ç¾ããï¼ 64 ãã®ããæ®µéæ°ãç¬èªã«è¨å®ãããã¨ãå¯è½ã§ããï¼ 51 割込み優先度の段階数は,ターゲット依存部毎に異なる. 52 BCM283x の割込みコントローラは優先度制御機能を持たないためソフトウェアで実現する. 53 そのため段階数を独自に設定することが可能である. 65 54 66 ã«ã¼ãã«ç®¡çå 67 ã®å²è¾¼ã¿ã«å¯¾ããæé«åªå 68 度(TMIN_INTPRI)ã¯ãããä¾åé¨ã§ 69 æ¢å®å¤ãå®ç¾©ãã¦ãããï¼ã¿ã¼ã²ããä¾åé¨ã§è¨å®ãããã¨ãå¯è½ã§ããï¼ 55 カーネル管理内の割込みに対する最高優先度(TMIN_INTPRI)はチップ依存部で 56 既定値を定義しているが,ターゲット依存部で設定することも可能である. 70 57 71 åå²è¾¼ã¿ã®å²è¾¼ã¿åªå 72 度ã¯ï¼CFG_INT ã§è¨å®ããï¼åªå 73 度㯠TMIN_INTPRI 以ä¸ã®å¤ 74 (åªå 75 度ã¨ãã¦ã¯ä½ãå¤)ãæå®ããï¼ 58 各割込みの割込み優先度は,CFG_INT で設定する.優先度は TMIN_INTPRI 以上の値 59 (優先度としては低い値)を指定する. 76 60 77 (3-1-4) dis_intã¨ena_intã®ãµãã¼ãã®æç¡ï¼ãã®å¶éäºé 61 (3-1-4) dis_intとena_intのサポートの有無,その制限事項 62 63 dis_int と ena_int はサポートしない 78 64 79 65 80 dis_int 㨠ena_int ã¯ãµãã¼ãããªã 66 (3-1-5) CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性) 67 68 レベル割込みしかサポートしないため,エッジ/レベルのトリガ設定は意味をもたない. 69 その他,ターゲット独自に使用可能な割込み属性はない. 81 70 82 71 83 (3-1-5) CFG_INTã®å¶éäºé 84 ã¨æ¡å¼µï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨ã§ããå²è¾¼ã¿å±æ§ï¼ 72 (3-1-6) カーネル管理外の割込み 85 73 86 ã¬ãã«å²è¾¼ã¿ãããµãã¼ãããªãããï¼ã¨ãã¸/ã¬ãã«ã®ããªã¬è¨å®ã¯æå³ããããªãï¼ 87 ãã®ä»ï¼ã¿ã¼ã²ããç¬èªã«ä½¿ç¨å¯è½ãªå²è¾¼ã¿å±æ§ã¯ãªãï¼ 74 FIQ割込みをカーネル管理外の割込みとして扱う. 75 76 FIQ割込みが発生すると該当する割込みベクタからレジスタの退避を行なった後に 77 call_fiq_handler (core_config.c) が呼び出される.この関数は, 78 コアの全ての例外がマスクされた状態(ステータスレジスタのD,A,I,Fが全て1)で 79 呼び出される. 80 81 FIQを利用するための設定,発生したFIQ 割込みに対する要因判別, 82 及び対応するハンドラ等の処理は独自に実装する必要がある. 83 84 カーネル管理外の割込みを設定するためのAPIはサポートしない. 88 85 89 86 90 (3- 1-6) ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿87 (3-2) CPUロック・割込みロック 91 88 92 FIQå²è¾¼ã¿ãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¨ãã¦æ±ãï¼ 89 CPUロックは,ステータスレジスタのIビットの値で判別する. 90 全割込みロックフラグの実装ではこれに加えFビットも使用する. 93 91 94 FIQå²è¾¼ã¿ãçºçããã¨è©²å½ããå²è¾¼ã¿ãã¯ã¿ããã¬ã¸ã¹ã¿ã®éé¿ãè¡ãªã£ãå¾ã« 95 call_fiq_handler (core_config.c) ãå¼ã³åºãããï¼ãã®é¢æ°ã¯ï¼ 96 ã³ã¢ã®å 97 ¨ã¦ã®ä¾å¤ããã¹ã¯ãããç¶æ 98 (ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®D,A,I,Fãå 99 ¨ã¦1)ã§ 100 å¼ã³åºãããï¼ 101 102 FIQãå©ç¨ããããã®è¨å®ï¼çºçããFIQ å²è¾¼ã¿ã«å¯¾ããè¦å å¤å¥ï¼ 103 åã³å¯¾å¿ãããã³ãã©çã®å¦çã¯ç¬èªã«å®è£ 104 ããå¿ 105 è¦ãããï¼ 106 107 ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ãè¨å®ããããã®APIã¯ãµãã¼ãããªãï¼ 92 CPUロックフラグは割込みロックフラグとは独立したフラグとしてサポートする. 93 そのため,SIL_LOC_INT呼び出し時はIフラグの状態を記憶し, 94 SIL_UNL_INT呼び出し時に元の状態に戻している. 108 95 109 96 110 (3- 2) CPUããã¯ã»å²è¾¼ã¿ããã¯97 (3-3) 性能評価用システム時刻の参照に関する規定 111 98 112 CPUããã¯ã¯ï¼ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®Iãããã®å¤ã§å¤å¥ããï¼ 113 å 114 ¨å²è¾¼ã¿ããã¯ãã©ã°ã®å®è£ 115 ã§ã¯ããã«å ãFãããã使ç¨ããï¼ 116 117 CPUããã¯ãã©ã°ã¯å²è¾¼ã¿ããã¯ãã©ã°ã¨ã¯ç¬ç«ãããã©ã°ã¨ãã¦ãµãã¼ãããï¼ 118 ãã®ããï¼SIL_LOC_INTå¼ã³åºãæã¯Iãã©ã°ã®ç¶æ 119 ãè¨æ¶ãï¼ 120 SIL_UNL_INTå¼ã³åºãæã«å 121 ã®ç¶æ 122 ã«æ»ãã¦ããï¼ 99 get_utmをサポートしない. 123 100 124 101 125 (3-3) æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç 126 §ã«é¢ããè¦å® 102 (3-4) スタートアップルーチンでの初期化内容 127 103 128 get_utmããµãã¼ãããªãï¼ 104 スタートアップルーチンはターゲット依存部のドキュメントに記載する. 129 105 130 106 131 (3-4) ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã®åæåå 132 容 133 134 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã¯ã¿ã¼ã²ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼ 135 136 137 (4) ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ 107 (4) ディレクトリ構成・ファイル構成 138 108 ./arch/arm64_gcc/bcm283x/ 139 109 MANIFEST … … 163 133 pl011.h 164 134 165 (12) ãã¼ã¸ã§ã³å±¥æ´135 (12) バージョン履歴 166 136 167 137 2018/05/30 168 ã»æåã®ãªãªã¼ã¹138 ・最初のリリース 169 139 2019/04/15 170 ã»BCM283xãããä¾åé¨ã®åé¢ã«åããã¦ä¿®æ£140 ・BCM283xチップ依存部の分離に合わせて修正 -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/pl011.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * $Id$ … … 59 44 60 45 /* 61 * ARM PrimCell UART ï¼PL011ï¼ã«é¢ããå®ç¾©46 * ARM PrimCell UART(PL011)に関する定義 62 47 */ 63 48 … … 66 51 67 52 /* 68 * UART ã¬ã¸ã¹ã¿ã®çªå°ã®å®ç¾©53 * UARTレジスタの番地の定義 69 54 */ 70 55 #define UART_DR(base) ((uint32_t *)((base) + 0x00U)) … … 83 68 84 69 /* 85 * ãã©ã°ã¬ã¸ã¹ã¿ï¼UART_FRï¼ã®åç 86 §å¤ 70 * フラグレジスタ(UART_FR)の参照値 87 71 */ 88 #define UART_FR_RXFE UINT_C(0x10) /* åä¿¡ãããã¡ã空*/89 #define UART_FR_TXFF UINT_C(0x20) /* éä¿¡ãããã¡ããã«*/72 #define UART_FR_RXFE UINT_C(0x10) /* 受信バッファが空 */ 73 #define UART_FR_TXFF UINT_C(0x20) /* 送信バッファがフル */ 90 74 91 75 /* 92 * ã©ã¤ã³å¶å¾¡ã¬ã¸ã¹ã¿ï¼UART_LCR_Hï¼ã®è¨å®å¤76 * ライン制御レジスタ(UART_LCR_H)の設定値 93 77 */ 94 #define UART_LCR_H_PEN UINT_C(0x02) /* ããªãã£ãç¨ãã*/95 #define UART_LCR_H_EPS UINT_C(0x04) /* å¶æ°ããªãã£ã«*/96 #define UART_LCR_H_STP2 UINT_C(0x08) /* ã¹ããããããã2ãããã«*/97 #define UART_LCR_H_FEN UINT_C(0x10) /* FIFO ãæå¹ã«*/98 #define UART_LCR_H_WLEN8 UINT_C(0x60) /* ãã¼ã¿é·ã8ãããã«*/78 #define UART_LCR_H_PEN UINT_C(0x02) /* パリティを用いる */ 79 #define UART_LCR_H_EPS UINT_C(0x04) /* 偶数パリティに */ 80 #define UART_LCR_H_STP2 UINT_C(0x08) /* ストップビットを2ビットに */ 81 #define UART_LCR_H_FEN UINT_C(0x10) /* FIFOを有効に */ 82 #define UART_LCR_H_WLEN8 UINT_C(0x60) /* データ長を8ビットに */ 99 83 100 84 /* 101 * å¶å¾¡ã¬ã¸ã¹ã¿ï¼UART_CRï¼ã®è¨å®å¤85 * 制御レジスタ(UART_CR)の設定値 102 86 */ 103 #define UART_CR_UARTEN UINT_C(0x0001) /* UART ãã¤ãã¼ãã«ã«*/104 #define UART_CR_TXE UINT_C(0x0100) /* éä¿¡ãã¤ãã¼ãã«ã«*/105 #define UART_CR_RXE UINT_C(0x0200) /* åä¿¡ãã¤ãã¼ãã«ã«*/87 #define UART_CR_UARTEN UINT_C(0x0001) /* UARTをイネーブルに */ 88 #define UART_CR_TXE UINT_C(0x0100) /* 送信をイネーブルに */ 89 #define UART_CR_RXE UINT_C(0x0200) /* 受信をイネーブルに */ 106 90 107 91 /* 108 * å²è¾¼ã¿ãã¹ã¯ã»ããï¼ã¯ãªã¢ã¬ã¸ã¹ã¿ï¼UART_IMSCï¼ã®è¨å®å¤92 * 割込みマスクセット/クリアレジスタ(UART_IMSC)の設定値 109 93 */ 110 #define UART_IMSC_RXIM UINT_C(0x0010) /* åä¿¡å²è¾¼ã¿ãã¹ã¯*/111 #define UART_IMSC_TXIM UINT_C(0x0020) /* éä¿¡å²è¾¼ã¿ãã¹ã¯*/94 #define UART_IMSC_RXIM UINT_C(0x0010) /* 受信割込みマスク */ 95 #define UART_IMSC_TXIM UINT_C(0x0020) /* 送信割込みマスク */ 112 96 113 97 #ifndef TOPPERS_MACRO_ONLY -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/Makefile.core
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 # 2 # Makefile ã®ã³ã¢ä¾åé¨ï¼ARMv8-Aç¨ï¼2 # Makefile のコア依存部(ARMv8-A用) 3 3 # 4 4 5 5 # 6 # ãã£ã¬ã¯ããªåã®å®ç¾©6 # ディレクトリ名の定義 7 7 # 8 8 COREDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/common 9 9 10 10 # 11 # ã³ã³ãã¤ã«ãªãã·ã§ã³11 # コンパイルオプション 12 12 # 13 13 COPTS := $(COPTS) -march=armv8-a -mlittle-endian -mstrict-align … … 18 18 19 19 # 20 # ã«ã¼ãã«ã«é¢ããå®ç¾©20 # カーネルに関する定義 21 21 # 22 22 KERNEL_DIRS := $(KERNEL_DIRS) $(COREDIR) … … 26 26 27 27 # 28 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿é¢ä¿ã®å¤æ°ã®å®ç¾©28 # コンフィギュレータ関係の変数の定義 29 29 # 30 30 CFG_TABS := $(CFG_TABS) --symval-table $(COREDIR)/core_sym.def … … 34 34 35 35 # 36 # ä¾åé¢ä¿ã®å®ç¾©36 # 依存関係の定義 37 37 # 38 38 cfg1_out.c: $(COREDIR)/core_sym.def … … 41 41 42 42 # 43 # ãã®ä»43 # その他 44 44 # 45 45 CLEAN_FILES := $(CLEAN_FILES) -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/arm64.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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$ … … 85 70 86 71 /* 87 * DAIFã®è¨å®ããã³ç¶æ 88 åç 89 § 72 * DAIFの設定および状態参照 90 73 */ 91 74 Inline uint32_t … … 103 86 104 87 /* 105 * DAIF.I ã®ã»ãã/ã¯ãªã¢88 * DAIF.I のセット/クリア 106 89 */ 107 90 Inline void … … 116 99 117 100 /* 118 * DAIF.F ã®ã»ãã/ã¯ãªã¢101 * DAIF.F のセット/クリア 119 102 */ 120 103 Inline void … … 129 112 130 113 /* 131 * DAIF.F ããã³ DAIF.I ã®åæã»ãã/ã¯ãªã¢114 * DAIF.F および DAIF.I の同時セット/クリア 132 115 */ 133 116 Inline void … … 142 125 143 126 /* 144 * DAIF.I ã®ç¶æ 145 åç 146 § 127 * DAIF.I の状態参照 147 128 */ 148 129 Inline bool_t … … 164 145 165 146 /* 166 * DAIF.F ã®ç¶æ 167 åç 168 § 147 * DAIF.F の状態参照 169 148 */ 170 149 Inline bool_t … … 186 165 187 166 /* 188 * ã¯ãªãã£ã«ã«å¦çã®åºå£(æé©å鲿¢)167 * クリティカル処理の出口(最適化防止) 189 168 */ 190 169 Inline void -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_cfg1_out.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 4 4 5 5 /* 6 * cfg1_out.cããªã³ã¯ããããã«å¿ 7 è¦ãªã¹ã¿ãã®å®ç¾© 6 * cfg1_out.cをリンクするために必要なスタブの定義 8 7 */ 9 8 -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_check.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # ãã¹3ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARM64ç¨ï¼3 # パス3の生成スクリプトのコア依存部(ARM64用) 4 4 # 5 5 6 6 # 7 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã7 # ターゲット非依存部のインクルード 8 8 # 9 9 IncludeTrb("kernel/kernel_check.trb") -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_config.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ã³ã¢ä¾åã¢ã¸ã¥ã¼ã«ï¼ARMv8-Aç¨ï¼44 * コア依存モジュール(ARMv8-A用) 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 core_initialize(void) 73 58 { 74 /* å²è¾¼ã¿ãã¹ãæ°ã®åæå*/59 /* 割込みネスト数の初期化 */ 75 60 intnest = 0u; 76 61 } 77 62 78 63 /* 79 * ã³ã¢ä¾åã®çµäºå¦ç64 * コア依存の終了処理 80 65 */ 81 66 void … … 87 72 88 73 /* 89 * å²è¾¼ã¿ãã³ãã©ã®å¼ã³åºã74 * 割込みハンドラの呼び出し 90 75 */ 91 76 void … … 96 81 i_unlock_cpu(); 97 82 98 // ãã³ãã©ã®å¼ã³åºã83 // ハンドラの呼び出し 99 84 inh_table[intno](); 100 85 … … 105 90 106 91 /* 107 * ã«ã¼ãã«ç®¡çã®CPUä¾å¤ãã³ãã©ã®å¼ã³åºã92 * カーネル管理のCPU例外ハンドラの呼び出し 108 93 */ 109 94 void … … 115 100 116 101 /* 117 * ããã»ããµã®ç¶æ 118 ãCPUä¾å¤çºçåã®ç¶æ 119 ã«ãã 102 * プロセッサの状態をCPU例外発生前の状態にする 120 103 */ 121 104 if((spsr & AARCH64_PSTATE_F) == 0) { … … 127 110 } 128 111 129 // ãã³ãã©ã®å¼ã³åºã112 // ハンドラの呼び出し 130 113 exc_table[excno](p_excinf); 131 114 132 115 /* 133 * ããã»ããµã®ç¶æ 134 ãæ»ã 116 * プロセッサの状態を戻す 135 117 */ 136 118 if((spsr & AARCH64_PSTATE_F) == 0) { … … 146 128 147 129 /* 148 * FIQãã³ãã©ã®å¼ã³åºã 149 * å 150 ¨ã¦ã®ä¾å¤ããã¹ã¯ãããç¶æ 151 ã§å¼ã³åºããã 152 * ä¾å¤è¦å ã®å¤å¥ãå«ããã(ãããã¯ããããå¼ã³åºãããã«ã¼ãã³)ã§è¡ã 130 * FIQハンドラの呼び出し 131 * 全ての例外がマスクされた状態で呼び出される 132 * 例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う 153 133 */ 154 134 void … … 160 140 #ifndef OMIT_DEFAULT_EXC_HANDLER 161 141 /* 162 * ç»é²ããã¦ããªãä¾å¤ãçºçããã¨å¼ã³åºããã142 * 登録されていない例外が発生すると呼び出される 163 143 */ 164 144 void … … 187 167 #ifndef OMIT_DEFAULT_INT_HANDLER 188 168 /* 189 * æªç»é²ã®å²è¾¼ã¿ãçºçããå ´åã«å¼ã³åºããã169 * 未登録の割込みが発生した場合に呼び出される 190 170 */ 191 171 void -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_config.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ã³ã¢ä¾åã¢ã¸ã¥ã¼ã«ï¼ARMv8-Aç¨ï¼43 * コア依存モジュール(ARMv8-A用) 59 44 * 60 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼target_config.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯61 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã62 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼45 * このインクルードファイルは,target_config.h(または,そこからインク 46 * ルードされるファイル)のみからインクルードされる.他のファイルから 47 * 直接インクルードしてはならない. 63 48 */ 64 49 … … 67 52 68 53 /* 69 * ãã¼ãã¦ã§ã¢å®ç¾©54 * ハードウェア定義 70 55 */ 71 56 #include "arm64.h" 72 57 73 58 /* 74 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯åæå¤59 * 非タスクコンテキスト用のスタック初期値 75 60 */ 76 61 #define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz))) … … 79 64 80 65 /* 81 * å²è¾¼ã¿ãã¹ãæ°66 * 割込みネスト数 82 67 */ 83 68 extern uint8_t intnest; 84 69 85 70 /* 86 * ã³ã³ããã¹ãã®åç 87 § 71 * コンテキストの参照 88 72 * 89 73 */ … … 104 88 105 89 /* 106 * ãã£ã¹ãããã£ã®åä½éå§ï¼core_support.Sï¼90 * ディスパッチャの動作開始(core_support.S) 107 91 * 108 * start_dispatchã¯ï¼ã«ã¼ãã«èµ·åæã«å¼ã³åºãã¹ããã®ã§ï¼ãã¹ã¦ã®å²è¾¼ 109 * ã¿ãç¦æ¢ããç¶æ 110 ï¼å²è¾¼ã¿ããã¯ç¶æ 111 ã¨åçã®ç¶æ 112 ï¼ã§å¼ã³åºããªããã° 113 * ãªããªãï¼ 92 * start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込 93 * みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ 94 * ならない. 114 95 */ 115 96 extern void start_dispatch(void) NoReturn; 116 97 117 98 /* 118 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºãï¼prc_support.Sï¼99 * カーネルの終了処理の呼出し(prc_support.S) 119 100 * 120 * call_exit_kernel ã¯ï¼ã«ã¼ãã«ã®çµäºæã«å¼ã³åºãã¹ããã®ã§ï¼éã¿ã¹ã¯121 * ã³ã³ããã¹ãã«åãæãã¦ï¼ã«ã¼ãã«ã®çµäºå¦çï¼exit_kernelï¼ãå¼ã³åº122 * ãï¼101 * call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク 102 * コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出 103 * す. 123 104 */ 124 105 extern void call_exit_kernel(void) NoReturn; 125 106 126 107 /* 127 * ã¢ã¤ãã«ã«ã¼ãã®å®è£ 128 108 * アイドルループの実装 129 109 * 130 * åã«CPUããã¯ç¶æ 131 ã¨CPUããã¯è§£é¤ç¶æ 132 ãå¼ã³åºãå®è£ 133 ã¨ããï¼ 134 * ã¹ãªã¼ãã¢ã¼ãã«å 135 ¥ããå ´åã¯æ¬å¦çãwfiå½ä»¤ãç¨ãã¦æ¸ãæããã°è¯ãï¼ 110 * 単にCPUロック状態とCPUロック解除状態を呼び出す実装とする. 111 * スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い. 136 112 */ 137 113 Inline void … … 139 115 { 140 116 x_unlock_cpu(); 141 /* CPU ã¢ã³ãã㯠=> CPUããã¯*/117 /* CPUアンロック => CPUロック */ 142 118 x_lock_cpu(); 143 119 } 144 120 145 121 /* 146 * ã³ã¢ä¾åã®åæå122 * コア依存の初期化 147 123 */ 148 124 extern void core_initialize(void); 149 125 150 126 /* 151 * ã³ã¢ä¾åã®çµäºæå¦ç127 * コア依存の終了時処理 152 128 */ 153 129 extern void core_terminate(void) NoReturn; 154 130 155 131 /* 156 * å²è¾¼ã¿ãã³ãã©ã®å¼ã³åºã132 * 割込みハンドラの呼び出し 157 133 */ 158 134 extern void call_int_handler(uint32_t intno); 159 135 160 136 /* 161 * CPU ä¾å¤ãã³ãã©ã®å¼ã³åºã137 * CPU例外ハンドラの呼び出し 162 138 */ 163 139 extern void call_exc_handler(void *p_excinf, uint32_t excno); 164 140 165 141 /* 166 * FIQãã³ãã©ã®å¼ã³åºã 167 * å 168 ¨ã¦ã®ä¾å¤ããã¹ã¯ãããç¶æ 169 ã§å¼ã³åºããã 170 * ä¾å¤è¦å ã®å¤å¥ãå«ããã(ãããã¯ããããå¼ã³åºãããã«ã¼ãã³)ã§è¡ã 142 * FIQハンドラの呼び出し 143 * 全ての例外がマスクされた状態で呼び出される 144 * 例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う 171 145 */ 172 146 extern void call_fiq_handler(void); 173 147 174 148 /* 175 * ç»é²ããã¦ããªãä¾å¤ãçºçããã¨å¼ã³åºããã149 * 登録されていない例外が発生すると呼び出される 176 150 */ 177 151 extern void default_exc_handler(void *p_excinf); 178 152 179 153 /* 180 * æªç»é²ã®å²è¾¼ã¿ãçºçããå ´åã«å¼ã³åºããã154 * 未登録の割込みが発生した場合に呼び出される 181 155 */ 182 156 extern void default_int_handler(void); -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_design.txt
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 1 1 ===================================================================== 2 ARM64 ããã»ããµä¾åé¨è¨è¨ã¡ã¢2 ARM64プロセッサ依存部設計メモ 3 3 Last Modified: 16 Apr 2019 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 54 â PSTATE 55 56 AArch64ã§ã¯ããã»ããµã®ç¶æ 57 ã表ããã©ã°ã®éã¾ããã¾ã¨ãã¦PSTATEã¨å¼ã³ï¼ 58 ããããã®ãã©ã°ã¸å¥ã 59 ã«ã¢ã¯ã»ã¹ããããã®ç¹å¥ãªã¬ã¸ã¹ã¿åãå®ç¾©ããã¦ããï¼ 60 61 PSTATEã®è©³ç´°ã¯ï¼ARM Architecture Reference Manual 62 ARMv8, for ARMv8-A architecture profile ã® D1.7 ãªã©ãåç 63 §ã®ãã¨ï¼ 64 65 ã»spsel 66 EL1ããä¸ã®ä¾å¤ã¬ãã«ã§ã¯ï¼spsel ã¨ããç¹å¥ãªåç§°ã®ã¬ã¸ã¹ã¿ã«ã¢ã¯ã»ã¹ãï¼ 67 PSTATE.SPãã©ã°ã®å¤ãã»ãããã¦ä½¿ç¨ã¹ã¿ãã¯ã®åãæ¿ããè¡ãï¼ 68 69 ã»daif 70 daif ã¨ããåç§°ã®ã¬ã¸ã¹ã¿ã使ç¨ãã¦PSTATEã®D,A,I,Fããããæä½ãï¼ 71 å種ä¾å¤ããã³å²è¾¼ã¿ã®ç¦æ¢/許å¯ãå¶å¾¡ãã 72 73 74 SSPã«ã¼ãã«ã®å®è£ 75 ã§ã¯ï¼ã¹ã¿ãã¯ã¯SP_EL1ã®ã¿ã使ç¨ããï¼ 76 ã¾ãï¼CPUããã¯ç¶æ 77 ããã³å²è¾¼ã¿ããã¯ç¶æ 78 ã®å®è£ 79 ã«PSTATEã®Iããã³Fãã©ã°ã 80 å©ç¨ãã¦ããï¼ 81 82 83 â å²è¾¼ã¿ãã¯ã¿ 84 85 ãã¯ã¿ãã¼ãã«ã®ã¢ãã¬ã¹ã¯ãªã»ããæã«ï¼ã·ã¹ãã ã¬ã¸ã¹ã¿ã®ä¸ã¤Vector Base 86 Address Register(VBAR, ã·ã¹ãã ã¬ã¸ã¹ã¿)ã«ã¢ãã¬ã¹ãã»ãããããã¨ã§ï¼ 87 2048ãã¤ãå¢çã®ä»»æã®ã¢ãã¬ã¹ã«é 88 ç½®å¯è½ã§ããï¼ 89 90 SSPã«ã¼ãã«ã®å®è£ 91 ã§ã¯ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§è¨å®ãã¦ããï¼ 92 93 94 â å²è¾¼ã¿ 95 96 ããã§ã¯GICãæè¼ããããã»ããµã®å ´åã«ã¤ãã¦è¿°ã¹ãï¼ 97 ãã以å¤ã®å ´åã«ã¤ãã¦ã¯ãããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼ 98 99 100 âå²è¾¼ã¿åªå 101 度 102 103 GICã«ããã¦ã¯å²è¾¼ã¿åªå 104 度ã¯è¨å®å¤ã®å°ããæ¹ãé«åªå 105 度ã¨ãªãï¼ 106 107 åªå 108 åº¦ã¯æå¤§8bitã§ããï¼SoCæ¯ã«å®è£ 109 ããã¦ãããããå¹ 110 ãç°ãªãï¼å®è£ 111 ã 112 ãããããã8bit以ä¸ã®å ´åã¯ï¼LSBããç¡å¹ã«ãªãï¼ä¾ãã°ï¼å®è£ 113 ããã¦ã 114 ããããå¹ 115 ã7bitã®å ´åã¯ï¼ããã0ãç¡å¹ã¨ãªãï¼ 116 117 åªå 118 度ã®ããããã£ã¼ã«ãã®LSBããæ°ãããããµãåªå 119 度ã¨å¼ã¶ãã£ã¼ã«ã 120 ã«è¨å®ãããã¨ãå¯è½ã§ããï¼æ®ãã®ä¸ä½ããããããªã¨ã³ãã·ã§ã³åªå 121 度㨠122 å¼ã¶ï¼ããªã¨ã³ãã·ã§ã³åªå 123 度ãåãã§ï¼ãµãåªå 124 度ãç°ãªãåªå 125 度ã®ã°ã«ã¼ 126 ãã¯ï¼ãäºããããªã¨ã³ãããããã¨ãã§ããªãï¼ 127 128 ä¾ã¨ãã¦ï¼QEMU Virtãã¼ãåãSSPã®å®è£ 129 ã§ã¯ Cortex-A53ããã»ããµã 130 ã¿ã¼ã²ããã¨ãã¦ããï¼åªå 131 度ã¯16段é(4bit)ã§ããã0ãã3ãç¡å¹ã§ããï¼ 132 133 âå²è¾¼ã¿/ä¾å¤ã®åä» 134 135 GICã®å ´åï¼å²è¾¼ã¿ãåãä»ããã¨åãä»ããå²è¾¼ã¿ã®çªå·ãGICC_IARã«ã»ãããããï¼ 136 å²è¾¼ã¿çªå·ã¯ãã®ã¬ã¸ã¹ã¿ã«ã»ãããããå¤ã使ç¨ããï¼ 137 138 ä¾å¤çªå·ã¯ï¼ä¾å¤çºçæã®ããã»ããµç¶æ 139 ã«å¿ãã¦æ±ºå®ãããï¼ãã¯ã¿ãã¼ãã«ä¸ã® 140 ã¸ã£ã³ãå 141 ãªãã»ããæ¯ã«ç°ãªãçªå·ãå²ãæ¯ããã¨ã«ãã¦ããï¼ 142 143 ä¾å¤çºçæã®ç¶æ 144 ä¾å¤ã®ç¨®é¡ ä¾å¤çªå· ãä¾å¤ãã¯ã¿å 145 é ããã®ãªãã»ãã 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 50 ● PSTATE 51 52 AArch64ではプロセッサの状態を表すフラグの集まりをまとめてPSTATEと呼び, 53 それぞれのフラグへ別々にアクセスするための特別なレジスタ名が定義されている. 54 55 PSTATEの詳細は,ARM Architecture Reference Manual 56 ARMv8, for ARMv8-A architecture profile の D1.7 などを参照のこと. 57 58 ・spsel 59 EL1より上の例外レベルでは,spsel という特別な名称のレジスタにアクセスし, 60 PSTATE.SPフラグの値をセットして使用スタックの切り替えを行う. 61 62 ・daif 63 daif という名称のレジスタを使用してPSTATEのD,A,I,Fビットを操作し, 64 各種例外および割込みの禁止/許可を制御する 65 66 67 SSPカーネルの実装では,スタックはSP_EL1のみを使用する. 68 また,CPUロック状態および割込みロック状態の実装にPSTATEのIおよびFフラグを 69 利用している. 70 71 72 ● 割込みベクタ 73 74 ベクタテーブルのアドレスはリセット時に,システムレジスタの一つVector Base 75 Address Register(VBAR, システムレジスタ)にアドレスをセットすることで, 76 2048バイト境界の任意のアドレスに配置可能である. 77 78 SSPカーネルの実装ではスタートアップルーチンで設定している. 79 80 81 ● 割込み 82 83 ここではGICを搭載するプロセッサの場合について述べる. 84 それ以外の場合についてはチップ依存部のドキュメントに記載する. 85 86 87 ●割込み優先度 88 89 GICにおいては割込み優先度は設定値の小さい方が高優先度となる. 90 91 優先度は最大8bitであり,SoC毎に実装されているビット幅が異なる.実装さ 92 れるビットが8bit以下の場合は,LSBから無効になる.例えば,実装されてい 93 るビット幅が7bitの場合は,ビット0が無効となる. 94 95 優先度のビットフィールドのLSBから数ビットをサブ優先度と呼ぶフィールド 96 に設定することが可能である.残りの上位ビットをプリエンプション優先度と 97 呼ぶ.プリエンプション優先度が同じで,サブ優先度が異なる優先度のグルー 98 プは,お互いをプリエンプトすることができない. 99 100 例として,QEMU Virtボード向けSSPの実装では Cortex-A53プロセッサを 101 ターゲットとしており,優先度は16段階(4bit)でビット0から3が無効である. 102 103 ●割込み/例外の受付 104 105 GICの場合,割込みを受け付けると受け付けた割込みの番号がGICC_IARにセットされる. 106 割込み番号はこのレジスタにセットされる値を使用する. 107 108 例外番号は,例外発生時のプロセッサ状態に応じて決定される,ベクタテーブル中の 109 ジャンプ先オフセット毎に異なる番号を割り振ることにしている. 110 111 例外発生時の状態 例外の種類 例外番号 例外ベクタ先頭からのオフセット 146 112 AArch64, EL1t(EL1, SP_EL0) Synchronous 0 0x0000 147 113 AArch64, EL1t(EL1, SP_EL0) SError 1 0x0180 … … 153 119 AArch32, EL0 (EL0, SP_EL0) SError 7 0x0780 154 120 155 å²è¾¼ã¿ãåãä»ããéï¼åãä»ããå²è¾¼ã¿ã«è¨å®ãããåªå 156 度ããä½ãå²è¾¼ã¿ã 157 ç¦æ¢ããããï¼GICC_RPRããåå¾ããå²è¾¼ã¿è¦å ã®å²è¾¼ã¿åªå 158 度ã GICC_PMR㸠159 ã»ãããã¦ããï¼ããã¦ãã³ãã©çµäºå¾ã«å²è¾¼ã¿çºçåã®å²ãè¾¼ã¿åªå 160 åº¦ã«æ»ãï¼ 161 162 163 [CPUã¢ã¼ã] 164 165 ããã»ããµã¯ï¼EL0ããEL3ã¾ã§ã®ä¾å¤ã¬ãã«ã®ããããã§åä½ããï¼ 166 ã¾ãããããã®ã¬ãã«ã§64ãããã¢ã¼ã(AArch64) ã¾ãã¯32ãããã¢ã¼ã(AArch32)ã 167 鏿ãããã¨ãã§ããï¼ãã ãï¼ããä¾å¤ã¬ãã«ã32ãããã¢ã¼ãã§åä½ããå ´å㯠168 ããããä½ãä¾å¤ã¬ãã«ã§ã¯64ãããã¢ã¼ãã鏿ãããã¨ãã§ããªãï¼ 169 170 ã¾ãï¼ã»ãã¥ãªãã£æ¡å¼µæ©è½ãæè¼ããããã»ããµã§ã¯ã»ãã¥ã¢ã¢ã¼ãããã³ 171 éã»ãã¥ã¢ã¢ã¼ãã鏿ãããã¨ãã§ããï¼ 172 173 SSPã®å®è£ 174 ã§ã¯ï¼64ãããã¢ã¼ã(AArch64)ï¼éã»ãã¥ã¢ï¼ä¾å¤ã¬ãã«1(EL1) ã§åä½ããï¼ 175 176 177 âãªã»ããæã®ç¶æ 178 179 180 ãªã»ããæã¯ããã»ããµãããããµãã¼ãããæå¤§ã®ä¾å¤ã¬ãã«ããã³ãã®ã¬ãã«ã® 181 ã¹ã¿ãã¯(SP_ELx)ãæå¹ã¨ãªã£ã¦ããï¼ 182 183 ä¾ã¨ãã¦QEMUåãVirtãã¼ã(Cortex-A53) ã§ã¯ï¼æ¢å®ã§EL1ãæå¤§ä¾å¤ã¬ãã«ã®ãã 184 ãªã»ããç´å¾ã¯SP_EL1ãæå¹ã¨ãªã£ã¦ããï¼ 185 186 187 â ã¹ã¿ãã¯ãã¤ã³ã¿ï¼SP_EL0ã¨SP_ELxï¼ 188 189 ã¹ã¿ãã¯ãã¤ã³ã¿ã¯ï¼ä¾å¤ã¬ãã«0ã®ã¹ã¿ãã¯ãã¤ã³ã¿(SP_EL0)ããã³å®è¡ä¸ã® 190 ä¾å¤ã¬ãã«ã®ã¹ã¿ãã¯ãã¤ã³ã¿(SP_ELx)ã鏿å¯è½ã§ããï¼ 191 ã¹ã¿ãã¯ã®é¸æã¯spselã¬ã¸ã¹ã¿ã¸1ãè¨å®ããã¨SP_ELxãï¼0ãè¨å®ãã㨠192 SP_EL0 ã鏿ããï¼ 193 194 SSPã®å®è£ 195 ã§ã¯ï¼EL1 ã§ SP_EL1 ã®ã¿ã使ç¨ãã¦åä½ããï¼ 196 197 198 âä¾å¤ã¬ãã«ã®é·ç§» 199 200 ä¾å¤ã¬ãã«(EL)ã®é·ç§»ã¯å²è¾¼ã¿/ä¾å¤ã®åä»ããã³ä¾å¤ãªã¿ã¼ã³å½ä»¤(eret)ã«ããè¡ãï¼ 201 202 å²è¾¼ã¿ããã³ä¾å¤ãåãä»ãããã¨ã§çºçåã¨åãã¾ãã¯ããé«ãä¾å¤ã¬ãã«ã¸é·ç§»ããï¼ 203 䏿¹ï¼åãã¾ãã¯ããä½ãä¾å¤ã¬ãã«ã¸ã®é·ç§»ã¯ä¾å¤ãªã¿ã¼ã³å½ä»¤(eret)ã«ããè¡ãï¼ 204 205 å仿ã®é·ç§»å 206 ã¨ãªãä¾å¤ã¬ãã«ã®æå®ã¯ã·ã¹ãã ã¬ã¸ã¹ã¿ã«ããè¨å®ãããã¨ã§è¡ãï¼ 207 å²è¾¼ã¿/ä¾å¤ãªã¿ã¼ã³æã®é·ç§»å 208 ã¨ãªãä¾å¤ã¬ãã«ã¯ï¼SPSR_ELxã®ããã2ããã³3ã§ 209 æå®ããï¼å²è¾¼ã¿/ä¾å¤å仿ï¼PSTATEã®ç¶æ 210 ãSPSR_ELxã«ï¼ãªã¿ã¼ã³ã¢ãã¬ã¹ãELR_ELxã«ï¼ 211 ããããä¿åããeretå½ä»¤ã®å®è¡ã«ãããã®æ ¼ç´å¤ã復帰ãããããï¼eretå®è¡åã« 212 ãããããSPSR_ELxã«ã»ãããã¦ãããã¨ã§æå®ããä¾å¤ã¬ãã«ã¸é·ç§»ãããã¨ãå¯è½ã§ããï¼ 213 åãã¿ã¤ãã³ã°ã§ä½¿ç¨ã¹ã¿ãã¯ã64ããã/32ãããã¢ã¼ãã®æå®ãè¡ããã¨ãã§ããï¼ 214 215 QEMU VirtåãSSPã®å®è£ 216 ã§ã¯EL1ã®ã¿ã使ç¨ããããï¼ä¾å¤ã¬ãã«éã®é·ç§»å¦çã¯è¡ã£ã¦ããªãï¼ 217 218 219 âä¾å¤ã¬ãã«ã®å¤å® 220 221 ç¾ç¶ã®ä¾å¤ã¬ãã«ãå¤å®ããã«ã¯ï¼CPSRã®ããã2ããã³ããã3ã®å¤ã使ç¨ããï¼ 222 bit[3:2]ã®å¤ã 223 '11'ã®å ´åï¼EL3 224 '10'ã®å ´åï¼EL2 225 '01'ã®å ´åï¼EL1 226 '00'ã®å ´åï¼EL0 227 228 âGICC_PMRã¬ã¸ã¹ã¿ 229 230 è¨å®ããåªå 231 度以ä¸(å¤ã¨ãã¦ã¯ä»¥ä¸)ã®åªå 232 度ã®å²è¾¼ã¿ã®åä»ãç¦æ¢ããï¼ 233 è¨å®å¯è½ãªæå¤§å¤ãè¨å®ããã¨ï¼å 234 ¨ã¦ã®å²è¾¼ã¿ã許å¯ããï¼ 235 ä¾ãã°åªå 236 度ã16段éã®å ´åã¯0xf0(=0x0f << 4)ãã»ããããã¨ãã¹ã¦ã®å²è¾¼ã¿è¨±å¯ 237 ã¨ãªãï¼å¤ã¯ä¾å¤/å²è¾¼ã¿ã®åä»ã¨ãªã¿ã¼ã³ã«ããå¤åããªãããï¼åãä»ããå²è¾¼ã¿ 238 ã®åªå 239 度ãå²è¾¼ã¿ã®å 240 ¥å£å¦çã§è¨å®ããå¿ 241 è¦ãããï¼ 242 243 âä¾å¤/å²è¾¼ã¿ã®åä» 244 245 ã»ä¾å¤/å²è¾¼ã¿ãåä»ããã¨ï¼åä»ãæã«ã¢ã¯ãã£ããªã¹ã¿ãã¯ä¸ã«ä»¥ä¸ã®ã³ 246 ã³ããã¹ããä¿åããï¼ 121 割込みを受け付けた際,受け付けた割込みに設定された優先度より低い割込みを 122 禁止するため,GICC_RPRから取得した割込み要因の割込み優先度を GICC_PMRへ 123 セットしている.そしてハンドラ終了後に割込み発生前の割り込み優先度に戻す. 124 125 126 [CPUモード] 127 128 プロセッサは,EL0からEL3までの例外レベルのいずれかで動作する. 129 またそれぞれのレベルで64ビットモード(AArch64) または32ビットモード(AArch32)を 130 選択することができる.ただし,ある例外レベルが32ビットモードで動作する場合は 131 それより低い例外レベルでは64ビットモードを選択することができない. 132 133 また,セキュリティ拡張機能を搭載するプロセッサではセキュアモードおよび 134 非セキュアモードを選択することができる. 135 136 SSPの実装では,64ビットモード(AArch64),非セキュア,例外レベル1(EL1) で動作する. 137 138 139 ●リセット時の状態 140 141 リセット時はプロセッサチップがサポートする最大の例外レベルおよびそのレベルの 142 スタック(SP_ELx)が有効となっている. 143 144 例としてQEMU向けVirtボード(Cortex-A53) では,既定でEL1が最大例外レベルのため 145 リセット直後はSP_EL1が有効となっている. 146 147 148 ● スタックポインタ(SP_EL0とSP_ELx) 149 150 スタックポインタは,例外レベル0のスタックポインタ(SP_EL0)および実行中の 151 例外レベルのスタックポインタ(SP_ELx)が選択可能である. 152 スタックの選択はspselレジスタへ1を設定するとSP_ELxを,0を設定すると 153 SP_EL0 を選択する. 154 155 SSPの実装では,EL1 で SP_EL1 のみを使用して動作する. 156 157 158 ●例外レベルの遷移 159 160 例外レベル(EL)の遷移は割込み/例外の受付および例外リターン命令(eret)により行う. 161 162 割込みおよび例外を受け付けることで発生前と同じまたはより高い例外レベルへ遷移する. 163 一方,同じまたはより低い例外レベルへの遷移は例外リターン命令(eret)により行う. 164 165 受付時の遷移先となる例外レベルの指定はシステムレジスタにより設定することで行う. 166 割込み/例外リターン時の遷移先となる例外レベルは,SPSR_ELxのビット2および3で 167 指定する.割込み/例外受付時,PSTATEの状態がSPSR_ELxに,リターンアドレスがELR_ELxに, 168 それぞれ保存されeret命令の実行によりその格納値が復帰されるため,eret実行前に 169 あらかじめSPSR_ELxにセットしておくことで指定した例外レベルへ遷移することが可能である. 170 同じタイミングで使用スタックや64ビット/32ビットモードの指定も行うことができる. 171 172 QEMU Virt向けSSPの実装ではEL1のみを使用するため,例外レベル間の遷移処理は行っていない. 173 174 175 ●例外レベルの判定 176 177 現状の例外レベルを判定するには,CPSRのビット2およびビット3の値を使用する. 178 bit[3:2]の値が 179 '11'の場合:EL3 180 '10'の場合:EL2 181 '01'の場合:EL1 182 '00'の場合:EL0 183 184 ●GICC_PMRレジスタ 185 186 設定した優先度以下(値としては以上)の優先度の割込みの受付を禁止する. 187 設定可能な最大値を設定すると,全ての割込みを許可する. 188 例えば優先度が16段階の場合は0xf0(=0x0f << 4)をセットするとすべての割込み許可 189 となる.値は例外/割込みの受付とリターンにより変化しないため,受け付けた割込み 190 の優先度を割込みの入口処理で設定する必要がある. 191 192 ●例外/割込みの受付 193 194 ・例外/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ 195 ンテキストを保存する. 247 196 248 197 --------------- <- new SP 249 198 | GICC_PMR | 250 199 ---------------- 251 | å²è¾¼ã¿/ä¾å¤çªå·|200 | 割込み/例外番号| 252 201 ---------------- 253 202 | ESR_ELx | … … 261 210 | X29 | 262 211 ---------------- 263 | ï¼|264 | ï¼|212 | : | 213 | : | 265 214 ---------------- 266 215 | X1 | … … 271 220 272 221 273 å²è¾¼ã¿/ä¾å¤çºçæã®ä¸»ãªã·ã¼ã±ã³ã¹ã¯æ¬¡ã®ããã«ãªãï¼é·ç§»å 274 ã®ä¾å¤ã¬ãã«ãELxã¨è¡¨ç¾ããï¼ 275 276 ï¼ãã¼ãã¦ã§ã¢ã®å¦çï¼ 277 ã»PSTATEãSPSR_ELxã«ä¿åãã 278 ã»ãªã¿ã¼ã³ã¢ãã¬ã¹ãELR_ELxã«ä¿åãã 279 ã»PSTATE.{D,A,I,F}ã1ã«ã»ãããã 280 ã»åæä¾å¤ããã³SErrorå²è¾¼ã¿ã®ã¨ãï¼ä¾å¤è¦å æ 281 å ±ãESR_ELxã«ä¿åãã 282 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ãSP_ELxã«åãæ¿ãã 283 ã»ELxã¸é·ç§»ãã 284 285 ï¼ã½ããã¦ã§ã¢ã§ã®å¦çï¼ 286 ã»(çºçæã«SP_EL0ã使ç¨ãã¦ããå ´å)ã¹ã¿ãã¯ãå²è¾¼ã¿çºçå(SP_EL0)ã«æ»ã 287 ã»æ±ç¨ã¬ã¸ã¹ã¿(X0-X30)ãã¹ã¿ãã¯ã«ä¿å 288 ã»SPSR_ELx, ESR_ELx, ELR_ELxãã¹ã¿ãã¯ã«ä¿å 289 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ããèª¿æ´ 290 ã»å²è¾¼ã¿çªå·(GICC_IARããåå¾)ï¼ä¾å¤çªå·(ãªãã»ããæ¯ã«å®ç¾©ããå¤)ãã¹ã¿ãã¯ã«ä¿å 291 ã»å²è¾¼ã¿çºçåã®å²è¾¼ã¿åªå 292 度ãã¹ã¯ãã¹ã¿ãã¯ã«ä¿å 293 ã»GICC_PMRã«åãä»ããå²è¾¼ã¿ã®å²è¾¼ã¿åªå 294 度ãã»ãã 295 ã»å²è¾¼ã¿/ä¾å¤ãã¹ãã«ã¦ã³ã¿ã®ã¤ã³ã¯ãªã¡ã³ã 296 ã»(å²è¾¼ã¿ã®å ´å)CPUããã¯è§£é¤ 297 ã»ãã¯ã¿ãã¼ãã«ãèªã¿è¾¼ã¿ãã³ãã©ãå®è¡ãã 298 299 âä¾å¤/å²è¾¼ã¿ããã®ãªã¿ã¼ã³ 300 301 ï¼ã½ããã¦ã§ã¢ã§ã®å¦çï¼ 302 ã»CPUããã¯ç¶æ 303 ã¸ç§»è¡ 304 ã»å²è¾¼ã¿/ä¾å¤ãã¹ã¨ã«ã¦ã³ã¿ã®ãã¯ãªã¡ã³ã 305 ã»GICC_PMRã«å²è¾¼ã¿çºçåã®åªå 306 度ãã¹ã¯ãæ»ã 307 ã»ã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ã調æ´åãæ»ã 308 ã»æ»ãå 309 ã®ã³ã³ããã¹ããã·ã¹ãã ç¶æ 310 ã«å¿ãã¦å²è¾¼ã¿/ä¾å¤çºçå 311 ã¸ãªã¿ã¼ã³ 312 ã¾ãã¯é 313 å»¶ãã£ã¹ããããå®è¡ãã 314 ã»ELR_ELxã«æ»ãå 315 ã¢ãã¬ã¹ï¼SPSR_ELxã«ããã»ããµç¶æ 316 ããããã 317 ã»ããããã¦ããç¶æ 318 ã§eretå½ä»¤ãå®è¡ãï¼å²è¾¼ã¿/ä¾å¤ãããªã¿ã¼ã³ 319 320 321 âOSã®å®è£ 322 323 324 1.ã³ã¢ä¾åé¨åç§°: arm64 325 326 ARMv8 ã§ã¯ï¼64ãããã¢ã¼ã(AArch64)ããã³32ãããã¢ã¼ã(AArch32)ã®ä¸¡æ¹ããµãã¼ãããã 327 æ¬å®è£ 328 ã¯64ãããã¢ã¼ãã®ã¿ããµãã¼ããããã¨ãæç¤ºããããããã»ããµä¾åé¨åç§°ã arm64 ã¨ãã 329 330 2. ä¾å¤ã¢ã¼ãã®ä½¿ãåã 331 332 æ¬å®è£ 333 ã§ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãããããä¾å¤ã¬ãã«1(EL1)ã§åä½ããï¼ 334 ã¿ã¹ã¯ã³ã³ããã¹ããEL0ã§åä½ããæ¡ãèããããï¼ãã®å ´åã¯å²è¾¼ã¿/ä¾å¤ã®åºå£å¦çã«ãã㦠335 é 336 å»¶ãã£ã¹ãããã®åã«ä¾å¤ã¬ãã«ã®åãæ¿ããå¿ 337 è¦ã¨ãªãï¼ 338 339 3.ãã£ã¹ãããã£ã®å®è¡ã¢ã¼ã 340 341 æ¬å®è£ 342 ã§ã¯ãã¹ã¦ä¾å¤ã¬ãã«1ã§åä½ããããï¼ãã£ã¹ãããã£ã¯ä¾å¤ã¬ãã«1(EL1)ã§åä½ããï¼ 343 344 345 4.ã¹ã¿ãã¯ã®ä½¿ãåã 346 347 SSPã§ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼éã¿ã¹ã¯ã³ã³ããã¹ãå 348 ±ã«ä¸ã¤ã®ã¹ã¿ãã¯ãå 349 ±ç¨ããï¼ 350 æ¬å®è£ 351 ã§ã¯SP_ELxã使ç¨ãã¦ããï¼ 352 ãã®ä»ã«SP_EL0ã使ç¨ããå®è£ 353 ãèããããï¼ãã®å ´åã¯å²è¾¼ã¿/ä¾å¤ã®å 354 ¥å£å¦çã«ã¦ 355 ã¬ã¸ã¹ã¿ãä¿åããåã«SP_EL0ã¸ã®ã¹ã¿ãã¯åãæ¿ããè¡ãï¼ 356 357 5.ã³ã³ããã¹ãã®å¤å® 358 359 å²è¾¼ã¿/ä¾å¤ã®ãã¹ãåæ°ãä¿æãã夿°(intnest)ã0ãªãã¿ã¹ã¯ã¿ã¹ã¯ã³ã³ããã¹ãï¼ 360 1以ä¸ãªãéã¿ã¹ã¯ã³ã³ããã¹ãã¨ããï¼ 361 ã³ã³ããã¹ãæ¯ã«ä¾å¤ã¬ãã«ãåããå®è£ 362 ãåãå ´åã¯PSTATEã®ããã2ããã³3ã§ 363 ä¾å¤ã¬ãã«ãèªã¿åºããã¨ã«ããå¤å¥ããã¨ããæ¹æ³ãèããããï¼ 364 æ¬å®è£ 365 ã§ã¯ã³ã³ããã¹ãã«ãããåãä¾å¤ã¬ãã«ã使ç¨ãï¼ããã»ããµã® 366 ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã§ã¯å¤å¥ãã§ããªããã夿°ã§å¤å¥ããï¼ 367 368 6. CPUãã㯠369 370 CPUããã¯PSTATE.Iã«ããCPUããã¯ãå®ç¾ããï¼ 371 372 7. å²è¾¼ã¿ããã¯ã¨CPUä¾å¤ã®é¢ä¿ 373 374 FIQãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¨ããããï¼å²è¾¼ã¿ããã¯ã¯PSTATE.Iã«å ã㦠375 PSTATE.Fãç¨ãã¦å®ç¾ããï¼ãã ãï¼ãã©ã°ããäºãã«ç¬ç«ãããããï¼ 376 å²è¾¼ã¿ããã¯ç¶æ 377 ã®è¨å®/è§£é¤ã®éã¯ï¼ããã¯åã«CPUããã¯ãã©ã°(=PSTATE.I)ã® 378 ç¶æ 379 ãä¿åãï¼è§£é¤åã«å 380 ã®ç¶æ 381 ã«æ»ãããã«ãã¦ããï¼ 382 383 8. å¤é¨åªå 384 度ã¨å 385 é¨åªå 386 度 387 388 å¤é¨åªå 389 度ã¨ã¯APIã§æå®ããå²è¾¼ã¿åªå 390 度(PRIå)ã®ãã¨ã§ããï¼å¤ãå°ãã 391 ã»ã©åªå 392 度ãé«ãï¼å²è¾¼ã¿ãã³ãã©ã«ã¯ï¼-1ããé£ç¶ããè² ã®å¤ãè¨å®å¯è½ã§ 393 ããï¼GICã®å ´åï¼å 394 é¨åªå 395 度ã¯ï¼GICC_PMRã¬ã¸ã¹ã¿ã«è¨å®ããå¤ã§ããï¼ 396 å¤é¨åªå 397 度ã¨å 398 é¨åªå 399 度ã®å¤æã¯ä»¥ä¸ã®ãã¯ãã§è¡¨ç¾ãããï¼ 400 401 /* å¤é¨è¡¨ç¾ã¸ã®å¤æ */ 222 割込み/例外発生時の主なシーケンスは次のようになる(遷移先の例外レベルをELxと表現する) 223 224 (ハードウェアの処理) 225 ・PSTATEをSPSR_ELxに保存する 226 ・リターンアドレスをELR_ELxに保存する 227 ・PSTATE.{D,A,I,F}を1にセットする 228 ・同期例外およびSError割込みのとき,例外要因情報をESR_ELxに保存する 229 ・スタックポインタをSP_ELxに切り替える 230 ・ELxへ遷移する 231 232 (ソフトウェアでの処理) 233 ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す 234 ・汎用レジスタ(X0-X30)をスタックに保存 235 ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存 236 ・スタックポインタのアライメントを調整 237 ・割込み番号(GICC_IARから取得),例外番号(オフセット毎に定義した値)をスタックに保存 238 ・割込み発生前の割込み優先度マスクをスタックに保存 239 ・GICC_PMRに受け付けた割込みの割込み優先度をセット 240 ・割込み/例外ネストカウンタのインクリメント 241 ・(割込みの場合)CPUロック解除 242 ・ベクタテーブルを読み込みハンドラを実行する 243 244 ●例外/割込みからのリターン 245 246 (ソフトウェアでの処理) 247 ・CPUロック状態へ移行 248 ・割込み/例外ネスとカウンタのデクリメント 249 ・GICC_PMRに割込み発生前の優先度マスクを戻す 250 ・スタックポインタのアライメント調整分を戻す 251 ・戻り先のコンテキストやシステム状態に応じて割込み/例外発生元へリターン 252 または遅延ディスパッチを実行する 253 ・ELR_ELxに戻り先アドレス,SPSR_ELxにプロセッサ状態がそれぞれ 254 セットされている状態でeret命令を実行し,割込み/例外からリターン 255 256 257 ○OSの実装 258 259 1.コア依存部名称: arm64 260 261 ARMv8 では,64ビットモード(AArch64)および32ビットモード(AArch32)の両方をサポートするが 262 本実装は64ビットモードのみをサポートすることを明示するためプロセッサ依存部名称を arm64 とした 263 264 2. 例外モードの使い分け 265 266 本実装ではタスクコンテキスト,非タスクコンテキストいずれも例外レベル1(EL1)で動作する. 267 タスクコンテキストをEL0で動作する案も考えられる.その場合は割込み/例外の出口処理において 268 遅延ディスパッチの前に例外レベルの切り替えが必要となる. 269 270 3.ディスパッチャの実行モード 271 272 本実装ではすべて例外レベル1で動作するため,ディスパッチャは例外レベル1(EL1)で動作する. 273 274 275 4.スタックの使い分け 276 277 SSPではタスクコンテキスト,非タスクコンテキスト共に一つのスタックを共用する. 278 本実装ではSP_ELxを使用している. 279 この他にSP_EL0を使用する実装も考えられる.その場合は割込み/例外の入口処理にて 280 レジスタを保存する前にSP_EL0へのスタック切り替えを行う. 281 282 5.コンテキストの判定 283 284 割込み/例外のネスト回数を保持する変数(intnest)が0ならタスクタスクコンテキスト, 285 1以上なら非タスクコンテキストとする. 286 コンテキスト毎に例外レベルを分ける実装を取る場合はPSTATEのビット2および3で 287 例外レベルを読み出すことにより判別するという方法も考えられる. 288 本実装ではコンテキストによらず同じ例外レベルを使用し,プロセッサの 289 ステータスレジスタでは判別ができないため変数で判別する. 290 291 6. CPUロック 292 293 CPUロックPSTATE.IによりCPUロックを実現する. 294 295 7. 割込みロックとCPU例外の関係 296 297 FIQをカーネル管理外の割込みとするため,割込みロックはPSTATE.Iに加えて 298 PSTATE.Fも用いて実現する.ただし,フラグをお互いに独立させるため, 299 割込みロック状態の設定/解除の際は,ロック前にCPUロックフラグ(=PSTATE.I)の 300 状態を保存し,解除前に元の状態に戻すようにしている. 301 302 8. 外部優先度と内部優先度 303 304 外部優先度とはAPIで指定する割込み優先度(PRI型)のことであり,値が小さい 305 ほど優先度が高い.割込みハンドラには,-1から連続した負の値を設定可能で 306 ある.GICの場合,内部優先度は,GICC_PMRレジスタに設定する値である. 307 外部優先度と内部優先度の変換は以下のマクロで表現される. 308 309 /* 外部表現への変換 */ 402 310 #define EXT_IPM(pri) \ 403 311 (((PRI)((pri) >> GIC_PRI_SHIFT)) - (GIC_PRI_LEVEL - 1)) 404 312 405 /* å 406 é¨è¡¨ç¾ã¸ã®å¤æ */ 313 /* 内部表現への変換 */ 407 314 #define INT_IPM(ipm) \ 408 315 (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT) 409 316 410 ããã§GIC_PRI_LEVELã¯ãµãã¼ãããå²è¾¼ã¿åªå 411 åº¦ã®æ°ï¼GIC_PRI_SHIFTã¯GICC_PMRã¬ã¸ã¹ã¿å 412 413 ã®ï¼å 414 é¨åªå 415 度ã®å¤ãæ ¼ç´ãããä½ç½®ï¼ããã0ããã®ãªãã»ããï¼ã表ãï¼ 416 417 418 9. ã«ã¼ãã«ç®¡çå 419 ã®æé«åªå 420 度(CPUããã¯ç¶æ 421 ã§ã®åªå 422 度ãã¹ã¯) 423 424 GICã®å ´åï¼ã«ã¼ãã«ç®¡çå 425 ã®å²è¾¼ã¿ã®æé«åªå 426 度ã¯è¨å®å¯è½ãªå¤é¨åªå 427 åº¦ã®æé«å¤ã¨åãã¨ããï¼ 428 429 430 以ä¸ï¼ 317 ここでGIC_PRI_LEVELはサポートする割込み優先度の数,GIC_PRI_SHIFTはGICC_PMRレジスタ内 318 の,内部優先度の値が格納される位置(ビット0からのオフセット)を表す. 319 320 321 9. カーネル管理内の最高優先度(CPUロック状態での優先度マスク) 322 323 GICの場合,カーネル管理内の割込みの最高優先度は設定可能な外部優先度の最高値と同じとする. 324 325 326 以上. -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_kernel.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * kernel.h ã®ããã»ããµä¾åé¨ï¼ARMv8-Aç¨ï¼43 * kernel.hのプロセッサ依存部(ARMv8-A用) 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 56 #ifndef TIC_NUME 72 #define TIC_NUME 1U /* ã¿ã¤ã ãã£ãã¯ã®å¨æã®åå*/57 #define TIC_NUME 1U /* タイムティックの周期の分子 */ 73 58 #endif 74 59 #ifndef TIC_DENO 75 #define TIC_DENO 1U /* ã¿ã¤ã ãã£ãã¯ã®å¨æã®åæ¯*/60 #define TIC_DENO 1U /* タイムティックの周期の分母 */ 76 61 #endif 77 62 … … 79 64 80 65 /* 81 * ã¹ã¿ãã¯ã®å 82 * ã¹ã¿ãã¯ãã¤ã³ã¿ã®ã¢ã©ã¤ã¡ã³ãã¯ãã¤ã³ã¿ãµã¤ãºã®åã«ããå¿ 83 è¦ããã 66 * スタックの型 67 * スタックポインタのアライメントはポインタサイズの倍にする必要がある 84 68 */ 85 69 #define TOPPERS_STK_T uint128_t -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_kernel.trb
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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$ … … 60 45 61 46 # 62 # ãã¹2ã®çæã¹ã¯ãªããã®ã³ã¢ä¾åé¨ï¼ARMv8-Aç¨ï¼47 # パス2の生成スクリプトのコア依存部(ARMv8-A用) 63 48 # 64 49 65 50 # 66 # ãã§ãã¯æ¹æ³ã®æå®51 # チェック方法の指定 67 52 # 68 53 $CHECK_STKSZ_ALIGN = 16 69 54 70 55 # 71 # ã¿ã¼ã²ããéä¾åé¨ã®ã¤ã³ã¯ã«ã¼ã56 # ターゲット非依存部のインクルード 72 57 # 73 58 IncludeTrb("kernel/kernel.trb") -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_rename.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_rename.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_sil.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * sil.h ã®ã³ã¢ä¾åé¨ï¼ARMv8-Aç¨ï¼43 * sil.hのコア依存部(ARMv8-A用) 59 44 */ 60 45 … … 65 50 66 51 /* 67 * ã¨ã³ãã£ã¢ã³ã®å®ç¾©52 * エンディアンの定義 68 53 */ 69 54 #define SIL_ENDIAN_LITTLE … … 72 57 73 58 /* 74 * å 75 ¨å²è¾¼ã¿ããã¯ãã©ã°ã®ã»ãã(NMIãé¤ããã¹ã¦ã®å²è¾¼ã¿ã®ç¦æ¢) 59 * 全割込みロックフラグのセット(NMIを除くすべての割込みの禁止) 76 60 */ 77 61 Inline bool_t … … 93 77 94 78 /* 95 * å 96 ¨å²è¾¼ã¿ããã¯ãã©ã°ã®è§£é¤ 79 * 全割込みロックフラグの解除 97 80 */ 98 81 Inline void … … 109 92 110 93 /* 111 * å 112 ¨å²è¾¼ã¿ããã¯ç¶æ 113 ã®å¶å¾¡ 94 * 全割込みロック状態の制御 114 95 */ 115 96 #define SIL_PRE_LOC bool_t TOPPERS_locked -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_stddef.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * t_stddef.h ã®ã³ã¢ä¾åé¨ï¼ARMv8-Aç¨ï¼43 * t_stddef.hのコア依存部(ARMv8-A用) 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_rpi3/trunk/arch/arm64_gcc/common/core_support.S
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 UINT64_C(val) (val) /* uint64_t åã®å®æ°ãä½ããã¯ã*/64 #define CAST(type, val) (val) /* åãã£ã¹ããè¡ããã¯ã*/46 #define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */ 47 #define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */ 48 #define UINT64_C(val) (val) /* uint64_t型の定数を作るマクロ */ 49 #define CAST(type, val) (val) /* 型キャストを行うマクロ */ 65 50 66 51 #include "kernel_impl.h" 67 52 68 53 /* 69 * ãã£ã¹ãããã£ã®åä½éå§54 * ディスパッチャの動作開始 70 55 */ 71 56 .text … … 75 60 start_dispatch: 76 61 /* 77 * ãã®ã«ã¼ãã³ã¯ï¼ã«ã¼ãã«èµ·åæã«ï¼ä»¥ä¸ã®ç¶æ 78 ã§å¼ã³åºãããï¼ 79 * ã»ãã¹ã¦ã®å²è¾¼ã¿ãç¦æ¢ããç¶æ 80 å²è¾¼ã¿ããã¯ç¶æ 81 ã¨åçï¼ 82 * ã»å²è¾¼ã¿åªå 83 度ãã¹ã¯å 84 ¨è§£é¤ç¶æ 85 62 * このルーチンは,カーネル起動時に,以下の状態で呼び出される. 63 * ・すべての割込みを禁止した状態割込みロック状態と同等) 64 * ・割込み優先度マスク全解除状態 86 65 * 87 * ããã§ã¯ dispatcher ãå¼ã³åºãåã®åæè¨å®ãè¡ãï¼ 88 * (1) ã·ã¹ãã ç¶æ 89 ã®åæåï¼ä»¥ä¸ã®ç¶æ 90 ã¸ç§»è¡ããï¼ 91 * ã»å 92 ¨å²è¾¼ã¿ããã¯è§£é¤ç¶æ 93 (ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿è¨±å¯) 94 * ã»CPUããã¯ç¶æ 95 (ã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ç¦æ¢) 96 * ã»å²è¾¼ã¿åªå 97 度ãã¹ã¯å 98 ¨è§£é¤ç¶æ 99 100 * ã»ãã£ã¹ããã許å¯ç¶æ 101 66 * ここでは dispatcher を呼び出す前の初期設定を行う. 67 * (1) システム状態の初期化.以下の状態へ移行する. 68 * ・全割込みロック解除状態(カーネル管理外の割込み許可) 69 * ・CPUロック状態(カーネル管理の割込み禁止) 70 * ・割込み優先度マスク全解除状態 71 * ・ディスパッチ許可状態 102 72 * 103 * (1-1) å²è¾¼ã¿åªå 104 度ãã¹ã¯ã¯åæãããã§ã« 105 * ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 106 度ãã¹ã¯å 107 ¨è§£é¤ç¶æ 108 ã«ãªã£ã¦ããï¼ 109 * (1-2) ãã£ã¹ãããç¦æ¢ãã©ã°ã¯ task_initialize ã§ disdsp ã false ã« 110 * åæåãã¦ããããï¼ãã§ã«ãã£ã¹ããã許å¯ç¶æ 111 ã«ãªã£ã¦ããï¼ 112 * (1-3) ããã§ã¯å²è¾¼ã¿ããã¯ç¶æ 113 ãè§£é¤ãï¼CPUããã¯ç¶æ 114 ã®è¨å®ãè¡ãï¼ 73 * (1-1) 割込み優先度マスクは前提よりすでに 74 * モデル上の)割込み優先度マスク全解除状態になっている. 75 * (1-2) ディスパッチ禁止フラグは task_initialize で disdsp を false に 76 * 初期化しているため,すでにディスパッチ許可状態になっている. 77 * (1-3) ここでは割込みロック状態を解除し,CPUロック状態の設定を行う. 115 78 * 116 * (2) ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæå117 * start_dispatch ãå¼ã³åºãããã¨ï¼ä»å¾ããã«æ»ã£ã¦ãããã¨ã¯ãªããã118 * ã¹ã¿ãã¯ãã¤ã³ã¿ãããã§åæåããï¼79 * (2) スタックポインタの初期化 80 * start_dispatch が呼び出されると,今後ここに戻ってくることはないため 81 * スタックポインタをここで初期化する. 119 82 */ 120 83 ldr x0, =_kernel_istkpt // setup stack … … 122 85 mov sp, x0 123 86 124 // F ãã©ã°ãã¯ãªã¢(å²è¾¼ã¿ããã¯è§£é¤ï¼CPUããã¯ç¸å½)87 // F フラグをクリア(割込みロック解除,CPUロック相当) 125 88 msr daifclr, #AARCH64_DAIF_FIQ 126 89 127 // dispatcher å¼ã³åºã90 // dispatcher呼び出し 128 91 b dispatcher 129 92 130 93 /* 131 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºã132 * 133 * ã¹ã¿ãã¯ãéã¿ã¹ã¯ã³ã³ããã¹ãç¨ã«åãæ¿ãï¼94 * カーネルの終了処理の呼出し 95 * 96 * スタックを非タスクコンテキスト用に切り替え. 134 97 * 135 98 */ … … 140 103 call_exit_kernel: 141 104 /* 142 * ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæå105 * スタックポインタの初期化 143 106 */ 144 107 ldr x0, =_kernel_istkpt … … 146 109 mov sp, x0 147 110 148 // å 149 ¨ã¦ã®ä¾å¤ããã¹ã¯(å 150 ¨å²è¾¼ã¿ããã¯ç¸å½) 111 // 全ての例外をマスク(全割込みロック相当) 151 112 msr daifset, #(AARCH64_DAIF_ALL) 152 113 153 b exit_kernel /* ã«ã¼ãã«ã®çµäºå¦çãå¼ã¶*/154 155 156 /* 157 * å²è¾¼ã¿/ä¾å¤ã³ã³ããã¹ãä¿åå¦ç114 b exit_kernel /* カーネルの終了処理を呼ぶ */ 115 116 117 /* 118 * 割込み/例外コンテキスト保存処理 158 119 */ 159 120 .macro __save_context 160 121 /* 161 * x0 - x29 ã®ä¿å(x0,x1ãã¢ããx28, x29ã¾ã§)122 * x0 - x29 の保存(x0,x1ペアからx28, x29まで) 162 123 */ 163 124 stp x1, x0, [sp, #-16]! … … 178 139 179 140 /* 180 * spsr_el1, x30 ããã¢ã§ä¿å141 * spsr_el1, x30をペアで保存 181 142 */ 182 143 mrs x21, spsr_el1 … … 184 145 185 146 /* 186 * esr_el1, elr_el1 ããã¢ã§ä¿å147 * esr_el1, elr_el1 をペアで保存 187 148 */ 188 149 mrs x21, esr_el1 … … 191 152 192 153 /* 193 * 追å ã®æ ¼ç´é åã確ä¿ããããï¼SPãæ¸ç®ãã¦ãã154 * 追加の格納領域を確保するため,SPを減算しておく 194 155 */ 195 156 sub sp, sp, #16 … … 197 158 198 159 /* 199 * ã³ã³ããã¹ã復帰å¦ç160 * コンテキスト復帰処理 200 161 */ 201 162 .macro __restore_context 202 163 /* 203 * ã¹ã¿ãã¯ã«ä¿åããä¸é¨ãã¼ã¿ã®ç ´æ£164 * スタックに保存した一部データの破棄 204 165 */ 205 166 mov x1, #16 206 167 add sp, sp, x1 207 168 /* 208 * ELR ã®å¾©å 209 (ESRã¯ç ´æ£) 169 * ELR の復元(ESRは破棄) 210 170 */ 211 171 ldp x21, x22, [sp], #16 212 172 msr elr_el1, x22 213 173 /* 214 * SPSR/x30 ã®å¾©å 215 174 * SPSR/x30 の復元 216 175 */ 217 176 ldp x21, x30, [sp], #16 … … 219 178 220 179 /* 221 * x0 - x29 ã®å¾©å 222 180 * x0 - x29 の復元 223 181 */ 224 182 ldp x29, x28, [sp], #16 … … 240 198 241 199 /* 242 * ( ã«ã¼ãã«ç®¡çå¤ã®)CPUä¾å¤/FIQã®åºå£å¦ç200 * (カーネル管理外の)CPU例外/FIQの出口処理 243 201 */ 244 202 .text … … 248 206 ret_exc: 249 207 ret_fiq: 250 __restore_context // ã¬ã¸ã¹ã¿å¾©å¸°208 __restore_context // レジスタ復帰 251 209 eret 252 210 253 211 /* 254 * å²è¾¼ã¿/(ã«ã¼ãã«ç®¡çã®)CPUä¾å¤ã®åºå£å¦ç 255 * åæï¼CPUããã¯ç¶æ 256 , ãã¹ãã«ã¦ã³ã¿ãã¯ãªã¡ã³ãæ¸ã¿ 212 * 割込み/(カーネル管理の)CPU例外の出口処理 213 * 前提:CPUロック状態, ネストカウンタデクリメント済み 257 214 */ 258 215 .text … … 260 217 .global ret_int 261 218 ret_int: 262 // æ»ãå 263 ã®ã³ã³ããã¹ãã確èªãï¼å¤æ®µå²è¾¼ã¿ãªããªã¿ã¼ã³ 219 // 戻り先のコンテキストを確認し,多段割込みならリターン 264 220 ldr x1, =_kernel_intnest 265 221 ldrb w3, [x1] 266 222 cbnz w3, int_return 267 223 268 ret_int_2: // åæ®µã®å²è¾¼ã¿ã®å ´å 269 // reqflg ã false ãªãå¼ã³åºãå 270 ã¸æ»ã 224 ret_int_2: // 初段の割込みの場合 225 // reqflg が false なら呼び出し元へ戻る 271 226 ldr x0, =reqflg 272 227 ldr w1, [x0] 273 228 cbz w1, int_return 274 229 275 ret_int_3: // reqflg ã true ã®å ´å230 ret_int_3: // reqflg が true の場合 276 231 mov w1, #0 // reqflg = false 277 232 str w1, [x0] 278 233 279 // ãã£ã¹ãããç¦æ¢ãªãå¼ã³åºãå 280 ã¸æ»ã 234 // ディスパッチ禁止なら呼び出し元へ戻る 281 235 ldr x0, =disdsp 282 236 ldr w1, [x0] … … 284 238 285 239 /* 286 * é 287 å»¶ãã£ã¹ããã 288 * search_schedtsk ã®è¿å¤(x0)ã弿°ã¨ã㦠run_task ãå¼ã³åºã 240 * 遅延ディスパッチ 241 * search_schedtsk の返値(x0)を引数として run_task を呼び出す 289 242 */ 290 243 bl search_schedtsk … … 292 245 293 246 /* 294 * å¼ã³åºãå 295 ã¸ãªã¿ã¼ã³ 247 * 呼び出し元へリターン 296 248 */ 297 249 int_return: 298 __restore_context // ã¬ã¸ã¹ã¿å¾©å¸°250 __restore_context // レジスタ復帰 299 251 eret 300 252 301 253 /* 302 * å²è¾¼ã¿ãã¯ã¿303 * æåã«å²è¾¼ã¿çºçåã®ã¹ã¿ãã¯ã«æ»ãã¦ããã¬ã¸ã¹ã¿ãä¿åãã304 * ãã¼ãã¦ã§ã¢ã«ãã£ã¦PSTATE.{I,F} ãã»ããæ¸ã§ãããã¨ãåæã¨ãã254 * 割込みベクタ 255 * 最初に割込み発生前のスタックに戻してからレジスタを保存する 256 * ハードウェアによってPSTATE.{I,F} がセット済であることを前提とする 305 257 */ 306 258 .text … … 313 265 314 266 // Sync EL1 315 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã316 __save_context 317 mov x22, #0 // ä¾å¤çªå·ãx22ã«ã»ãã267 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 268 __save_context 269 mov x22, #0 // 例外番号をx22にセット 318 270 b chip_exc_entry 319 271 320 272 // IRQ EL1 321 273 .align 7 322 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã274 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 323 275 __save_context 324 276 b chip_int_entry … … 326 278 // FIQ EL1 327 279 .align 7 328 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã¸æ»ã280 msr spsel, #0 // 例外発生前のスタック(SP_EL0)へ戻す 329 281 __save_context 330 282 b chip_fiq_entry … … 332 284 // SError EL1 333 285 .align 7 334 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã¸æ»ã335 __save_context 336 mov x22, #1 // ä¾å¤çªå·ãx22ã«ã»ãã286 msr spsel, #0 // 例外発生前のスタック(SP_EL0)へ戻す 287 __save_context 288 mov x22, #1 // 例外番号をx22にセット 337 289 b chip_exc_entry 338 290 … … 344 296 .align 7 345 297 __save_context 346 mov x22, #2 // ä¾å¤çªå·ãx22ã«ã»ãã298 mov x22, #2 // 例外番号をx22にセット 347 299 b chip_exc_entry 348 300 … … 360 312 .align 7 361 313 __save_context 362 mov x22, #3 // ä¾å¤çªå·ãx22ã«ã»ãã314 mov x22, #3 // 例外番号をx22にセット 363 315 b chip_exc_entry 364 316 … … 369 321 // Sync EL0 370 322 .align 7 371 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã372 __save_context 373 mov x22, #4 // ä¾å¤çªå·ãx22ã«ã»ãã323 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 324 __save_context 325 mov x22, #4 // 例外番号をx22にセット 374 326 b chip_exc_entry 375 327 376 328 // IRQ EL0 377 329 .align 7 378 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã330 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 379 331 __save_context 380 332 b chip_int_entry … … 382 334 // FIQ EL0 383 335 .align 7 384 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã336 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 385 337 __save_context 386 338 b chip_fiq_entry … … 388 340 // Error EL0 389 341 .align 7 390 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã391 __save_context 392 mov x22, #5 // ä¾å¤çªå·ãx22ã«ã»ãã342 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 343 __save_context 344 mov x22, #5 // 例外番号をx22にセット 393 345 b chip_exc_entry 394 346 … … 399 351 // AArch32 sync 400 352 .align 7 401 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã402 __save_context 403 mov x22, #6 // ä¾å¤çªå·ãx22ã«ã»ãã353 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 354 __save_context 355 mov x22, #6 // 例外番号をx22にセット 404 356 b chip_exc_entry 405 357 406 358 // AArch32 IRQ 407 359 .align 7 408 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã360 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 409 361 __save_context 410 362 b chip_int_entry … … 412 364 // AArch32 FIQ 413 365 .align 7 414 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã366 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 415 367 __save_context 416 368 b chip_fiq_entry … … 418 370 // AArch32 Error 419 371 .align 7 420 msr spsel, #0 // ä¾å¤çºçåã®ã¹ã¿ãã¯(SP_EL0)ã«æ»ã421 __save_context 422 mov x22, #7 // ä¾å¤çªå·ãx22ã«ã»ãã423 b chip_exc_entry 372 msr spsel, #0 // 例外発生前のスタック(SP_EL0)に戻す 373 __save_context 374 mov x22, #7 // 例外番号をx22にセット 375 b chip_exc_entry -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_sym.def
-
Property svn:mime-type
set to
text/plain; charset=utf-8
-
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_test.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 * ãã¹ãããã°ã©ã ã®ãããä¾åå®ç¾©ï¼ARMv8-Aç¨ï¼43 * テストプログラムのチップ依存定義(ARMv8-A用) 59 44 */ 60 45 … … 63 48 64 49 /* 65 * ã³ã¢ã§å 66 ±éãªå®ç¾© 50 * コアで共通な定義 67 51 */ 68 52 -
Property svn:mime-type
set to
-
ssp_rpi3/trunk/arch/arm64_gcc/common/core_timer.c
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r384 r386 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 -
Property svn:mime-type
set to