diff options
Diffstat (limited to 'include/asm-powerpc/spu.h')
-rw-r--r-- | include/asm-powerpc/spu.h | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index e73ea00efd8b..fdad4267b447 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h | |||
@@ -111,14 +111,12 @@ struct spu { | |||
111 | u8 *local_store; | 111 | u8 *local_store; |
112 | unsigned long problem_phys; | 112 | unsigned long problem_phys; |
113 | struct spu_problem __iomem *problem; | 113 | struct spu_problem __iomem *problem; |
114 | struct spu_priv1 __iomem *priv1; | ||
115 | struct spu_priv2 __iomem *priv2; | 114 | struct spu_priv2 __iomem *priv2; |
116 | struct list_head list; | 115 | struct list_head list; |
117 | struct list_head sched_list; | 116 | struct list_head sched_list; |
117 | struct list_head full_list; | ||
118 | int number; | 118 | int number; |
119 | int nid; | ||
120 | unsigned int irqs[3]; | 119 | unsigned int irqs[3]; |
121 | u32 isrc; | ||
122 | u32 node; | 120 | u32 node; |
123 | u64 flags; | 121 | u64 flags; |
124 | u64 dar; | 122 | u64 dar; |
@@ -144,6 +142,7 @@ struct spu { | |||
144 | char irq_c1[8]; | 142 | char irq_c1[8]; |
145 | char irq_c2[8]; | 143 | char irq_c2[8]; |
146 | 144 | ||
145 | void* pdata; /* platform private data */ | ||
147 | struct sys_device sysdev; | 146 | struct sys_device sysdev; |
148 | }; | 147 | }; |
149 | 148 | ||
@@ -170,6 +169,13 @@ extern struct spufs_calls { | |||
170 | struct module *owner; | 169 | struct module *owner; |
171 | } spufs_calls; | 170 | } spufs_calls; |
172 | 171 | ||
172 | /* coredump calls implemented in spufs */ | ||
173 | struct spu_coredump_calls { | ||
174 | asmlinkage int (*arch_notes_size)(void); | ||
175 | asmlinkage void (*arch_write_notes)(struct file *file); | ||
176 | struct module *owner; | ||
177 | }; | ||
178 | |||
173 | /* return status from spu_run, same as in libspe */ | 179 | /* return status from spu_run, same as in libspe */ |
174 | #define SPE_EVENT_DMA_ALIGNMENT 0x0008 /*A DMA alignment error */ | 180 | #define SPE_EVENT_DMA_ALIGNMENT 0x0008 /*A DMA alignment error */ |
175 | #define SPE_EVENT_SPE_ERROR 0x0010 /*An illegal instruction error*/ | 181 | #define SPE_EVENT_SPE_ERROR 0x0010 /*An illegal instruction error*/ |
@@ -182,8 +188,10 @@ extern struct spufs_calls { | |||
182 | */ | 188 | */ |
183 | #define SPU_CREATE_EVENTS_ENABLED 0x0001 | 189 | #define SPU_CREATE_EVENTS_ENABLED 0x0001 |
184 | #define SPU_CREATE_GANG 0x0002 | 190 | #define SPU_CREATE_GANG 0x0002 |
191 | #define SPU_CREATE_NOSCHED 0x0004 | ||
192 | #define SPU_CREATE_ISOLATE 0x0008 | ||
185 | 193 | ||
186 | #define SPU_CREATE_FLAG_ALL 0x0003 /* mask of all valid flags */ | 194 | #define SPU_CREATE_FLAG_ALL 0x000f /* mask of all valid flags */ |
187 | 195 | ||
188 | 196 | ||
189 | #ifdef CONFIG_SPU_FS_MODULE | 197 | #ifdef CONFIG_SPU_FS_MODULE |
@@ -199,6 +207,15 @@ static inline void unregister_spu_syscalls(struct spufs_calls *calls) | |||
199 | } | 207 | } |
200 | #endif /* MODULE */ | 208 | #endif /* MODULE */ |
201 | 209 | ||
210 | int register_arch_coredump_calls(struct spu_coredump_calls *calls); | ||
211 | void unregister_arch_coredump_calls(struct spu_coredump_calls *calls); | ||
212 | |||
213 | int spu_add_sysdev_attr(struct sysdev_attribute *attr); | ||
214 | void spu_remove_sysdev_attr(struct sysdev_attribute *attr); | ||
215 | |||
216 | int spu_add_sysdev_attr_group(struct attribute_group *attrs); | ||
217 | void spu_remove_sysdev_attr_group(struct attribute_group *attrs); | ||
218 | |||
202 | 219 | ||
203 | /* | 220 | /* |
204 | * Notifier blocks: | 221 | * Notifier blocks: |
@@ -277,6 +294,7 @@ struct spu_problem { | |||
277 | u32 spu_runcntl_RW; /* 0x401c */ | 294 | u32 spu_runcntl_RW; /* 0x401c */ |
278 | #define SPU_RUNCNTL_STOP 0L | 295 | #define SPU_RUNCNTL_STOP 0L |
279 | #define SPU_RUNCNTL_RUNNABLE 1L | 296 | #define SPU_RUNCNTL_RUNNABLE 1L |
297 | #define SPU_RUNCNTL_ISOLATE 2L | ||
280 | u8 pad_0x4020_0x4024[0x4]; /* 0x4020 */ | 298 | u8 pad_0x4020_0x4024[0x4]; /* 0x4020 */ |
281 | u32 spu_status_R; /* 0x4024 */ | 299 | u32 spu_status_R; /* 0x4024 */ |
282 | #define SPU_STOP_STATUS_SHIFT 16 | 300 | #define SPU_STOP_STATUS_SHIFT 16 |
@@ -289,8 +307,8 @@ struct spu_problem { | |||
289 | #define SPU_STATUS_INVALID_INSTR 0x20 | 307 | #define SPU_STATUS_INVALID_INSTR 0x20 |
290 | #define SPU_STATUS_INVALID_CH 0x40 | 308 | #define SPU_STATUS_INVALID_CH 0x40 |
291 | #define SPU_STATUS_ISOLATED_STATE 0x80 | 309 | #define SPU_STATUS_ISOLATED_STATE 0x80 |
292 | #define SPU_STATUS_ISOLATED_LOAD_STAUTUS 0x200 | 310 | #define SPU_STATUS_ISOLATED_LOAD_STATUS 0x200 |
293 | #define SPU_STATUS_ISOLATED_EXIT_STAUTUS 0x400 | 311 | #define SPU_STATUS_ISOLATED_EXIT_STATUS 0x400 |
294 | u8 pad_0x4028_0x402c[0x4]; /* 0x4028 */ | 312 | u8 pad_0x4028_0x402c[0x4]; /* 0x4028 */ |
295 | u32 spu_spe_R; /* 0x402c */ | 313 | u32 spu_spe_R; /* 0x402c */ |
296 | u8 pad_0x4030_0x4034[0x4]; /* 0x4030 */ | 314 | u8 pad_0x4030_0x4034[0x4]; /* 0x4030 */ |