Mercurial > hg > Game > Atoc
view driver/lspe.h @ 1:b4285b887e18 default tip
add document
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 17:33:34 +0900 |
parents | 42f240cc4bc6 |
children |
line wrap: on
line source
/** * 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*/