diff options
| author | Shell <[email protected]> | 2023-07-25 14:07:44 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-07-25 14:07:44 +0800 |
| commit | acfa74f078b23d670ad04c3a2aa9cec5fbcf5afe (patch) | |
| tree | 590ae17b763a050d32bd326da2dc6ce7155bcde0 /components | |
| parent | 0a6aaf12ad6801d6bd5caca82edcaca9977f5ff6 (diff) | |
[libcpu/arm] fix race condition with ldrex,strex (#7842)
Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'components')
| -rw-r--r-- | components/lwp/arch/arm/cortex-a/lwp_arch.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/components/lwp/arch/arm/cortex-a/lwp_arch.c b/components/lwp/arch/arm/cortex-a/lwp_arch.c index d10ac398a1..97fdf1b8b9 100644 --- a/components/lwp/arch/arm/cortex-a/lwp_arch.c +++ b/components/lwp/arch/arm/cortex-a/lwp_arch.c @@ -54,10 +54,13 @@ static struct rt_varea kuser_varea; void arch_kuser_init(rt_aspace_t aspace, void *vectors) { - const size_t kuser_size = 0x1000; int err; - extern char *__kuser_helper_start, *__kuser_helper_end; - int kuser_sz = __kuser_helper_end - __kuser_helper_start; + const size_t kuser_size = 0x1000; + extern char __kuser_helper_start[]; + extern char __kuser_helper_end[]; + rt_base_t start = (rt_base_t)__kuser_helper_start; + rt_base_t end = (rt_base_t)__kuser_helper_end; + int kuser_sz = end - start; err = rt_aspace_map_static(aspace, &kuser_varea, &vectors, kuser_size, MMU_MAP_U_RO, MMF_MAP_FIXED | MMF_PREFETCH, |
