diff options
author | Christoph Hellwig <hch@lst.de> | 2019-08-21 10:58:36 -0400 |
---|---|---|
committer | Paul Walmsley <paul.walmsley@sifive.com> | 2019-09-05 04:52:46 -0400 |
commit | 2f12dbf190d97dc0f2f8a07269dd0d8060808539 (patch) | |
tree | d699e8fc51c7814904c0ab79c50a7144e243d544 /drivers/clocksource | |
parent | f5bf645d10f2c6cc85294021af70f2b7bcc42d8e (diff) |
riscv: don't use the rdtime(h) pseudo-instructions
If we just use the CSRs that these map to directly the code is simpler
and doesn't require extra inline assembly code. Also fix up the top-level
comment in timer-riscv.c to not talk about the cycle count or mention
details of the clocksource interface, of which this file is just a
consumer.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
Diffstat (limited to 'drivers/clocksource')
-rw-r--r-- | drivers/clocksource/timer-riscv.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/clocksource/timer-riscv.c b/drivers/clocksource/timer-riscv.c index 09e031176bc6..470c7ef02ea4 100644 --- a/drivers/clocksource/timer-riscv.c +++ b/drivers/clocksource/timer-riscv.c | |||
@@ -2,6 +2,10 @@ | |||
2 | /* | 2 | /* |
3 | * Copyright (C) 2012 Regents of the University of California | 3 | * Copyright (C) 2012 Regents of the University of California |
4 | * Copyright (C) 2017 SiFive | 4 | * Copyright (C) 2017 SiFive |
5 | * | ||
6 | * All RISC-V systems have a timer attached to every hart. These timers can be | ||
7 | * read from the "time" and "timeh" CSRs, and can use the SBI to setup | ||
8 | * events. | ||
5 | */ | 9 | */ |
6 | #include <linux/clocksource.h> | 10 | #include <linux/clocksource.h> |
7 | #include <linux/clockchips.h> | 11 | #include <linux/clockchips.h> |
@@ -12,19 +16,6 @@ | |||
12 | #include <asm/smp.h> | 16 | #include <asm/smp.h> |
13 | #include <asm/sbi.h> | 17 | #include <asm/sbi.h> |
14 | 18 | ||
15 | /* | ||
16 | * All RISC-V systems have a timer attached to every hart. These timers can be | ||
17 | * read by the 'rdcycle' pseudo instruction, and can use the SBI to setup | ||
18 | * events. In order to abstract the architecture-specific timer reading and | ||
19 | * setting functions away from the clock event insertion code, we provide | ||
20 | * function pointers to the clockevent subsystem that perform two basic | ||
21 | * operations: rdtime() reads the timer on the current CPU, and | ||
22 | * next_event(delta) sets the next timer event to 'delta' cycles in the future. | ||
23 | * As the timers are inherently a per-cpu resource, these callbacks perform | ||
24 | * operations on the current hart. There is guaranteed to be exactly one timer | ||
25 | * per hart on all RISC-V systems. | ||
26 | */ | ||
27 | |||
28 | static int riscv_clock_next_event(unsigned long delta, | 19 | static int riscv_clock_next_event(unsigned long delta, |
29 | struct clock_event_device *ce) | 20 | struct clock_event_device *ce) |
30 | { | 21 | { |