prc_sil.h

説明を見る。
00001 /*
00002  *  TOPPERS Software
00003  *      Toyohashi Open Platform for Embedded Real-Time Systems
00004  * 
00005  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
00006  *                              Toyohashi Univ. of Technology, JAPAN
00007  *  Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory
00008  *              Graduate School of Information Science, Nagoya Univ., JAPAN
00009  * 
00010  *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
00011  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
00012  *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
00013  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
00014  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
00015  *      スコード中に含まれていること.
00016  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
00017  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
00018  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
00019  *      の無保証規定を掲載すること.
00020  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
00021  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
00022  *      と.
00023  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
00024  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
00025  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
00026  *        報告すること.
00027  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
00028  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
00029  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
00030  *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
00031  *      免責すること.
00032  * 
00033  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
00034  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
00035  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
00036  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
00037  *  の責任を負わない.
00038  * 
00039  *  @(#) $Id: prc_sil.h 916 2008-04-11 14:33:50Z hiro $
00040  */
00041 
00042 /*
00043  *      sil.hのプロセッサ依存部(M68040用)
00044  */
00045 
00046 #ifndef TOPPERS_PRC_SIL_H
00047 #define TOPPERS_PRC_SIL_H
00048 
00049 #ifndef TOPPERS_MACRO_ONLY
00050 
00051 /*
00052  *  NMIを除くすべての割込みの禁止
00053  */
00054 Inline uint16_t
00055 TOPPERS_disint(void)
00056 {
00057     uint16_t    TOPPERS_sr;
00058 
00059     Asm("move.w %%sr, %0" : "=g"(TOPPERS_sr));
00060     Asm("or.w #0x0700, %%sr" : : : "memory");
00061     return(TOPPERS_sr & 0x0700U);
00062 }
00063 
00064 /*
00065  *  割込み優先度マスク(内部表現)の現在値の設定
00066  */
00067 Inline void
00068 TOPPERS_set_iipm(uint16_t TOPPERS_iipm)
00069 {
00070     uint16_t    TOPPERS_sr;
00071 
00072     Asm("move.w %%sr, %0" : "=g"(TOPPERS_sr));
00073     Asm("move.w %0, %%sr" : : "g"((TOPPERS_sr & ~0x0700U) | TOPPERS_iipm)
00074                             : "memory");
00075 }
00076 
00077 /*
00078  *  全割込みロック状態の制御
00079  */
00080 #define SIL_PRE_LOC     uint16_t TOPPERS_iipm
00081 #define SIL_LOC_INT()   ((void)(TOPPERS_iipm = TOPPERS_disint()))
00082 #define SIL_UNL_INT()   (TOPPERS_set_iipm(TOPPERS_iipm))
00083 
00084 /*
00085  *  微少時間待ち
00086  */
00087 Inline void
00088 sil_dly_nse(ulong_t dlytim)
00089 {
00090     register uint32_t d0 asm("d0") = (uint32_t) dlytim;
00091     Asm("jsr _sil_dly_nse" : "=g"(d0) : "0"(d0));
00092 }
00093 
00094 #endif /* TOPPERS_MACRO_ONLY */
00095 
00096 /*
00097  *  プロセッサのエンディアン
00098  */
00099 #define SIL_ENDIAN_BIG              /* ビッグエンディアン */
00100 
00101 #endif /* TOPPERS_PRC_SIL_H */

Copyright © 2008 by Kijineko Inc.

ホームページ制作