mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
[S390] switch sched_clock to store-clock-extended.
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>
This commit is contained in:
parent
2f7c8bd6dc
commit
c0015f91d8
2 changed files with 8 additions and 6 deletions
|
@ -66,7 +66,7 @@ static u64 xtime_cc;
|
||||||
*/
|
*/
|
||||||
unsigned long long sched_clock(void)
|
unsigned long long sched_clock(void)
|
||||||
{
|
{
|
||||||
return ((get_clock() - jiffies_timer_cc) * 125) >> 9;
|
return ((get_clock_xt() - jiffies_timer_cc) * 125) >> 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -62,16 +62,18 @@ static inline unsigned long long get_clock (void)
|
||||||
return clk;
|
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)
|
#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__ */
|
#else /* __GNUC__ */
|
||||||
asm volatile("stcke 0(%1)" : "=m" (*((__clock_t *)dest))
|
asm volatile("stcke 0(%1)" : "=m" (clk)
|
||||||
: "a" ((__clock_t *)dest) : "cc");
|
: "a" (clk) : "cc");
|
||||||
#endif /* __GNUC__ */
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
return *((unsigned long long *)&clk[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline cycles_t get_cycles(void)
|
static inline cycles_t get_cycles(void)
|
||||||
|
|
Loading…
Reference in a new issue