Skip to content

Commit

Permalink
[S390] switch sched_clock to store-clock-extended.
Browse files Browse the repository at this point in the history
Add get_clock_xt to read an 8 byte clock value using store clock
extended (STCKE) and use get_clock_xt for sched_clock. STCKE should
be faster than STCK on newer machines.

Signed-off-by: Jan Glauber <jan.glauber@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
  • Loading branch information
Jan Glauber authored and Heiko Carstens committed Apr 17, 2008
1 parent 2f7c8bd commit c0015f9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
2 changes: 1 addition & 1 deletion arch/s390/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/*
Expand Down
12 changes: 7 additions & 5 deletions include/asm-s390/timex.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit c0015f9

Please sign in to comment.