# HG changeset patch # User Tristan Gingold # Date 1205043272 -3600 # Node ID 4c9ef8fdebbf9e315e7ad0967f069acc6f47e481 # Parent 5c8da1f449872216bb4cc0b81d153f92b90d97da get_wallclock also returns NOW value. Signed-off-by: Tristan Gingold diff -r 5c8da1f44987 -r 4c9ef8fdebbf xen/arch/ia64/vmx/sioemu.c --- a/xen/arch/ia64/vmx/sioemu.c Sat Mar 08 03:27:13 2008 +0100 +++ b/xen/arch/ia64/vmx/sioemu.c Sun Mar 09 07:14:32 2008 +0100 @@ -248,9 +248,10 @@ sioemu_hypercall (struct pt_regs *regs) break; case SIOEMU_HYPERCALL_GET_TIME: { - uint64_t sec, nsec; - get_wallclock(&sec, &nsec); + uint64_t sec, nsec, now; + get_wallclock(&sec, &nsec, &now); regs->r8 = (sec << 30) + nsec; + regs->r9 = now; break; } case SIOEMU_HYPERCALL_GET_REGS: @@ -272,6 +273,7 @@ sioemu_hypercall (struct pt_regs *regs) case SIOEMU_HYPERCALL_CALLBACK_RETURN: regs->r2 = regs->r27; sioemu_callback_return (); + vcpu_decrement_iip(current); break; default: panic_domain (NULL, "bad sioemu hypercall %lx\n", regs->r2); diff -r 5c8da1f44987 -r 4c9ef8fdebbf xen/arch/ia64/xen/xentime.c --- a/xen/arch/ia64/xen/xentime.c Sat Mar 08 03:27:13 2008 +0100 +++ b/xen/arch/ia64/xen/xentime.c Sun Mar 09 07:14:32 2008 +0100 @@ -253,9 +253,11 @@ struct tm wallclock_time(void) return gmtime(seconds); } -void get_wallclock(uint64_t *sec, uint64_t *nsec) -{ - uint64_t nano = NOW() + wc_nsec; +void get_wallclock(uint64_t *sec, uint64_t *nsec, uint64_t *now) +{ + uint64_t n = NOW(); + uint64_t nano = n + wc_nsec; *sec = wc_sec + nano / NSEC_PER_SEC; *nsec = nano % NSEC_PER_SEC; -} + *now = n; +} diff -r 5c8da1f44987 -r 4c9ef8fdebbf xen/include/asm-ia64/time.h --- a/xen/include/asm-ia64/time.h Sat Mar 08 03:27:13 2008 +0100 +++ b/xen/include/asm-ia64/time.h Sun Mar 09 07:14:32 2008 +0100 @@ -7,6 +7,6 @@ struct tm; struct tm; struct tm wallclock_time(void); -void get_wallclock(uint64_t *sec, uint64_t *nsec); +void get_wallclock(uint64_t *sec, uint64_t *nsec, uint64_t *now); #endif /* _ASM_TIME_H_ */