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*/