source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/h8/h8_sil.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 6.1 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2001-2007 by Industrial Technology Institute,
7 * Miyagi Prefectural Government, JAPAN
8 *
9 * 上記著作権者
10は,以下の (1)〜(4) の条件か,Free Software Foundation
11 * によってå…
12¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
47 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
48 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
49 *
50 * @(#) $Id: h8_sil.h,v 1.7 2007/03/23 07:22:15 honda Exp $
51 */
52
53/*
54 * H8向けSILの拡張(ビット演算)
55 *
56 * h8.hに記述するのがエレガントだが、sil.hとのインクルードの
57 * 順番の関係で独立したファイルとする
58 * t_config.hを直接インクルードしたときにsil.hよりå…
59ˆã«ã“の
60 * ファイルがインクルードされる可能性がある。
61 *
62 * コンパイラの型チェック機能を有効にするため、ポインタ型は
63 * UB *、UH *、UW *を用いている。
64 *
65 */
66
67#ifndef _SIL_H8_H_
68#define _SIL_H8_H_
69
70#ifndef _MACRO_ONLY
71
72#include <sil.h>
73#include <cpu_insn.h> /* bitset(), bitclr() */
74
75/*
76 * 8ビットレジスタのAND演算
77 */
78Inline void
79h8_anb_reg(UB *mem, UB data)
80{
81 UB reg = sil_reb_mem((VP)mem);
82 reg &= data;
83 sil_wrb_mem((VP)mem, (VB)reg);
84}
85
86/*
87 * 8ビットレジスタのOR演算
88 */
89Inline void
90h8_orb_reg(UB *mem, UB data)
91{
92 UB reg = sil_reb_mem((VP)mem);
93 reg |= data;
94 sil_wrb_mem((VP)mem, (VB)reg);
95}
96
97
98/*
99 * 16ビットレジスタのAND演算
100 */
101Inline void
102h8_anh_reg(UH *mem, UH data)
103{
104 UH reg = sil_reh_mem((VP)mem);
105 reg &= data;
106 sil_wrh_mem((VP)mem, (VH)reg);
107}
108
109/*
110 * 16ビットレジスタのOR演算
111 */
112Inline void
113h8_orh_reg(UH *mem, UH data)
114{
115 UH reg = sil_reh_mem((VP)mem);
116 reg |= data;
117 sil_wrh_mem((VP)mem, (VH)reg);
118}
119
120/*
121 * 32ビットレジスタのAND演算
122 */
123Inline void
124h8_anw_reg(UW *mem, UW data)
125{
126 UW reg = sil_rew_mem((VP)mem);
127 reg &= data;
128 sil_wrw_mem((VP)mem, (VW)reg);
129}
130
131/*
132 * 32ビットレジスタのOR演算
133 */
134Inline void
135h8_orw_reg(UW *mem, UW data)
136{
137 UW reg = sil_rew_mem((VP)mem);
138 reg |= data;
139 sil_wrw_mem((VP)mem, (VW)reg);
140}
141
142/*
143 * 割込みレベルの設定
144 *
145 *  irc :IRCデータのå…
146ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹
147 *
148 *   UB *ipr:設定するIPRレジスタの番地
149 *   UB bit :IPRレジスタの該当するビット番号
150 *   IPM ipm:設定する割込みレベル
151 *        IPM_LEVEL0,IPM_LEVEL1のいずれか
152 */
153Inline void
154define_int_plevel(const IRC *irc)
155{
156 UB *ipr = irc->ipr;
157 UB bit = irc->bit;
158 IPM ipm = irc->ipm;
159
160 switch(ipm) {
161 case IPM_LEVEL0: /* プライオリティレベル0に設定 */
162 bitclr(ipr, bit);
163 break;
164 case IPM_LEVEL1: /* プライオリティレベル1に設定 */
165 bitset(ipr, bit);
166 break;
167 default:
168 assert(FALSE);
169 }
170}
171
172
173/*
174 * I/Oポートのデータ・ディレクション・レジスタDDRへのアクセス
175 * 
176 *  H8のDDRは書き込み専用であり、そのままでは所望のビットだけを
177 *  変更することができない。(bset,bclr命令でも回避不可)
178 *  そのため、本実装
179では、メモリ上にテンポラリを用意して、DDRの
180 *  現在値を保持する方法を採っている。
181 */
182extern UB sil_reb_ddr(UINT port) throw();
183extern void sil_wrb_ddr(UINT port, UB data) throw();
184extern void sil_anb_ddr(UINT port, UB data) throw();
185extern void sil_orb_ddr(UINT port, UB data) throw();
186
187/*
188 * DDRの番号定義
189 * 
190 *  é…
191åˆ—のインデックスに用いる。
192 *  なお、ポート7はå…
193¥åŠ›å°‚用でDDRレジスタがないため、省略している。
194 */
195enum IO_PORT {
196 IO_PORT1,
197 IO_PORT2,
198 IO_PORT3,
199 IO_PORT4,
200 IO_PORT5,
201 IO_PORT6,
202 IO_PORT8,
203 IO_PORT9,
204 IO_PORTA,
205 IO_PORTB
206};
207
208#endif /* _MACRO_ONLY */
209#endif /* _SIL_H8_H_ */
Note: See TracBrowser for help on using the repository browser.