source: asp_nios2/trunk/arch/nios2_gcc/prc_sil.h@ 1

Last change on this file since 1 was 1, checked in by ertl-ichiba, 14 years ago

ASP 1.4.0対応のNios2依存部を追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.8 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
9 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
10 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
11 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
12 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
13 * スコード中に含まれていること.
14 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
15 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
16 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
17 * の無保証規定を掲載すること.
18 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
19 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
20 * と.
21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
22 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
24 * 報告すること.
25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
26 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
27 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
28 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
29 * 免責すること.
30 *
31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
35 * の責任を負わない.
36 *
37 * @(#) $Id: prc_sil.h 1 2010-06-14 02:33:52Z ertl-ichiba $
38 */
39
40/*
41 * sil.hのプロセッサ依存部(Nios2用)
42 */
43
44#ifndef TOPPERS_PRC_SIL_H
45#define TOPPERS_PRC_SIL_H
46
47/*
48 * プロセッサのエンディアン
49 */
50#define SIL_ENDIAN_LITTLE
51
52#ifndef TOPPERS_MACRO_ONLY
53
54/*
55 * NMIを除くすべての割込みの禁止
56 */
57Inline uint8_t
58TOPPERS_disint(void)
59{
60 uint32_t TOPPERS_status;
61
62 Asm("rdctl %0, status" : "=r" (TOPPERS_status));
63 Asm("wrctl status, %0" :: "r" (TOPPERS_status & ~(0x0001)) : "memory");
64 return((uint8_t)(TOPPERS_status & (0x0001)));
65}
66
67/*
68 * 割込み優先度マスク(内部表現)の現在値の設定
69 */
70Inline void
71TOPPERS_set_pie(uint8_t TOPPERS_pie_bit)
72{
73 uint32_t TOPPERS_status;
74
75 Asm("rdctl %0, status" : "=r" (TOPPERS_status));
76 TOPPERS_status = TOPPERS_status & ~(0x0001);
77 TOPPERS_status = TOPPERS_status | (TOPPERS_pie_bit & (0x0001));
78 Asm("wrctl status, %0" :: "r" (TOPPERS_status) : "memory");
79}
80
81/*
82 * 全割込みロック状態の制御
83 */
84#define SIL_PRE_LOC uint8_t TOPPERS_pie_bit
85#define SIL_LOC_INT() ((void)(TOPPERS_pie_bit = TOPPERS_disint()))
86#define SIL_UNL_INT() (TOPPERS_set_pie(TOPPERS_pie_bit))
87
88/*
89 * 微少時間待ち(prc_support.S)
90 */
91extern void sil_dly_nse(ulong_t dlytim);
92
93
94/*
95 * I/O空間アクセス関数郡
96 * Nios2はI/O空間とメモリ空間は区別しないが,キャッシュを無効にするため,
97 * I/Oアクセス時はこれらの関数を用いることとする.
98 */
99
100/*
101 * 8ビット単位の読出し/書込み
102 */
103Inline uint8_t
104sil_reb_iop(void *mem)
105{
106 return(__builtin_ldbuio(mem));
107}
108
109Inline void
110sil_wrb_iop(void *mem, uint8_t data)
111{
112 __builtin_stbio(mem, data);
113}
114
115/*
116 * 16ビット単位の読出し/書込み
117 */
118Inline uint16_t
119sil_reh_iop(void *mem)
120{
121 return(__builtin_ldhuio(mem));
122}
123
124Inline void
125sil_wrh_iop(void *mem, uint16_t data)
126{
127 __builtin_sthio(mem, data);
128}
129
130/*
131 * 32ビット単位の読出し/書込み
132 */
133Inline uint32_t
134sil_rew_iop(void *mem)
135{
136 return(__builtin_ldwio(mem));
137}
138
139Inline void
140sil_wrw_iop(void *mem, uint32_t data)
141{
142 __builtin_stwio(mem, data);
143}
144
145#endif /* TOPPERS_MACRO_ONLY */
146
147#endif /* TOPPERS_PRC_SIL_H */
Note: See TracBrowser for help on using the repository browser.