Mercurial > hg > Game > Atoc
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/driver/lspe.h Tue Sep 08 13:44:18 2009 +0900 @@ -0,0 +1,52 @@ +/** + * lspe.h + * SPE プロセスマネージャ spe_manager + * 論理 SPE に関する設定情報とか + */ + +#ifndef SPE_MANAGER__SPE_H +#define SPE_MANAGER__SPE_H + +#include <linux/interrupt.h> // request_irq, free_irq + +#include "../include/hvcalls/common.h" + + +#define SPE_COUNT_REQ 0 // SPE を確保する数 (0=as many as possible) +#define SPE_COUNT_MAX 6 // これ以上の数の SPE は確保しない +#define SPE_VIRQ_CLASS_MAX 2 // SPE 仮想割り込みクラス番号の最大値 +#define SPE_LS_AREA_SIZE 0x40000 // LS エリアサイズ (256KB) +#define SPE_PRIV2_AREA_SIZE 0x20000 // 特権 2 レジスタエリアサイズ (128KB) +#define SPE_SHADOW_AREA_SIZE 0x1000 // シャドウレジスタエリアサイズ (4KB) + +/** + * lspe_data_t + * 論理 SPE データ + */ +typedef struct +{ + HVC_u64 spe_id; // 論理 SPE 識別子 + void *ls; // マップされた LS エリアの先頭アドレス + void *problem; // マップされたプロブレムステートレジスタエリアの先頭アドレス + void *priv2; // マップされた特権 2 レジスタエリアの先頭アドレス + void *shadow; // マップされたシャドウレジスタエリアの先頭アドレス + unsigned int virq[SPE_VIRQ_CLASS_MAX+1]; // 仮想割り込み番号 + char *virq_dev_name[SPE_VIRQ_CLASS_MAX+1]; // 割り込みの所有者 - spe_manager (spe0_class0) という形式 + + struct mm_struct *mm; //debug + unsigned long slb_index; //debug +} +lspe_data_t; + + +// 外部から参照される関数 +int initialize_logical_spes(const HVC_u64, const HVC_u64); +int get_lspe_count(void); +lspe_data_t *get_lspe_data(const int); +void finalize_logical_spes(void); + +// 外部から参照されるグローバル変数 +extern const HVC_u64 spe_int_mask[SPE_VIRQ_CLASS_MAX+1]; + + +#endif /*SPE_MANAGER__SPE_H*/