source: ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_config.h@ 384

Last change on this file since 384 was 384, checked in by nmir-saito, 5 years ago

add target dependent files of ssp for rpi3

  • Property svn:keywords set to Id
File size: 6.9 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2006-2016 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 * Copyright (C) 2018,2019 by Naoki Saito
8 * Nagoya Municipal Industrial Research Institute, JAPAN
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 * 他のファイルから直接インクルードしてはならない.
62 */
63
64#ifndef TOPPERS_CHIP_CONFIG_H
65#define TOPPERS_CHIP_CONFIG_H
66
67/*
68 * ハードウェア定義
69 */
70#include "bcm2837.h"
71
72/*
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部表現
90 */
91#define IIPM_ENAALL (0)
92
93/*
94 * 割込み番号の範囲の判定
95 */
96#define VALID_INTNO(intno) ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO))
97#define VALID_INTNO_DISINT(intno) VALID_INTNO(intno)
98
99/*
100 * 割込みハンドラの出å…
101¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
102 */
103#define INT_ENTRY(inhno, inthdr) inthdr
104#define INTHDR_ENTRY(inhno, inhno_num, inthdr) extern void inthdr(void);
105
106#ifndef TOPPERS_MACRO_ONLY
107
108/*
109 * CPUロック状æ…
110‹ã¸ã®ç§»è¡Œ
111 */
112Inline void
113x_lock_cpu(void)
114{
115 aarch64_set_daif_i();
116}
117
118#define t_lock_cpu() x_lock_cpu()
119#define i_lock_cpu() x_lock_cpu()
120
121/*
122 * CPUロック状æ…
123‹ã®è§£é™¤
124 */
125Inline void
126x_unlock_cpu(void)
127{
128 aarch64_clear_daif_i();
129}
130
131#define t_unlock_cpu() x_unlock_cpu()
132#define i_unlock_cpu() x_unlock_cpu()
133
134/*
135 * CPUロック状æ…
136‹ã®å‚ç…
137§
138 */
139Inline bool_t
140x_sense_lock(void)
141{
142 bool_t state;
143
144 if(aarch64_sense_daif_irq()) {
145 state = true;
146 }
147 else {
148 state = false;
149 }
150
151 return state;
152}
153
154#define t_sense_lock() x_sense_lock()
155#define i_sense_lock() x_sense_lock()
156
157/*
158 * プロセッサの割込み優å…
159ˆåº¦
160 * チップの割込みコントローラには割込み優å…
161ˆåº¦ã«ã‚ˆã‚‹åˆ¶å¾¡æ©Ÿèƒ½ãŒ
162 * 実装
163されていないため,割込み優å…
164ˆåº¦ã‚’格納する変数を用意する
165 */
166extern PRI current_intpri;
167
168/*
169 * 割込みハンドラの設定
170 */
171Inline void
172x_define_inh(INHNO inhno, FP int_entry)
173{
174}
175
176/*
177 * 割込みハンドラå…
178¥å£ã§å¿…
179要なIRC操作
180 */
181Inline void
182i_begin_int(INTNO intno)
183{
184}
185
186/*
187 * 割込みハンドラの出口で必
188要なIRC操作
189 */
190Inline void
191i_end_int(INTNO intno)
192{
193}
194
195/*
196 * 割込み要求ラインの属性の設定
197 */
198extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
199
200/*
201 * 割込み優å…
202ˆåº¦ã«ã‚‚とづく割込みのマスク
203 * 割込みのå…
204¥å£ã§ï¼Œå—け付けた割込みの割込みレベルに応じて
205 * 割込みをマスクする
206 */
207extern void chip_mask_interrupt(PRI pri);
208
209/*
210 * 割込みマスクの解除
211 * 割込みの出口で,受け付け直前の割込みレベルをもとに
212 * 割込みのマスクを解除する
213 */
214extern void chip_unmask_interrupt(PRI pri);
215
216/*
217 * 割込みå…
218¥å£ã®å‰²è¾¼ã¿æ“ä½œï¼ˆchip_support.S)
219 */
220extern void chip_int_entry(void);
221
222/*
223 * 割込み優å…
224ˆåº¦ãƒ†ãƒ¼ãƒ–ル(kernel_cfg.c)
225 */
226extern const PRI intpri_table[];
227
228/*
229 * 割込みマスクテーブル(kernel_cfg.c)
230 */
231extern const uint32_t iipm_mask_table[];
232
233/*
234 * 割込みハンドラテーブル(kernel_cfg.c)
235 */
236extern const INTHDR inh_table[];
237
238#endif /* TOPPERS_MACRO_ONLY */
239
240
241
242/*
243 * CPU例外関連
244 */
245
246/*
247 * CPU例外ハンドラ番号
248 */
249#define VALID_EXCNO_DEFEXC(excno) (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO)
250
251/*
252 * CPU例外ハンドラのå…
253¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
254 */
255#define EXC_ENTRY(excno, exchdr) exchdr
256#define EXCHDR_ENTRY(excno, excno_num, exchdr) extern void exchdr(void *p_excinf);
257
258
259#ifndef TOPPERS_MACRO_ONLY
260
261/*
262 * CPU例外ハンドラの設定
263 */
264Inline void
265x_define_exc(EXCNO excno, FP exc_entry)
266{
267}
268
269/*
270 * 例外å…
271¥å£ã®å‰²è¾¼ã¿æ“ä½œï¼ˆchip_support.S)
272 */
273extern void chip_exc_entry(void);
274
275/*
276 * 例外ハンドラテーブル(kernel_cfg.c)
277 */
278extern const EXCHDR exc_table[];
279
280#endif /* TOPPERS_MACRO_ONLY */
281
282/*
283 * その他
284 */
285
286#ifndef TOPPERS_MACRO_ONLY
287
288/*
289 * チップ依存の初期化
290 */
291extern void chip_initialize(void);
292
293/*
294 * チップ依存の終了処理
295 */
296extern void chip_terminate(void) NoReturn;
297
298#endif /* TOPPERS_MACRO_ONLY */
299
300/*
301 * コア依存定義
302 */
303#include "arm64_gcc/common/core_config.h"
304
305#endif /* TOPPERS_CHIP_CONFIG_H */
Note: See TracBrowser for help on using the repository browser.