summaryrefslogtreecommitdiffstats
path: root/sys/arm/include/sysarch.h
diff options
context:
space:
mode:
authorraj <raj@FreeBSD.org>2008-02-05 10:22:33 +0000
committerraj <raj@FreeBSD.org>2008-02-05 10:22:33 +0000
commita6d33e31649c175889ccaf55a0bf9374041e2667 (patch)
tree26cb5987a5c7544a3bc7975b6c1134fe1a52d180 /sys/arm/include/sysarch.h
parenta2636de674ca0feb2c4a25f90808e99029868d14 (diff)
downloadFreeBSD-src-a6d33e31649c175889ccaf55a0bf9374041e2667.zip
FreeBSD-src-a6d33e31649c175889ccaf55a0bf9374041e2667.tar.gz
Improve ARM_TP_ADDRESS and RAS area.
De-hardcode usage of ARM_TP_ADDRESS and RAS local storage, and move this special purpose page to a more convenient place i.e. after the vectors high page, more towards the end of address space. Previous location (0xe000_0000) caused grief if KVA was to go beyond the default limit. Note that ARM world rebuilding is required after this change since the location of ARM_TP_ADDRESS is shared between kernel and userland. Submitted by: Grzegorz Bernacki (gjb AT semihalf dot com) Reviewed by: imp Approved by: cognet (mentor)
Diffstat (limited to 'sys/arm/include/sysarch.h')
-rw-r--r--sys/arm/include/sysarch.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/arm/include/sysarch.h b/sys/arm/include/sysarch.h
index 4d6234b..5623fd7 100644
--- a/sys/arm/include/sysarch.h
+++ b/sys/arm/include/sysarch.h
@@ -37,6 +37,18 @@
#ifndef _ARM_SYSARCH_H_
#define _ARM_SYSARCH_H_
+#include <machine/armreg.h>
+/*
+ * The ARM_TP_ADDRESS points to a special purpose page, which is used as local
+ * store for the ARM per-thread data and Restartable Atomic Sequences support.
+ * Put it just above the "high" vectors' page.
+ */
+#define ARM_TP_ADDRESS (ARM_VECTORS_HIGH + 0x1000)
+#define ARM_RAS_START (ARM_TP_ADDRESS + 4)
+#define ARM_RAS_END (ARM_TP_ADDRESS + 8)
+
+#ifndef LOCORE
+
#include <sys/cdefs.h>
/*
@@ -53,8 +65,6 @@
#define ARM_SET_TP 2
#define ARM_GET_TP 3
-#define ARM_TP_ADDRESS 0xe0000000 /* Magic */
-
struct arm_sync_icache_args {
uintptr_t addr; /* Virtual start address */
size_t len; /* Region size */
@@ -68,4 +78,6 @@ int sysarch(int, void *);
__END_DECLS
#endif
+#endif /* LOCORE */
+
#endif /* !_ARM_SYSARCH_H_ */
OpenPOWER on IntegriCloud