e10e2f5803
In the event that random_get_entropy() can't access a cycle counter or similar, falling back to returning 0 is really not the best we can do. Instead, at least calling random_get_entropy_fallback() would be preferable, because that always needs to return _something_, even falling back to jiffies eventually. It's not as though random_get_entropy_fallback() is super high precision or guaranteed to be entropic, but basically anything that's not zero all the time is better than returning zero all the time. This is accomplished by just including the asm-generic code like on other architectures, which means we can get rid of the empty stub function here. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Arnd Bergmann <arnd@arndb.de> Acked-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 2001 - 2013 Tensilica Inc.
|
|
*/
|
|
|
|
#ifndef _XTENSA_TIMEX_H
|
|
#define _XTENSA_TIMEX_H
|
|
|
|
#include <asm/processor.h>
|
|
|
|
#if XCHAL_NUM_TIMERS > 0 && \
|
|
XTENSA_INT_LEVEL(XCHAL_TIMER0_INTERRUPT) <= XCHAL_EXCM_LEVEL
|
|
# define LINUX_TIMER 0
|
|
# define LINUX_TIMER_INT XCHAL_TIMER0_INTERRUPT
|
|
#elif XCHAL_NUM_TIMERS > 1 && \
|
|
XTENSA_INT_LEVEL(XCHAL_TIMER1_INTERRUPT) <= XCHAL_EXCM_LEVEL
|
|
# define LINUX_TIMER 1
|
|
# define LINUX_TIMER_INT XCHAL_TIMER1_INTERRUPT
|
|
#elif XCHAL_NUM_TIMERS > 2 && \
|
|
XTENSA_INT_LEVEL(XCHAL_TIMER2_INTERRUPT) <= XCHAL_EXCM_LEVEL
|
|
# define LINUX_TIMER 2
|
|
# define LINUX_TIMER_INT XCHAL_TIMER2_INTERRUPT
|
|
#else
|
|
# error "Bad timer number for Linux configurations!"
|
|
#endif
|
|
|
|
extern unsigned long ccount_freq;
|
|
|
|
void local_timer_setup(unsigned cpu);
|
|
|
|
/*
|
|
* Register access.
|
|
*/
|
|
|
|
static inline unsigned long get_ccount (void)
|
|
{
|
|
return xtensa_get_sr(ccount);
|
|
}
|
|
|
|
static inline void set_ccount (unsigned long ccount)
|
|
{
|
|
xtensa_set_sr(ccount, ccount);
|
|
}
|
|
|
|
static inline unsigned long get_linux_timer (void)
|
|
{
|
|
return xtensa_get_sr(SREG_CCOMPARE + LINUX_TIMER);
|
|
}
|
|
|
|
static inline void set_linux_timer (unsigned long ccompare)
|
|
{
|
|
xtensa_set_sr(ccompare, SREG_CCOMPARE + LINUX_TIMER);
|
|
}
|
|
|
|
#include <asm-generic/timex.h>
|
|
|
|
#endif /* _XTENSA_TIMEX_H */
|