diff options
Diffstat (limited to 'arch/powerpc/platforms/cell/spufs/spufs.h')
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/spufs.h | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h index a0f55ca2d48..70fb13395c0 100644 --- a/arch/powerpc/platforms/cell/spufs/spufs.h +++ b/arch/powerpc/platforms/cell/spufs/spufs.h | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <asm/spu.h> | 30 | #include <asm/spu.h> |
31 | #include <asm/spu_csa.h> | 31 | #include <asm/spu_csa.h> |
32 | #include <asm/spu_info.h> | ||
32 | 33 | ||
33 | /* The magic number for our file system */ | 34 | /* The magic number for our file system */ |
34 | enum { | 35 | enum { |
@@ -114,13 +115,19 @@ struct spu_context_ops { | |||
114 | void (*npc_write) (struct spu_context * ctx, u32 data); | 115 | void (*npc_write) (struct spu_context * ctx, u32 data); |
115 | u32(*status_read) (struct spu_context * ctx); | 116 | u32(*status_read) (struct spu_context * ctx); |
116 | char*(*get_ls) (struct spu_context * ctx); | 117 | char*(*get_ls) (struct spu_context * ctx); |
118 | u32 (*runcntl_read) (struct spu_context * ctx); | ||
117 | void (*runcntl_write) (struct spu_context * ctx, u32 data); | 119 | void (*runcntl_write) (struct spu_context * ctx, u32 data); |
118 | void (*runcntl_stop) (struct spu_context * ctx); | 120 | void (*master_start) (struct spu_context * ctx); |
121 | void (*master_stop) (struct spu_context * ctx); | ||
119 | int (*set_mfc_query)(struct spu_context * ctx, u32 mask, u32 mode); | 122 | int (*set_mfc_query)(struct spu_context * ctx, u32 mask, u32 mode); |
120 | u32 (*read_mfc_tagstatus)(struct spu_context * ctx); | 123 | u32 (*read_mfc_tagstatus)(struct spu_context * ctx); |
121 | u32 (*get_mfc_free_elements)(struct spu_context *ctx); | 124 | u32 (*get_mfc_free_elements)(struct spu_context *ctx); |
122 | int (*send_mfc_command)(struct spu_context *ctx, | 125 | int (*send_mfc_command)(struct spu_context * ctx, |
123 | struct mfc_dma_command *cmd); | 126 | struct mfc_dma_command * cmd); |
127 | void (*dma_info_read) (struct spu_context * ctx, | ||
128 | struct spu_dma_info * info); | ||
129 | void (*proxydma_info_read) (struct spu_context * ctx, | ||
130 | struct spu_proxydma_info * info); | ||
124 | }; | 131 | }; |
125 | 132 | ||
126 | extern struct spu_context_ops spu_hw_ops; | 133 | extern struct spu_context_ops spu_hw_ops; |
@@ -135,6 +142,7 @@ struct spufs_inode_info { | |||
135 | container_of(inode, struct spufs_inode_info, vfs_inode) | 142 | container_of(inode, struct spufs_inode_info, vfs_inode) |
136 | 143 | ||
137 | extern struct tree_descr spufs_dir_contents[]; | 144 | extern struct tree_descr spufs_dir_contents[]; |
145 | extern struct tree_descr spufs_dir_nosched_contents[]; | ||
138 | 146 | ||
139 | /* system call implementation */ | 147 | /* system call implementation */ |
140 | long spufs_run_spu(struct file *file, | 148 | long spufs_run_spu(struct file *file, |
@@ -162,6 +170,12 @@ void spu_acquire(struct spu_context *ctx); | |||
162 | void spu_release(struct spu_context *ctx); | 170 | void spu_release(struct spu_context *ctx); |
163 | int spu_acquire_runnable(struct spu_context *ctx); | 171 | int spu_acquire_runnable(struct spu_context *ctx); |
164 | void spu_acquire_saved(struct spu_context *ctx); | 172 | void spu_acquire_saved(struct spu_context *ctx); |
173 | int spu_acquire_exclusive(struct spu_context *ctx); | ||
174 | |||
175 | static inline void spu_release_exclusive(struct spu_context *ctx) | ||
176 | { | ||
177 | up_write(&ctx->state_sema); | ||
178 | } | ||
165 | 179 | ||
166 | int spu_activate(struct spu_context *ctx, u64 flags); | 180 | int spu_activate(struct spu_context *ctx, u64 flags); |
167 | void spu_deactivate(struct spu_context *ctx); | 181 | void spu_deactivate(struct spu_context *ctx); |
@@ -169,6 +183,8 @@ void spu_yield(struct spu_context *ctx); | |||
169 | int __init spu_sched_init(void); | 183 | int __init spu_sched_init(void); |
170 | void __exit spu_sched_exit(void); | 184 | void __exit spu_sched_exit(void); |
171 | 185 | ||
186 | extern char *isolated_loader; | ||
187 | |||
172 | /* | 188 | /* |
173 | * spufs_wait | 189 | * spufs_wait |
174 | * Same as wait_event_interruptible(), except that here | 190 | * Same as wait_event_interruptible(), except that here |
@@ -207,4 +223,15 @@ void spufs_stop_callback(struct spu *spu); | |||
207 | void spufs_mfc_callback(struct spu *spu); | 223 | void spufs_mfc_callback(struct spu *spu); |
208 | void spufs_dma_callback(struct spu *spu, int type); | 224 | void spufs_dma_callback(struct spu *spu, int type); |
209 | 225 | ||
226 | extern struct spu_coredump_calls spufs_coredump_calls; | ||
227 | struct spufs_coredump_reader { | ||
228 | char *name; | ||
229 | ssize_t (*read)(struct spu_context *ctx, | ||
230 | char __user *buffer, size_t size, loff_t *pos); | ||
231 | u64 (*get)(void *data); | ||
232 | size_t size; | ||
233 | }; | ||
234 | extern struct spufs_coredump_reader spufs_coredump_read[]; | ||
235 | extern int spufs_coredump_num_notes; | ||
236 | |||
210 | #endif | 237 | #endif |