3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
11 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
12 * によって公表されている GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
28 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
35 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
36 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
38 * @(#) $Id: cpu_config.c,v 1.1 2009/01/31 05:27:37 suikan Exp $
42 * プロセッサ依存モジュール(M68040用)
45 #include "jsp_kernel.h"
52 #ifdef SUPPORT_CHG_IPM
54 #endif /* SUPPORT_CHG_IPM */
68 * タスクコンテキストでの割込みマスクの初期化
70 #ifdef SUPPORT_CHG_IPM
71 task_intmask = 0x0000;
72 #endif /* SUPPORT_CHG_IPM */
78 memcpy(EXCVT_KERNEL, EXCVT_ORIG, EXCVT_LEN);
79 set_vbr(EXCVT_KERNEL);
80 #endif /* EXCVT_KERNEL */
91 #endif /* EXCVT_KERNEL */
94 #ifdef SUPPORT_CHG_IPM
99 * chg_ipm を使って IPM を 7(NMI 以外のすべての割込みを禁止)に変更
100 * することはできない.NMI 以外のすべての割込みを禁止したい場合には,
101 * loc_cpu によりCPUロック状態にすればよい.
102 * IPM が 0 以外の時にも,タスクディスパッチは保留されない.IPM は,
103 * タスクディスパッチによって,新しく実行状態になったタスクへ引き継が
104 * れる.そのため,タスクが実行中に,別のタスクによって IPM が変更さ
105 * れる場合がある.JSPカーネルでは,IPM の変更はタスク例外処理ルーチ
106 * ンによっても起こるので,別のタスクによって IPM が変更されることに
107 * よって,扱いが難しくなる状況は少ないと思われる.IPM の値によってタ
108 * スクディスパッチを禁止したい場合には,dis_dsp を併用すればよい.
115 LOG_CHG_IPM_ENTER(ipm);
117 CHECK_PAR(0 <= ipm && ipm <= 6);
120 task_intmask = (ipm << 8);
125 LOG_CHG_IPM_LEAVE(ercd);
137 LOG_GET_IPM_ENTER(p_ipm);
141 *p_ipm = (task_intmask >> 8);
146 LOG_GET_IPM_LEAVE(ercd, *p_ipm);
150 #endif /* SUPPORT_CHG_IPM */