> Date: Sun, 12 Jul 2020 18:21:48 +0200
> From: Christian Weisgerber <[email protected]>
>
> There is the strong suspicion that the 0x7fffffff mask in the various
> armv7 timecounters was simply copied from powerpc, and that these really
> are full 32-bit counters.
>
> I wanted to verify this from the data sheets, but I'm insufficiently
> familiar with the ARM ecosystem to locate those.
The counter is described in the ARM Architecture Reference Manual. It
was introduced later so you need to look at revision C or later.
Anyway, the counter is at least 56-bits wide. Given that we're making
the same change to arm64, this is ok kettenis@.
> Index: arch/arm/cortex/agtimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm/cortex/agtimer.c,v
> retrieving revision 1.9
> diff -u -p -r1.9 agtimer.c
> --- arch/arm/cortex/agtimer.c 11 Aug 2018 10:42:42 -0000 1.9
> +++ arch/arm/cortex/agtimer.c 12 Jul 2020 16:13:22 -0000
> @@ -46,7 +46,7 @@ int32_t agtimer_frequency = TIMER_FREQUE
> u_int agtimer_get_timecount(struct timecounter *);
>
> static struct timecounter agtimer_timecounter = {
> - agtimer_get_timecount, NULL, 0x7fffffff, 0, "agtimer", 0, NULL
> + agtimer_get_timecount, NULL, 0xffffffff, 0, "agtimer", 0, NULL
> };
>
> struct agtimer_pcpu_softc {
> Index: arch/arm/cortex/amptimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm/cortex/amptimer.c,v
> retrieving revision 1.7
> diff -u -p -r1.7 amptimer.c
> --- arch/arm/cortex/amptimer.c 6 Jul 2020 13:33:06 -0000 1.7
> +++ arch/arm/cortex/amptimer.c 12 Jul 2020 16:13:37 -0000
> @@ -67,7 +67,7 @@ int32_t amptimer_frequency = TIMER_FREQU
> u_int amptimer_get_timecount(struct timecounter *);
>
> static struct timecounter amptimer_timecounter = {
> - amptimer_get_timecount, NULL, 0x7fffffff, 0, "amptimer", 0, NULL, 0
> + amptimer_get_timecount, NULL, 0xffffffff, 0, "amptimer", 0, NULL, 0
> };
>
> #define MAX_ARM_CPUS 8
> Index: arch/armv7/omap/gptimer.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/armv7/omap/gptimer.c,v
> retrieving revision 1.8
> diff -u -p -r1.8 gptimer.c
> --- arch/armv7/omap/gptimer.c 6 Jul 2020 13:33:07 -0000 1.8
> +++ arch/armv7/omap/gptimer.c 12 Jul 2020 15:53:06 -0000
> @@ -117,7 +117,7 @@ int gptimer_irq = 0;
> u_int gptimer_get_timecount(struct timecounter *);
>
> static struct timecounter gptimer_timecounter = {
> - gptimer_get_timecount, NULL, 0x7fffffff, 0, "gptimer", 0, NULL, 0
> + gptimer_get_timecount, NULL, 0xffffffff, 0, "gptimer", 0, NULL, 0
> };
>
> volatile u_int32_t nexttickevent;
> --
> Christian "naddy" Weisgerber [email protected]
>
>