source: atk1_sh2/trunk/config/sh2-gnu/cpu_insn.h@ 4

Last change on this file since 4 was 4, checked in by msugi, 14 years ago

Interface誌2006年8月号添付のTOPPERS/OSEK用SH2をTOPPERS/ATK1に対応させました.多少のバグフィックスも行っています.

File size: 3.4 KB
Line 
1/*
2 * TOPPERS/OSEK Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * OSEK Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2001-2003 by Industrial Technology Institute,
9 * Miyagi Prefectural Government, JAPAN
10 * Copyright (C) 2006 by Witz Corporation, JAPAN
11 *
12 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚©CFree Software Foundation
13 * ‚É‚æ‚Á‚ÄŒö•\‚³‚ê‚Ä‚¢‚é GNU General Public License ‚Ì Version 2 ‚É‹L
14 * q‚³‚ê‚Ä‚¢‚éðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒFƒAi–{ƒ\ƒtƒgƒEƒFƒA
15 * ‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏEÄ”z•ziˆÈ‰ºC
16 * —˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
17 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
18 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
19 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
20 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
21 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
22ƒƒ“ƒgi—˜—p
23 * ŽÒƒ}ƒjƒ…
24ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
25 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
26 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
27 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
28 * ‚ƁD
29 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
30ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
31ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
32 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
33 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
34 * •ñ‚·‚邱‚ƁD
35 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
36 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
37 *
38 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
39 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC‚»‚Ì“K—p‰Â”\«‚à
40 * ŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼
41 * Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚𕉂í‚È‚¢D
42 *
43 */
44
45/*
46 * ’჌ƒxƒ‹ƒvƒƒZƒbƒT‘€ìƒ‹[ƒ`ƒ“(SH2—p)
47 */
48
49
50#ifndef _CPU_INSN_H_
51#define _CPU_INSN_H_
52
53/*
54 * InlineŠÖ”ƒvƒƒgƒ^ƒCƒvéŒ¾
55 */
56Inline void disable_int(void);
57Inline void enable_int(void);
58Inline void nop(void);
59Inline void set_sr(UINT32 sr);
60Inline UINT32 current_sr(void);
61
62
63extern UINT32 lock_flag;
64extern UINT32 intmask;
65
66/*
67 * ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^iSRj‚ÌŒ»Ý’l‚̕ύX
68 */
69Inline void
70set_sr(UINT32 sr)
71{
72 Asm("ldc %0, sr" : : "r"(sr) );
73}
74
75/*
76 * ƒXƒe[ƒ^ƒXƒŒƒWƒXƒ^iSRj‚ÌŒ»Ý’l‚̓Ǐo‚µ
77 */
78Inline UINT32
79current_sr(void)
80{
81 UINT32 sr;
82 Asm("stc sr,%0" : "=r"(sr));
83 return(sr);
84}
85
86
87/*
88 * ŠO•”Š„ž‚Ý‘S‹ÖŽ~
89 */
90Inline void
91disable_int(void)
92{
93 volatile UINT32 intmask_temp;
94
95 /*
96 * ‚±‚±‚э[ƒJƒ‹•Ï”‚ÉSRƒŒƒWƒXƒ^‚Ì’l‚ð•Û‘¶‚µ‚Ä‚¢‚é‚̂́A
97 * SRƒŒƒWƒXƒ^‚̓ǂݏo‚µ‚ÆŽÀÛ‚ÉŠ„ž‚Ý‹ÖŽ~‚ÌŠÔ‚ÉŠ„‚荞‚Ý‚ª“ü‚Á‚½ê‡‚ɁA
98 * Š„‚荞‚݃nƒ“ƒhƒ‰“à‚ÅŠ„‚荞‚Ý‹ÖŽ~‚ðŽÀs‚·‚é‚Æintmask’l‚ª
99 * ‘‚«Š·‚í‚Á‚Ä‚µ‚Ü‚¤‚½‚ß‚Å‚ ‚é
100 */
101
102 intmask_temp = current_sr() & 0x000000f0u;
103 set_sr((current_sr() & ~0x000000f0u) | (MAX_IPM << 4) );
104 intmask = intmask_temp;
105 lock_flag = 1;
106}
107
108
109/*
110 * ŠO•”Š„ž‚Ý‘S‹ÖŽ~‰ðœ
111 */
112Inline void
113enable_int(void)
114{
115 lock_flag = 0;
116 set_sr((current_sr() & ~0x000000f0u) | intmask);
117}
118
119
120/*
121 * nop –½—ß‚ÌŽÀs
122 */
123Inline void
124nop(void)
125{
126 asm(" nop");
127}
128
129#endif /* _CPU_INSN_H_ */
Note: See TracBrowser for help on using the repository browser.