diff options
author | raj <raj@FreeBSD.org> | 2008-02-05 10:22:33 +0000 |
---|---|---|
committer | raj <raj@FreeBSD.org> | 2008-02-05 10:22:33 +0000 |
commit | a6d33e31649c175889ccaf55a0bf9374041e2667 (patch) | |
tree | 26cb5987a5c7544a3bc7975b6c1134fe1a52d180 /sys/arm/include/sysarch.h | |
parent | a2636de674ca0feb2c4a25f90808e99029868d14 (diff) | |
download | FreeBSD-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.h | 16 |
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_ */ |