source: ssp_rpi3/trunk/arch/arm64_gcc/common/core_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: 5.4 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 * Copyright (C) 2015,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 * @(#) $Id: core_config.h 384 2019-04-16 11:01:09Z nmir-saito $
55 */
56
57/*
58 * コア依存モジュール(ARMv8-A用)
59 *
60 * このインクルードファイルは,target_config.h(または,そこからインク
61 * ルードされるファイル)のみからインクルードされる.他のファイルから
62 * 直接インクルードしてはならない.
63 */
64
65#ifndef TOPPERS_CORE_CONFIG_H
66#define TOPPERS_CORE_CONFIG_H
67
68/*
69 * ハードウェア定義
70 */
71#include "arm64.h"
72
73/*
74 * 非タスクコンテキスト用のスタック初期値
75 */
76#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
77
78#ifndef TOPPERS_MACRO_ONLY
79
80/*
81 * 割込みネスト数
82 */
83extern uint8_t intnest;
84
85/*
86 * コンテキストの参ç…
87§
88 *
89 */
90Inline bool_t
91sense_context(void)
92{
93 bool_t ctx;
94
95 if (intnest > 0u){
96 ctx = true;
97 }
98 else {
99 ctx = false;
100 }
101
102 return ctx;
103}
104
105/*
106 * ディスパッチャの動作開始(core_support.S)
107 *
108 * start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
109 * みを禁止した状æ…
110‹ï¼ˆå‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ…
111‹ã¨åŒç­‰ã®çŠ¶æ…
112‹ï¼‰ã§å‘¼ã³å‡ºã•ãªã‘れば
113 * ならない.
114 */
115extern void start_dispatch(void) NoReturn;
116
117/*
118 * カーネルの終了処理の呼出し(prc_support.S)
119 *
120 * call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
121 * コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
122 * す.
123 */
124extern void call_exit_kernel(void) NoReturn;
125
126/*
127 * アイドルループの実装
128
129 *
130 * 単にCPUロック状æ…
131‹ã¨CPUロック解除状æ…
132‹ã‚’呼び出す実装
133とする.
134 * スリープモードにå…
135¥ã‚Œã‚‹å ´åˆã¯æœ¬å‡¦ç†ã‚’wfi命令を用いて書き換えれば良い.
136 */
137Inline void
138idle_loop(void)
139{
140 x_unlock_cpu();
141 /* CPUアンロック => CPUロック */
142 x_lock_cpu();
143}
144
145/*
146 * コア依存の初期化
147 */
148extern void core_initialize(void);
149
150/*
151 * コア依存の終了時処理
152 */
153extern void core_terminate(void) NoReturn;
154
155/*
156 * 割込みハンドラの呼び出し
157 */
158extern void call_int_handler(uint32_t intno);
159
160/*
161 * CPU例外ハンドラの呼び出し
162 */
163extern void call_exc_handler(void *p_excinf, uint32_t excno);
164
165/*
166 * FIQハンドラの呼び出し
167 * å…
168¨ã¦ã®ä¾‹å¤–がマスクされた状æ…
169‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹
170 * 例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う
171 */
172extern void call_fiq_handler(void);
173
174/*
175 * 登録されていない例外が発生すると呼び出される
176 */
177extern void default_exc_handler(void *p_excinf);
178
179/*
180 * 未登録の割込みが発生した場合に呼び出される
181 */
182extern void default_int_handler(void);
183
184#endif /* TOPPERS_MACRO_ONLY */
185#endif /* TOPPERS_CORE_CONFIG_H */
Note: See TracBrowser for help on using the repository browser.