3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
9 * TOPPERS/JSP for Blackfin
11 * Copyright (C) 2004,2006,2006 by Takemasa Nakamura
12 * Copyright (C) 2004 by Ujinosuke
14 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15 * によって公表されている GNU General Public License の Version 2 に記
16 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
29 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
31 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
33 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
46 * プロセッサに依存するアプリケーション用資源の定義(BLACKfin用)
48 * このインクルードファイルは,kernel.h と sil.h でインクルードされる.
49 * 他のファイルから直接インクルードすることはない.このファイルをイン
50 * クルードする前に,t_stddef.h と itron.h がインクルードされるので,
57 #define BLACKFIN /* プロセッサ略称 */
59 #define COPYRIGHT_CPU \
60 "Copyright (C) 2004-2012 by TOPPERS/JSP for Blackfin project\n"\
61 " http://sourceforge.jp/projects/toppersjsp4bf/\n"
68 #define __IMASK 0xFFE02104
69 #define __IPEND 0xFFE02108
70 #define __EVT0 0xFFE02000
72 #define __TCNTL 0xFFE03000
73 #define __TPERIOD 0xFFE03004
76 #define __pIMASK ((volatile unsigned long *)__IMASK)
77 #define __pIPEND ((volatile unsigned long *)__IPEND)
78 #define __pEVT0 ((volatile void * volatile) __EVT0)
80 #define __pTCNTL ((volatile unsigned long *)__TCNTL)
81 #define __pTPERIOD ((volatile unsigned long *)__TPERIOD)
89 #define SIL_ENDIAN SIL_ENDIAN_LITTLE /* リトルエンディアン */
96 #define SIL_PRE_LOC UINT _intmask_
97 #define SIL_LOC_INT() asm volatile ( "cli %0;": "=d"(_intmask_) )
98 #define SIL_UNL_INT() asm volatile ( "sti %0;": :"d"(_intmask_) )
109 typedef UINT INHNO; /* 割込みハンドラ番号 */
110 typedef UINT EXCNO; /* CPU例外ハンドラ番号 */
116 * システム依存部で SIL_DLY_TIM1とSIL_DLY_TIM2を定義しておく。
117 * SIL_DLY_TIM1はsil_dly_nseの呼び出しオーバーヘッド(nS)
118 * SIL_DLY_TIM2はsil_dly_nseのループの長さ(nS)
120 void sil_dly_nse(UINT dlytim);
126 * cycleカウンタから64ビットの値を取り出す。
128 typedef long long SYSUTIM; /* 性能評価用システム時刻 */
130 Inline ER vxget_tim(SYSUTIM *p_sysutim)
134 Asm( "%0=CYCLES; %1=CYCLES2;" :"=d"(lo), "=d"(hi) );
135 ((unsigned int *)p_sysutim)[0] = lo;
136 ((unsigned int *)p_sysutim)[1] = hi;
144 #define sil_wrb_iop(iop, data) sil_wrh_mem( iop, (UB)data )
145 #define sil_wrh_iop sil_wrh_mem
146 #define sil_wrw_iop sil_wrw_mem
147 #define sil_wrh_lep sil_wrh_lem
148 #define sil_wrw_lep sil_wrw_lem
149 #define sil_wrh_bep sil_wrh_bem
150 #define sil_wrw_bep sil_wrw_bem
152 VB sil_reb_iop(VP iop);
153 VH sil_reh_iop(VP iop);
154 VW sil_rew_iop(VP iop);
155 VH sil_reh_lep(VP iop);
156 VW sil_rew_lep(VP iop);
157 VH sil_reh_bep(VP iop);
158 VW sil_rew_bep(VP iop);
161 #endif /* _MACRO_ONLY */
166 #endif /* _CPU_DEFS_H_ */