OSDN Git Service

13c1034500f2c6b77a6ee7a7ef9614a8ae9a8bb2
[trx-305dsp/dsp.git] / trx305 / kernel / config / blackfin / cpu_defs.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *
9  *  TOPPERS/JSP for Blackfin
10  *
11  *  Copyright (C) 2004,2006,2006 by Takemasa Nakamura
12  *  Copyright (C) 2004 by Ujinosuke
13  *
14  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
15  *  によって公表されている GNU General Public License の Version 2 に記
16  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18  *  利用と呼ぶ)することを無償で許諾する.
19  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21  *      スコード中に含まれていること.
22  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
25  *      の無保証規定を掲載すること.
26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
28  *      と.
29  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
31  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
32  *        報告すること.
33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35  *
36  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
40  *
41  *
42  */
43
44
45 /*
46  *  プロセッサに依存するアプリケーション用資源の定義(BLACKfin用)
47  *
48  *  このインクルードファイルは,kernel.h と sil.h でインクルードされる.
49  *  他のファイルから直接インクルードすることはない.このファイルをイン
50  *  クルードする前に,t_stddef.h と itron.h がインクルードされるので,
51  *  それらに依存してもよい.
52  */
53
54 #ifndef _CPU_DEFS_H_
55 #define _CPU_DEFS_H_
56
57 #define BLACKFIN            /* プロセッサ略称 */
58
59 #define COPYRIGHT_CPU \
60 "Copyright (C) 2004-2012 by TOPPERS/JSP for Blackfin project\n"\
61 "            http://sourceforge.jp/projects/toppersjsp4bf/\n"
62
63
64 /*
65  * Core MMR
66  */
67
68 #define __IMASK 0xFFE02104
69 #define __IPEND 0xFFE02108
70 #define __EVT0     0xFFE02000
71
72 #define __TCNTL    0xFFE03000
73 #define __TPERIOD  0xFFE03004
74
75
76 #define __pIMASK ((volatile unsigned long *)__IMASK)
77 #define __pIPEND ((volatile unsigned long *)__IPEND)
78 #define __pEVT0 ((volatile void * volatile) __EVT0)
79
80 #define __pTCNTL ((volatile unsigned long *)__TCNTL)
81 #define __pTPERIOD ((volatile unsigned long *)__TPERIOD)
82 /*
83  *  システム・インターフェース・レイヤー
84  */
85
86 /*
87  *  プロセッサのエンディアン
88  */
89 #define SIL_ENDIAN  SIL_ENDIAN_LITTLE   /* リトルエンディアン */
90
91
92 /*
93 * 割り込みロック制御
94 */
95
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_) )
99
100
101
102
103
104 #ifndef _MACRO_ONLY
105
106 /*
107  *  割込み/CPU例外ハンドラ番号の型
108  */
109 typedef UINT    INHNO;      /* 割込みハンドラ番号 */
110 typedef UINT    EXCNO;      /* CPU例外ハンドラ番号 */
111
112
113
114 /*
115  *  微少時間待ち
116  *  システム依存部で SIL_DLY_TIM1とSIL_DLY_TIM2を定義しておく。
117  *  SIL_DLY_TIM1はsil_dly_nseの呼び出しオーバーヘッド(nS)
118  *  SIL_DLY_TIM2はsil_dly_nseのループの長さ(nS)
119  */
120 void sil_dly_nse(UINT dlytim);
121
122
123
124 /*
125  *  性能評価用システム時刻の参照
126  *  cycleカウンタから64ビットの値を取り出す。
127  */
128 typedef long long   SYSUTIM;    /* 性能評価用システム時刻 */
129
130 Inline  ER  vxget_tim(SYSUTIM *p_sysutim)
131 {
132     unsigned int lo, hi;
133
134     Asm( "%0=CYCLES; %1=CYCLES2;" :"=d"(lo), "=d"(hi) );
135     ((unsigned int *)p_sysutim)[0] = lo;
136     ((unsigned int *)p_sysutim)[1] = hi;
137     return(0);
138 }
139
140 /*
141 * システム・メモリ・アクセス
142 */
143
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
151
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);
159
160
161 #endif /* _MACRO_ONLY */
162
163
164
165
166 #endif /* _CPU_DEFS_H_ */