Commit 516dd4aa authored by Jason A. Donenfeld's avatar Jason A. Donenfeld

openrisc: start CPU timer early in boot

In order to measure the boot process, the timer should be switched on as
early in boot as possible. As well, the commit defines the get_cycles
macro, like the previous patches in this series, so that generic code is
aware that it's implemented by the platform, as is done on other archs.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Jonas Bonn <jonas@southpole.se>
Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
Acked-by: default avatarStafford Horne <shorne@gmail.com>
Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
parent 40883583
...@@ -23,6 +23,7 @@ static inline cycles_t get_cycles(void) ...@@ -23,6 +23,7 @@ static inline cycles_t get_cycles(void)
{ {
return mfspr(SPR_TTCR); return mfspr(SPR_TTCR);
} }
#define get_cycles get_cycles
/* This isn't really used any more */ /* This isn't really used any more */
#define CLOCK_TICK_RATE 1000 #define CLOCK_TICK_RATE 1000
......
...@@ -521,6 +521,15 @@ _start: ...@@ -521,6 +521,15 @@ _start:
l.ori r3,r0,0x1 l.ori r3,r0,0x1
l.mtspr r0,r3,SPR_SR l.mtspr r0,r3,SPR_SR
/*
* Start the TTCR as early as possible, so that the RNG can make use of
* measurements of boot time from the earliest opportunity. Especially
* important is that the TTCR does not return zero by the time we reach
* rand_initialize().
*/
l.movhi r3,hi(SPR_TTMR_CR)
l.mtspr r0,r3,SPR_TTMR
CLEAR_GPR(r1) CLEAR_GPR(r1)
CLEAR_GPR(r2) CLEAR_GPR(r2)
CLEAR_GPR(r3) CLEAR_GPR(r3)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment