Lines Matching refs:cpu
184 void __lgread(struct lg_cpu *cpu, void *b, unsigned long addr, unsigned bytes) in __lgread() argument
186 if (!lguest_address_ok(cpu->lg, addr, bytes) in __lgread()
187 || copy_from_user(b, cpu->lg->mem_base + addr, bytes) != 0) { in __lgread()
190 kill_guest(cpu, "bad read address %#lx len %u", addr, bytes); in __lgread()
195 void __lgwrite(struct lg_cpu *cpu, unsigned long addr, const void *b, in __lgwrite() argument
198 if (!lguest_address_ok(cpu->lg, addr, bytes) in __lgwrite()
199 || copy_to_user(cpu->lg->mem_base + addr, b, bytes) != 0) in __lgwrite()
200 kill_guest(cpu, "bad write address %#lx len %u", addr, bytes); in __lgwrite()
209 int run_guest(struct lg_cpu *cpu, unsigned long __user *user) in run_guest() argument
212 if (cpu->reg_read) { in run_guest()
213 if (put_user(*cpu->reg_read, user)) in run_guest()
215 cpu->reg_read = NULL; in run_guest()
216 return sizeof(*cpu->reg_read); in run_guest()
220 while (!cpu->lg->dead) { in run_guest()
225 if (cpu->hcall) in run_guest()
226 do_hypercalls(cpu); in run_guest()
229 if (cpu->pending.trap) { in run_guest()
230 if (copy_to_user(user, &cpu->pending, in run_guest()
231 sizeof(cpu->pending))) in run_guest()
233 return sizeof(cpu->pending); in run_guest()
252 irq = interrupt_pending(cpu, &more); in run_guest()
254 try_deliver_interrupt(cpu, irq, more); in run_guest()
260 if (cpu->lg->dead) in run_guest()
267 if (cpu->halted) { in run_guest()
273 if (interrupt_pending(cpu, &more) < LGUEST_IRQS) in run_guest()
287 lguest_arch_run_guest(cpu); in run_guest()
293 lguest_arch_handle_trap(cpu); in run_guest()
297 if (cpu->lg->dead == ERR_PTR(-ERESTART)) in run_guest()