source: ssp_armv6_m_gcc/tags/1.3.0/arch/armv6_m_gcc/prc_insn.h@ 86

Last change on this file since 86 was 86, checked in by nmir-saito, 9 years ago

add separate package of SSP kernel for ARMv6-M

File size: 3.0 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
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_insn.h 1304 2008-08-27 07:28:36Z ertl-honda $
38 */
39
40
41/*
42 * コア依存の特殊命令のインライン関数定義(ARM-M用)
43 */
44
45#ifndef CORE_INSN_H
46#define CORE_INSN_H
47
48#include <arm_m.h>
49
50/*
51 * FAULTMASKのセット
52 */
53Inline void
54set_faultmask(void){
55 Asm("cpsid f":::"memory");
56}
57
58/*
59 * FAULTMASKのクリア
60 */
61Inline void
62clear_faultmask(void){
63 Asm("cpsie f":::"memory");
64}
65
66/*
67 * PRIMASKのセット
68 */
69Inline void
70set_primask(void){
71 Asm("cpsid i":::"memory");
72}
73
74/*
75 * PRIMASKのクリア
76 */
77Inline void
78clear_primask(void){
79 Asm("cpsie i":::"memory");
80}
81
82/*
83 * BASEPRIのセット
84 */
85Inline void
86set_basepri(uint32_t val){
87 Asm("msr BASEPRI, %0" : : "r"(val) : "memory");
88}
89
90/*
91 * BASEPRIの取得
92 */
93Inline uint32_t
94get_basepri(void){
95 uint32_t val;
96 Asm("mrs %0, BASEPRI" : "=r"(val));
97 return(val);
98}
99
100/*
101 * CONTROLのセット
102 */
103Inline void
104set_control(uint32_t val){
105 Asm("msr control, %0 \n"
106 " isb"
107 : : "r"(val) : "memory");
108}
109
110/*
111 * CONTROLの取得
112 */
113Inline uint32_t
114get_control(void){
115 uint32_t val;
116 Asm("mrs %0, CONTROL" : "=r"(val));
117 return(val);
118}
119
120/*
121 * ステータスレジスタ(CPSR)の現在値の読出し
122 */
123Inline uint32_t
124get_ipsr(void)
125{
126 uint32_t sr;
127 Asm("mrs %0, ipsr" : "=r"(sr));
128 return(sr);
129}
130
131#endif /* CORE_INSN_H */
Note: See TracBrowser for help on using the repository browser.