|
|
cpu_insn.h説明を見る。00001 /* 00002 * TOPPERS/JSP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Just Standard Profile Kernel 00005 * 00006 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * 00009 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 00010 * によって公表されている GNU General Public License の Version 2 に記 00011 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 00012 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 00013 * 利用と呼ぶ)することを無償で許諾する. 00014 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00015 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00016 * スコード中に含まれていること. 00017 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00018 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00019 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00020 * の無保証規定を掲載すること. 00021 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00022 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00023 * と. 00024 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00025 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00026 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00027 * 報告すること. 00028 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00029 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00030 * 00031 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00032 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 00033 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 00034 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 00035 * 00036 * @(#) $Id: cpu_insn.h,v 1.9 2003/06/04 01:51:39 hiro Exp $ 00037 */ 00038 00039 /* 00040 * プロセッサの特殊命令のインライン関数定義(M68040用) 00041 */ 00042 00043 #ifndef _CPU_INSN_H_ 00044 #define _CPU_INSN_H_ 00045 00046 /* 00047 * ステータスレジスタ(SR)の現在値の読出し 00048 */ 00049 Inline UH 00050 current_sr() 00051 { 00052 UH sr; 00053 00054 Asm("move.w %%sr, %0" : "=g"(sr)); 00055 return(sr); 00056 } 00057 00058 /* 00059 * ステータスレジスタ(SR)の現在値の変更 00060 */ 00061 Inline void 00062 set_sr(UH sr) 00063 { 00064 Asm("move.w %0, %%sr" : : "g"(sr)); 00065 } 00066 00067 /* 00068 * NMIを除くすべての割込みを禁止 00069 */ 00070 Inline void 00071 disint() 00072 { 00073 Asm("or.w #0x0700, %sr"); 00074 } 00075 00076 /* 00077 * すべての割込みを許可 00078 */ 00079 Inline void 00080 enaint() 00081 { 00082 Asm("and.w #~0x0700, %sr"); 00083 } 00084 00085 /* 00086 * ベクタベースレジスタ(VBR)の現在値の読出し 00087 */ 00088 Inline VP 00089 current_vbr() 00090 { 00091 VP vbr; 00092 00093 Asm("movec.l %%vbr, %0" : "=r"(vbr)); 00094 return(vbr); 00095 } 00096 00097 /* 00098 * ベクタベースレジスタ(VBR)の設定 00099 */ 00100 Inline void 00101 set_vbr(VP vbr) 00102 { 00103 Asm("movec.l %0, %%vbr" : : "r"(vbr)); 00104 } 00105 00106 /* 00107 * レディキューサーチのためのビットマップサーチ関数 00108 * 00109 * ビットマップの下位16ビットを使用し,最下位ビットを最低優先度に対応 00110 * させる. 00111 */ 00112 #define CPU_BITMAP_SEARCH 00113 #define PRIMAP_BIT(pri) (0x8000u >> (pri)) 00114 00115 Inline UINT 00116 bitmap_search(UINT bitmap) 00117 { 00118 UINT offset; 00119 00120 /* 00121 * このコードは,bitmap(UINT型)が32ビットであることを仮定し 00122 * ている. 00123 */ 00124 Asm("bfffo %1{16,16}, %0" : "=d"(offset) : "g"(bitmap)); 00125 return(offset - 16); 00126 } 00127 00128 #endif /* _CPU_INSN_H_ */ 00129 Copyright © 2006 by TAKAGI Nobuhisa. Copyright © 2006 by Kijineko Inc.. このページは Mon Dec 18 17:18:38 2006 に Doxygen によって生成されました。 データ入力からプログラム開発まで!様々なスキルを持ったメンバーが登録しています【@SOHO】 |