source: asp3_wo_tecs/trunk/target/dummy_gcc/target_kernel_impl.h@ 305

Last change on this file since 305 was 305, checked in by ertl-honda, 7 years ago

3.0.0のリリース版に追従

File size: 9.5 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2013-2015 by Embedded and Real-Time Systems Laboratory
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 *
9 * 上記著作権者
10は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
12 * 変・再é…
13å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16 * スコード中に含まれていること.
17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18 * 用できる形で再é…
19å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
20å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
21 * 者
22マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * の無保証規定を掲載すること.
24 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25 * 用できない形で再é…
26å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
27 * と.
28 * (a) 再é…
29å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
30マニュアルなど)に,上記の著
31 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
32 * (b) 再é…
33å¸ƒã®å½¢æ…
34‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
35 * 報告すること.
36 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
37 * 害からも,上記著作権者
38およびTOPPERSプロジェクトをå…
39è²¬ã™ã‚‹ã“と.
40 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
41 * 由に基づく請求からも,上記著作権者
42およびTOPPERSプロジェクトを
43 * å…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
49 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
50 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
51 * の責任を負わない.
52 *
53 * $Id: target_kernel_impl.h 471 2015-12-30 10:03:16Z ertl-hiro $
54 */
55
56/*
57 * カーネルのターゲット依存部(ダミーターゲット用)
58 *
59 * カーネルのターゲット依存部のヘッダファイル.kernel_impl.hのターゲッ
60 * ト依存部の位置付けとなる.
61 */
62
63#ifndef TOPPERS_TARGET_KERNEL_IMPL_H
64#define TOPPERS_TARGET_KERNEL_IMPL_H
65
66#include <kernel.h>
67
68/*
69 * ターゲットシステムのハードウェア資源の定義
70 */
71#include "dummy.h"
72
73/*
74 * エラーチェック方法の指定
75 */
76#define CHECK_STKSZ_ALIGN 4 /* スタックサイズのアライン単位 */
77#define CHECK_INTPTR_ALIGN 4 /* intptr_t型の変数のアライン単位 */
78#define CHECK_INTPTR_NONNULL /* intptr_t型の変数の非NULLチェック */
79#define CHECK_FUNC_ALIGN 4 /* 関数のアライン単位 */
80#define CHECK_FUNC_NONNULL /* 関数の非NULLチェック */
81#define CHECK_STACK_ALIGN 4 /* スタック領域のアライン単位 */
82#define CHECK_STACK_NONNULL /* スタック領域の非NULLチェック */
83#define CHECK_MPF_ALIGN 4 /* 固定長メモリプール領域のアライン単位 */
84#define CHECK_MPF_NONNULL /* 固定長メモリプール領域の非NULLチェック */
85#define CHECK_MB_ALIGN 4 /* 管理領域のアライン単位 */
86
87/*
88 * トレースログに関する設定
89 */
90#ifdef TOPPERS_ENABLE_TRACE
91#include "arch/logtrace/trace_config.h"
92#endif /* TOPPERS_ENABLE_TRACE */
93
94/*
95 * トレースログマクロのデフォルト定義
96 */
97#ifndef LOG_INH_ENTER
98#define LOG_INH_ENTER(inhno)
99#endif /* LOG_INH_ENTER */
100
101#ifndef LOG_INH_LEAVE
102#define LOG_INH_LEAVE(inhno)
103#endif /* LOG_INH_LEAVE */
104
105#ifndef LOG_EXC_ENTER
106#define LOG_EXC_ENTER(excno)
107#endif /* LOG_EXC_ENTER */
108
109#ifndef LOG_EXC_LEAVE
110#define LOG_EXC_LEAVE(excno)
111#endif /* LOG_EXC_LEAVE */
112
113/*
114 * 非タスクコンテキスト用スタックのデフォルトのサイズ
115 */
116#define DEFAULT_ISTKSZ 4096
117
118#ifndef TOPPERS_MACRO_ONLY
119
120/*
121 * タスクコンテキストブロックの定義
122 */
123typedef struct task_context_block {
124 void *sp; /* スタックポインタ */
125 void *pc; /* 実行再開番地 */
126} TSKCTXB;
127
128/*
129 * コンテキストの参ç…
130§
131 */
132Inline bool_t
133sense_context(void)
134{
135 return(false);
136}
137
138/*
139 * CPUロック状æ…
140‹ã¸ã®é·ç§»
141 */
142Inline void
143lock_cpu(void)
144{
145}
146
147/*
148 * CPUロック状æ…
149‹ã¸ã®ç§»è¡Œï¼ˆãƒ‡ã‚£ã‚¹ãƒ‘ッチできる状æ…
150‹ï¼‰
151 */
152#define lock_cpu_dsp() lock_cpu()
153
154/*
155 * CPUロック状æ…
156‹ã®è§£é™¤
157 */
158Inline void
159unlock_cpu(void)
160{
161}
162
163/*
164 * CPUロック状æ…
165‹ã®è§£é™¤ï¼ˆãƒ‡ã‚£ã‚¹ãƒ‘ッチできる状æ…
166‹ï¼‰
167 */
168#define unlock_cpu_dsp() unlock_cpu()
169
170/*
171 * CPUロック状æ…
172‹ã®å‚ç…
173§
174 */
175Inline bool_t
176sense_lock(void)
177{
178 return(false);
179}
180
181/*
182 * 割込みを受け付けるための遅
183延処理
184 */
185Inline void
186delay_for_interrupt(void)
187{
188}
189
190/*
191 * 割込み優å…
192ˆåº¦ãƒžã‚¹ã‚¯ã®è¨­å®š
193 */
194Inline void
195t_set_ipm(PRI intpri)
196{
197}
198
199/*
200 * 割込み優å…
201ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç…
202§
203 */
204Inline PRI
205t_get_ipm(void)
206{
207 return(TIPM_ENAALL);
208}
209
210/*
211 * 割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号の範囲の判定
212 */
213#define VALID_INTNO(intno) (0U <= (intno) && (intno) <= 31U)
214#define VALID_INHNO(inhno) VALID_INTNO((INTNO)(inhno))
215#define VALID_EXCNO(excno) (0U <= (excno) && (excno) <= 7U)
216
217/*
218 * 割込み要求禁止フラグのセット
219 *
220 * 割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
221 * フラグをセットしようとした場合には,falseを返す.
222 */
223Inline bool_t
224disable_int(INTNO intno)
225{
226 return(true);
227}
228
229/*
230 * 割込み要求禁止フラグのクリア
231 *
232 * 割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
233 * フラグをクリアしようとした場合には,falseを返す.
234 */
235Inline bool_t
236enable_int(INTNO intno)
237{
238 return(true);
239}
240
241/*
242 * 割込み要求のクリア
243 */
244Inline void
245clear_int(INTNO intno)
246{
247}
248
249/*
250 * 割込み要求のチェック
251 */
252Inline bool_t
253probe_int(INTNO intno)
254{
255 return(true);
256}
257
258/*
259 * 最高優å…
260ˆé †ä½ã‚¿ã‚¹ã‚¯ã¸ã®ãƒ‡ã‚£ã‚¹ãƒ‘ッチ
261 */
262extern void dispatch(void);
263
264/*
265 * 非タスクコンテキストからのディスパッチ要求
266 */
267#define request_dispatch()
268
269/*
270 * ディスパッチャの動作開始
271 */
272extern void start_dispatch(void);
273
274/*
275 * 現在のコンテキストを捨ててディスパッチ
276 */
277extern void exit_and_dispatch(void);
278
279/*
280 * 割込みハンドラ出å…
281¥å£å‡¦ç†
282 */
283extern void int_handler_entry(void);
284
285/*
286 * CPU例外ハンドラ出å…
287¥å£å‡¦ç†
288 */
289extern void exc_handler_entry(void);
290
291/*
292 * カーネルの終了処理の呼出し
293 */
294extern void call_exit_kernel(void) NoReturn;
295
296/*
297 * タスクコンテキストの初期化
298 */
299extern void start_r(void);
300
301#define activate_context(p_tcb) \
302 /* 指定されたタスク(p_tcb)のTCB中のスタックポインタを初期化する */
303 /* start_rを,実行再開番地として自タスクのTCBに保存する */
304
305/*
306 * 割込みハンドラの設定
307 *
308 * ベクトル番号inhnoの割込みハンドラの出å…
309¥å£å‡¦ç†ã®ç•ªåœ°ã‚’int_entryに
310 * 設定する.
311 */
312Inline void
313define_inh(INHNO inhno, FP int_entry)
314{
315}
316
317/*
318 * 割込み要求ライン属性の設定
319 */
320Inline void
321config_int(INTNO intno, ATR intatr, PRI intpri)
322{
323}
324
325/*
326 * CPU例外ハンドラの設定
327 *
328 * ベクトル番号excnoのCPU例外ハンドラの出å…
329¥å£å‡¦ç†ã®ç•ªåœ°ã‚’exc_entryに設
330 * 定する.
331 */
332Inline void
333define_exc(EXCNO excno, FP exc_entry)
334{
335}
336
337/*
338 * オーバランハンドラ停止のためのマクロ
339 */
340#ifdef TOPPERS_SUPPORT_OVRHDR
341#define OVRTIMER_STOP() { \
342 lock_cpu(); \
343 _kernel_ovrtimer_stop(); \
344 unlock_cpu(); \
345 }
346#else /* TOPPERS_SUPPORT_OVRHDR */
347#define OVRTIMER_STOP()
348#endif /* TOPPERS_SUPPORT_OVRHDR */
349
350/*
351 * 割込みハンドラのå…
352¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
353 */
354#define INT_ENTRY(inhno, inthdr) inthdr
355#define INTHDR_ENTRY(inhno, inthdr, intpri)
356
357/*
358 * CPU例外ハンドラのå…
359¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
360 */
361#define EXC_ENTRY(excno, exchdr) exchdr
362#define EXCHDR_ENTRY(excno, excno_num, exchdr)
363
364/*
365 * CPU例外の発生した時のコンテキストと割込みのマスク状æ…
366‹ã®å‚ç…
367§
368 *
369 * CPU例外の発生した時のシステム状æ…
370‹ãŒï¼Œã‚«ãƒ¼ãƒãƒ«å†…
371のクリティカルセクショ
372 * ンの実行中でなく,å…
373¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ…
374‹ã§ãªãï¼ŒCPUロック状æ…
375‹ã§ãªãï¼Œã‚«ãƒ¼
376 * ネル管理外の割込みハンドラ実行中でなく,カーネル管理外のCPU例外ハン
377 * ドラ実行中でなく,タスクコンテキストであり,割込み優å…
378ˆåº¦ãƒžã‚¹ã‚¯ãŒå…
379¨
380 * 解除である時にtrue,そうでない時にfalseを返す.
381 */
382Inline bool_t
383exc_sense_intmask(void *p_excinf)
384{
385 return(true);
386}
387
388/*
389 * ターゲットシステム依存の初期化
390 */
391extern void target_initialize(void);
392
393/*
394 * ターゲットシステムの終了
395 *
396 * システムを終了する時に使う.
397 */
398extern void target_exit(void) NoReturn;
399
400#endif /* TOPPERS_MACRO_ONLY */
401#endif /* TOPPERS_TARGET_KERNEL_IMPL_H */
Note: See TracBrowser for help on using the repository browser.