iop: implement sched_clock()
This adds a better sched_clock() to the IOP platform, implemented using its new clocksource support. Tested on n2100, compile-tested for all plat-iop machines. [dan.j.williams@intel.com: allow early cp6 access] Signed-off-by: Mikael Pettersson <mikpe@it.uu.se> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Родитель
980f2296b5
Коммит
345a32296b
|
@ -396,7 +396,7 @@ __xsc3_setup:
|
|||
orr r4, r4, #0x18 @ cache the page table in L2
|
||||
mcr p15, 0, r4, c2, c0, 0 @ load page table pointer
|
||||
|
||||
mov r0, #0 @ don't allow CP access
|
||||
mov r0, #1 << 6 @ cp6 access for early sched_clock
|
||||
mcr p15, 0, r0, c15, c1, 0 @ write CP access register
|
||||
|
||||
mrc p15, 0, r0, c1, c0, 1 @ get auxiliary control reg
|
||||
|
|
|
@ -65,6 +65,17 @@ static void __init iop_clocksource_set_hz(struct clocksource *cs, unsigned int h
|
|||
cs->name, cs->shift, cs->mult);
|
||||
}
|
||||
|
||||
/*
|
||||
* IOP sched_clock() implementation via its clocksource.
|
||||
*/
|
||||
unsigned long long sched_clock(void)
|
||||
{
|
||||
cycle_t cyc = iop_clocksource_read(NULL);
|
||||
struct clocksource *cs = &iop_clocksource;
|
||||
|
||||
return clocksource_cyc2ns(cyc, cs->mult, cs->shift);
|
||||
}
|
||||
|
||||
/*
|
||||
* IOP clockevents (interrupting timer 0).
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче