diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-11-06 16:20:21 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-11-11 10:08:08 +0100 |
commit | 66659ff1ad6831b0ea7425fa6ecd8a8687523658 (patch) | |
tree | 48e22b475fa8854128e0861a33fed6f78c8094b5 /freebsd/sys/arm/arm | |
parent | Define __GLOBL1() and __GLOBL() (diff) | |
download | rtems-libbsd-66659ff1ad6831b0ea7425fa6ecd8a8687523658.tar.bz2 |
Update to FreeBSD 9.2
Diffstat (limited to 'freebsd/sys/arm/arm')
-rw-r--r-- | freebsd/sys/arm/arm/legacy.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/freebsd/sys/arm/arm/legacy.c b/freebsd/sys/arm/arm/legacy.c index c81ccc5e..3a2fab02 100644 --- a/freebsd/sys/arm/arm/legacy.c +++ b/freebsd/sys/arm/arm/legacy.c @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include <i386/bios/mca_machdep.h> #endif +#include <machine/clock.h> #include <machine/legacyvar.h> #include <machine/resource.h> @@ -351,9 +352,22 @@ cpu_read_ivar(device_t dev, device_t child, int index, uintptr_t *result) { struct cpu_device *cpdev; - if (index != CPU_IVAR_PCPU) + switch (index) { + case CPU_IVAR_PCPU: + cpdev = device_get_ivars(child); + *result = (uintptr_t)cpdev->cd_pcpu; + break; +#ifndef __rtems__ + case CPU_IVAR_NOMINAL_MHZ: + if (tsc_is_invariant) { + *result = (uintptr_t)(atomic_load_acq_64(&tsc_freq) / + 1000000); + break; + } + /* FALLTHROUGH */ +#endif /* __rtems__ */ + default: return (ENOENT); - cpdev = device_get_ivars(child); - *result = (uintptr_t)cpdev->cd_pcpu; + } return (0); } |