forked from Minki/linux
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:
parent
980f2296b5
commit
345a32296b
@ -396,7 +396,7 @@ __xsc3_setup:
|
|||||||
orr r4, r4, #0x18 @ cache the page table in L2
|
orr r4, r4, #0x18 @ cache the page table in L2
|
||||||
mcr p15, 0, r4, c2, c0, 0 @ load page table pointer
|
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
|
mcr p15, 0, r0, c15, c1, 0 @ write CP access register
|
||||||
|
|
||||||
mrc p15, 0, r0, c1, c0, 1 @ get auxiliary control reg
|
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);
|
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).
|
* IOP clockevents (interrupting timer 0).
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user