OSDN Git Service

最初のコミット。sample1が通る。
[uzume/uzume_bfin.git] / uzume_prototype / kernel / sample / cxx_sample2.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *  Copyright (C) 2003-2004 Takagi Nobuhisa
9  *
10  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
11  *  によって公表されている GNU General Public License の Version 2 に記
12  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
13  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
14  *  利用と呼ぶ)することを無償で許諾する.
15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
17  *      スコード中に含まれていること.
18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
19  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
20  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
21  *      の無保証規定を掲載すること.
22  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
24  *      と.
25  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
26  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
27  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
28  *        報告すること.
29  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
30  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
31  *
32  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
34  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
35  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
36  *
37  *  @(#) $Id: cxx_sample2.h,v 1.2 2010/05/09 04:22:42 suikan Exp $
38  */
39
40 #include <t_services.h>
41
42 /*
43  *  各タスクの優先度の定義
44  */
45
46 #define MAIN_PRIORITY   5       /* メインタスクの優先度 */
47                     /* HIGH_PRIORITY より高くすること */
48
49 #define HIGH_PRIORITY   9       /* 並列に実行されるタスクの優先度 */
50 #define MID_PRIORITY    10
51 #define LOW_PRIORITY    11
52
53 /*
54  *  ターゲット依存の定義(CPU例外ハンドラの起動方法など)
55  */
56
57 #ifdef M68K
58
59 #define CPUEXC1     5       /* ゼロ除算例外 */
60 #define RAISE_CPU_EXCEPTION syslog(LOG_NOTICE, "zerodiv = %d", 10 / 0)
61
62 #elif defined(SH3)
63
64 #define CPUEXC1     224     /* ロードエラー例外 */
65 #define RAISE_CPU_EXCEPTION (*((volatile int *) 0xFFFFFEC1))
66
67 #elif defined(SH1)
68
69 #define CPUEXC1     9       /* CPUアドレスエラー例外 */
70 #define RAISE_CPU_EXCEPTION (*((volatile int *) 0xFFFFFEC1))
71 #ifdef TOKIWA_SH1
72 #define STACK_SIZE  512     /* タスクのスタックサイズ */
73 #endif /* TOKIWA_SH1 */
74
75 #elif defined(ARMV4)
76
77 #define CPUEXC1     4       /* ロードエラー例外 */
78 #define RAISE_CPU_EXCEPTION (*((volatile int *) 0xFFFFFEC1))
79
80 #elif defined(V850)
81
82 #elif defined(H8)
83
84 #undef CPUEXC1              /* CPU例外ハンドラをサポートしない */
85 #define TASK_PORTID 2       /* 文字入力するシリアルポートID */
86
87 #elif defined(H8S)
88
89 #undef CPUEXC1              /* CPU例外ハンドラをサポートしない */
90 #define LOOP_REF    4000L       /* 速度計測用のループ回数 */
91
92 #elif defined(MICROBLAZE)
93
94 #undef CPUEXC1              /* CPU例外ハンドラをサポートしない */
95 #define STACK_SIZE  2048        /* タスクのスタックサイズ */
96
97 #elif defined(IA32)
98
99 #define CPUEXC1     0       /* ゼロ除算例外 */
100 #define RAISE_CPU_EXCEPTION   syslog(LOG_NOTICE, "zerodiv = %d", 10 / 0)
101 #define OMIT_VGET_TIM
102
103 #elif defined(TMS320C54X)
104
105 #undef CPUEXC1              /* CPU例外ハンドラをサポートしない */
106 #define STACK_SIZE  320     /* タスクのスタックサイズ */
107 #define LOOP_REF    500000L     /* 速度計測用のループ回数 */
108
109 #elif defined(XSTORMY16)
110
111 #define CPUEXC1     0       /* 無効命令例外 */
112 #define RAISE_CPU_EXCEPTION __asm__( ".hword 0x0006" )
113 #define OMIT_VGET_TIM           /* vxget_tim()は非サポート */
114 #define LOOP_REF    4000L       /* 速度計測用のループ回数 */
115 #define STACK_SIZE  256     /* タスクのスタックサイズ */
116 #define TASK_PORTID 2       /* SIOはポート2を用いる */
117
118 #elif defined(MIPS3) || defined(MIPS64)
119
120 #define CPUEXC1     Bp      /* ブレークポイント例外(ゼロ除算時に発生) */
121 #define RAISE_CPU_EXCEPTION   syslog(LOG_NOTICE, "zerodiv = %d", 10 / 0)
122
123 #elif defined(LINUX)
124
125 #undef CPUEXC1              /* CPU例外ハンドラをサポートしない */
126 #define OMIT_VGET_TIM
127 #define LOOP_REF    4000000     /* 速度計測用のループ回数 */
128
129 #elif defined(NIOS2)
130
131 #define CPUEXC1     0         /* 未実装命令例外 */
132 #define RAISE_CPU_EXCEPTION   Asm("div zero, zero, zero");
133
134 #endif
135
136 /*
137  *  ターゲットに依存する可能性のある定数の定義
138  */
139
140 #ifndef TASK_PORTID
141 #define TASK_PORTID 1       /* 文字入力するシリアルポートID */
142 #endif /* TASK_PORTID */
143
144 #ifndef STACK_SIZE
145 #define STACK_SIZE  1024        /* タスクのスタックサイズ */
146 #endif /* STACK_SIZE */
147
148 /*
149  *  関数のプロトタイプ宣言
150  */
151 #ifndef _MACRO_ONLY
152
153 #ifdef __cplusplus
154 extern "C" {
155 #endif
156
157 extern void main_task(VP_INT exinf);
158 extern void task(VP_INT exinf);
159 extern void _toppers_cxxrt_reset_specific(void) throw();
160
161 #ifdef __cplusplus
162 }
163 #endif
164
165 #endif /* _MACRO_ONLY */