source: atk2-sc3_fl850f1l/arch/v850_ccrh/prc_insn.h@ 165

Last change on this file since 165 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 3.9 KB
Line 
1/*
2 * TOPPERS ATK2
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 * Automotive Kernel Version 2
5 *
6 * Copyright (C) 2012-2015 by Center for Embedded Computing Systems
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 *
9 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
14 * スコード中に含まれていること.
15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
18 * の無保証規定を掲載すること.
19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
21 * と.
22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
23 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
25 * 報告すること.
26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
30 * 免責すること.
31 *
32 * 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
33 * 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
34 * はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
35 * 用する者に対して,AUTOSARパートナーになることを求めている.
36 *
37 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
38 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
39 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
40 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
41 * の責任を負わない.
42 *
43 * $Id: prc_insn.h 182 2015-06-24 07:14:37Z t_ishikawa $
44 */
45
46/*
47 * プロセッサの特殊命令のインライン関数定義(V850用)
48 */
49#ifndef TOPPERS_PRC_INSN_H
50#define TOPPERS_PRC_INSN_H
51
52#include <prc_tool.h>
53
54/*
55 * V850E3V5のみサポート
56 */
57#ifndef __v850e3v5__
58#error Only support v850e3v5 architecture!!
59#endif /* __v850e3v5__ */
60
61#ifndef TOPPERS_MACRO_ONLY
62
63#define SYNCM __syncm();
64
65LOCAL_INLINE void
66disable_int(void)
67{
68 __DI();
69}
70
71LOCAL_INLINE void
72enable_int(void)
73{
74 __EI();
75}
76
77LOCAL_INLINE uint32
78current_psw(void)
79{
80 return(__stsr_rh(5, 0));
81}
82
83LOCAL_INLINE void
84set_psw(uint32 psw)
85{
86 __ldsr_rh(5, 0, psw);
87}
88
89/*
90 * V850E3V5用の割込みコントローラ操作ルーチン
91 */
92LOCAL_INLINE void
93set_pmr(uint16 pmr)
94{
95 uint32 psw;
96
97 /* PMR must be set in di sate(PSW.ID = 1) */
98 psw = current_psw();
99 disable_int();
100
101 __ldsr_rh(11, 2, pmr);
102
103 set_psw(psw);
104}
105
106LOCAL_INLINE uint16
107get_ispr(void)
108{
109 return(__stsr_rh(10, 2));
110}
111
112LOCAL_INLINE void
113clear_ispr(void)
114{
115 uint32 psw;
116
117 /* ISPR must be set in di sate(PSW.ID = 1) */
118 psw = current_psw();
119 disable_int();
120
121 __ldsr_rh(13, 2, 1); /* INTCFG = 1; ISPR を書き換え可能に */
122 __ldsr_rh(10, 2, 0); /* ISPR = 0 */
123 __ldsr_rh(13, 2, 0); /* INTCFG = 0; ISPR を書き換え禁止に(自動更新に) */
124 __syncp();
125
126 set_psw(psw);
127}
128
129LOCAL_INLINE void
130set_intbp(uint32 intbp)
131{
132 uint32 psw;
133
134 /* INTBP must be set in di sate(PSW.ID = 1) */
135 psw = current_psw();
136 disable_int();
137
138 __ldsr_rh(4, 1, intbp);
139
140 set_psw(psw);
141}
142
143#define LDSR_REG(reg, sel, val) {\
144 __ldsr_rh(reg, sel, val);\
145}
146
147#define STSR_REG(reg, sel, val) {\
148 val = __stsr_rh(reg, sel); \
149}
150
151#define MPA_WRITE(mpuid, mpla, mpua, mpat) { \
152 __ldsr_rh(mpuid*4, 6, mpla); \
153 __ldsr_rh(mpuid*4+1, 6, mpua); \
154 __ldsr_rh(mpuid*4+2, 6, mpat); \
155}
156
157#endif /* TOPPERS_MACRO_ONLY */
158
159#endif /* TOPPERS_PRC_INSN_H */
Note: See TracBrowser for help on using the repository browser.