Mercurial > hg > Game > Atoc
comparison driver/lspe.h @ 0:42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 13:44:18 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:42f240cc4bc6 |
---|---|
1 /** | |
2 * lspe.h | |
3 * SPE プロセスマネージャ spe_manager | |
4 * 論理 SPE に関する設定情報とか | |
5 */ | |
6 | |
7 #ifndef SPE_MANAGER__SPE_H | |
8 #define SPE_MANAGER__SPE_H | |
9 | |
10 #include <linux/interrupt.h> // request_irq, free_irq | |
11 | |
12 #include "../include/hvcalls/common.h" | |
13 | |
14 | |
15 #define SPE_COUNT_REQ 0 // SPE を確保する数 (0=as many as possible) | |
16 #define SPE_COUNT_MAX 6 // これ以上の数の SPE は確保しない | |
17 #define SPE_VIRQ_CLASS_MAX 2 // SPE 仮想割り込みクラス番号の最大値 | |
18 #define SPE_LS_AREA_SIZE 0x40000 // LS エリアサイズ (256KB) | |
19 #define SPE_PRIV2_AREA_SIZE 0x20000 // 特権 2 レジスタエリアサイズ (128KB) | |
20 #define SPE_SHADOW_AREA_SIZE 0x1000 // シャドウレジスタエリアサイズ (4KB) | |
21 | |
22 /** | |
23 * lspe_data_t | |
24 * 論理 SPE データ | |
25 */ | |
26 typedef struct | |
27 { | |
28 HVC_u64 spe_id; // 論理 SPE 識別子 | |
29 void *ls; // マップされた LS エリアの先頭アドレス | |
30 void *problem; // マップされたプロブレムステートレジスタエリアの先頭アドレス | |
31 void *priv2; // マップされた特権 2 レジスタエリアの先頭アドレス | |
32 void *shadow; // マップされたシャドウレジスタエリアの先頭アドレス | |
33 unsigned int virq[SPE_VIRQ_CLASS_MAX+1]; // 仮想割り込み番号 | |
34 char *virq_dev_name[SPE_VIRQ_CLASS_MAX+1]; // 割り込みの所有者 - spe_manager (spe0_class0) という形式 | |
35 | |
36 struct mm_struct *mm; //debug | |
37 unsigned long slb_index; //debug | |
38 } | |
39 lspe_data_t; | |
40 | |
41 | |
42 // 外部から参照される関数 | |
43 int initialize_logical_spes(const HVC_u64, const HVC_u64); | |
44 int get_lspe_count(void); | |
45 lspe_data_t *get_lspe_data(const int); | |
46 void finalize_logical_spes(void); | |
47 | |
48 // 外部から参照されるグローバル変数 | |
49 extern const HVC_u64 spe_int_mask[SPE_VIRQ_CLASS_MAX+1]; | |
50 | |
51 | |
52 #endif /*SPE_MANAGER__SPE_H*/ |