sparc64: Abstract away the NMI PIC counter computation.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -6,6 +6,7 @@ struct pcr_ops {
|
||||
void (*write_pcr)(unsigned long, u64);
|
||||
u64 (*read_pic)(unsigned long);
|
||||
void (*write_pic)(unsigned long, u64);
|
||||
u64 (*nmi_picl_value)(unsigned int nmi_hz);
|
||||
};
|
||||
extern const struct pcr_ops *pcr_ops;
|
||||
|
||||
@@ -29,20 +30,6 @@ extern void schedule_deferred_pcr_work(void);
|
||||
#define PCR_N2_SL1_SHIFT 27
|
||||
#define PCR_N2_OV1 0x80000000
|
||||
|
||||
extern unsigned int picl_shift;
|
||||
|
||||
/* In order to commonize as much of the implementation as
|
||||
* possible, we use PICH as our counter. Mostly this is
|
||||
* to accommodate Niagara-1 which can only count insn cycles
|
||||
* in PICH.
|
||||
*/
|
||||
static inline u64 picl_value(unsigned int nmi_hz)
|
||||
{
|
||||
u32 delta = local_cpu_data().clock_tick / (nmi_hz << picl_shift);
|
||||
|
||||
return ((u64)((0 - delta) & 0xffffffff)) << 32;
|
||||
}
|
||||
|
||||
extern u64 pcr_enable;
|
||||
|
||||
extern int pcr_arch_init(void);
|
||||
|
Reference in New Issue
Block a user