aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/gdbstub.c
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-03-13 14:04:31 +0000
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-03-13 14:04:31 +0000
commit69461aa51d5c47a28ac2244d3014fc41295f2109 (patch)
tree86be58ca9c3569f9c6f14bf4d73e09edaf73ce4f /xen/arch/x86/gdbstub.c
parent26e24b46d174a0eb23f414bbeaa0f0da18836fb6 (diff)
downloadxen-69461aa51d5c47a28ac2244d3014fc41295f2109.tar.gz
xen-69461aa51d5c47a28ac2244d3014fc41295f2109.tar.bz2
xen-69461aa51d5c47a28ac2244d3014fc41295f2109.zip
xen/x86: Tweak #PF handler. Simplify gdbstub copy to/from guest.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/gdbstub.c')
-rw-r--r--xen/arch/x86/gdbstub.c28
1 files changed, 3 insertions, 25 deletions
diff --git a/xen/arch/x86/gdbstub.c b/xen/arch/x86/gdbstub.c
index 8ed5e20298..a3af473ee2 100644
--- a/xen/arch/x86/gdbstub.c
+++ b/xen/arch/x86/gdbstub.c
@@ -73,38 +73,16 @@ gdb_arch_read_reg(unsigned long regnum, struct cpu_user_regs *regs,
/* Like copy_from_user, but safe to call with interrupts disabled.
Trust me, and don't look behind the curtain. */
-unsigned
+unsigned int
gdb_arch_copy_from_user(void *dest, const void *src, unsigned len)
{
- int __d0, __d1, __d2;
- ASSERT(!local_irq_is_enabled());
- __asm__ __volatile__(
- "1: rep; movsb\n"
- "2:\n"
- ".section .fixup,\"ax\"\n"
- "3: addl $4, %%esp\n"
- " jmp 2b\n"
- ".previous\n"
- ".section __pre_ex_table,\"a\"\n"
- " "__FIXUP_ALIGN"\n"
- " "__FIXUP_WORD" 1b,3b\n"
- ".previous\n"
- ".section __ex_table,\"a\"\n"
- " "__FIXUP_ALIGN"\n"
- " "__FIXUP_WORD" 1b,2b\n"
- ".previous\n"
- : "=c"(__d2), "=D" (__d0), "=S" (__d1)
- : "0"(len), "1"(dest), "2"(src)
- : "memory");
- ASSERT(!local_irq_is_enabled());
- return __d2;
+ return copy_from_user(dest, src, len);
}
unsigned int
gdb_arch_copy_to_user(void *dest, const void *src, unsigned len)
{
- /* XXX */
- return len;
+ return copy_to_user(dest, src, len);
}
void