From 918c6855bcf680f0a8eb8f69d1976a5b42fec4c0 Mon Sep 17 00:00:00 2001 From: Jan Glauber Date: Thu, 17 Apr 2008 07:46:16 +0200 Subject: [PATCH] --- yaml --- r: 88423 b: refs/heads/master c: c0015f91d8414f55d2debfe9984a04b98b48f087 h: refs/heads/master i: 88421: fae0476d9674fb7f3d63019b487d31c5b43d983d 88419: 03c7bdfc42d95cc13c2b7e346e8b13f6ab24cb9d 88415: 81dc615c5d10e177bd3e0c22a3913c9d0c65e210 v: v3 --- [refs] | 2 +- trunk/arch/s390/kernel/time.c | 2 +- trunk/include/asm-s390/timex.h | 12 +++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 9d77447f3794..5a02f555daa8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2f7c8bd6dc6540aa3275c0ad9f657401985c00e9 +refs/heads/master: c0015f91d8414f55d2debfe9984a04b98b48f087 diff --git a/trunk/arch/s390/kernel/time.c b/trunk/arch/s390/kernel/time.c index cb232c155360..925f9dc0b0a0 100644 --- a/trunk/arch/s390/kernel/time.c +++ b/trunk/arch/s390/kernel/time.c @@ -66,7 +66,7 @@ static u64 xtime_cc; */ unsigned long long sched_clock(void) { - return ((get_clock() - jiffies_timer_cc) * 125) >> 9; + return ((get_clock_xt() - jiffies_timer_cc) * 125) >> 9; } /* diff --git a/trunk/include/asm-s390/timex.h b/trunk/include/asm-s390/timex.h index 98229db24314..6dd7eecbb8e4 100644 --- a/trunk/include/asm-s390/timex.h +++ b/trunk/include/asm-s390/timex.h @@ -62,16 +62,18 @@ static inline unsigned long long get_clock (void) return clk; } -static inline void get_clock_extended(void *dest) +static inline unsigned long long get_clock_xt(void) { - typedef struct { unsigned long long clk[2]; } __clock_t; + unsigned char clk[16]; #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) - asm volatile("stcke %0" : "=Q" (*((__clock_t *)dest)) : : "cc"); + asm volatile("stcke %0" : "=Q" (clk) : : "cc"); #else /* __GNUC__ */ - asm volatile("stcke 0(%1)" : "=m" (*((__clock_t *)dest)) - : "a" ((__clock_t *)dest) : "cc"); + asm volatile("stcke 0(%1)" : "=m" (clk) + : "a" (clk) : "cc"); #endif /* __GNUC__ */ + + return *((unsigned long long *)&clk[1]); } static inline cycles_t get_cycles(void)