diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2015-03-19 15:00:00 +0100 |
---|---|---|
committer | Jens Wiklander <jens.wiklander@linaro.org> | 2015-03-31 17:15:40 +0200 |
commit | 153c4954e7f0d958428b863acc528e2cad9057ad (patch) | |
tree | c2acbafa3900ca63ad8bfb0f5c069a745b4edff7 | |
parent | db886a7f9ab74a374b266638b480fbd872bb97be (diff) |
core: split arm32.h
Splits arm32.h into one ARM generic arm.h and one ARM32 specific arm32.h.
arm32.h should not be included directly, arm.h should be included instead.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Pascal Brand <pascal.brand@linaro.org>
33 files changed, 132 insertions, 49 deletions
diff --git a/core/arch/arm32/arm32.mk b/core/arch/arm32/arm32.mk new file mode 100644 index 00000000..140b7323 --- /dev/null +++ b/core/arch/arm32/arm32.mk @@ -0,0 +1,6 @@ +ifeq ($(CFG_ARM64_core),y) +core-platform-cppflags += -DARM64=1 +endif +ifeq ($(CFG_ARM32_core),y) +core-platform-cppflags += -DARM32=1 +endif diff --git a/core/arch/arm32/include/arm.h b/core/arch/arm32/include/arm.h new file mode 100644 index 00000000..895c69f5 --- /dev/null +++ b/core/arch/arm32/include/arm.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2015, Linaro Limited + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef ARM_H +#define ARM_H + + +#define MPIDR_CPU_MASK 0xff +#define MPIDR_CLUSTER_SHIFT 8 +#define MPIDR_CLUSTER_MASK (0xff << MPIDR_CLUSTER_SHIFT) + +#define ARM32_CPSR_MODE_MASK 0x1f +#define ARM32_CPSR_MODE_USR 0x10 +#define ARM32_CPSR_MODE_FIQ 0x11 +#define ARM32_CPSR_MODE_IRQ 0x12 +#define ARM32_CPSR_MODE_SVC 0x13 +#define ARM32_CPSR_MODE_MON 0x16 +#define ARM32_CPSR_MODE_ABT 0x17 +#define ARM32_CPSR_MODE_UND 0x1b +#define ARM32_CPSR_MODE_SYS 0x1f + +#define ARM32_CPSR_T (1 << 5) +#define ARM32_CPSR_F_SHIFT 6 +#define ARM32_CPSR_F (1 << 6) +#define ARM32_CPSR_I (1 << 7) +#define ARM32_CPSR_A (1 << 8) +#define ARM32_CPSR_FIA (ARM32_CPSR_F | ARM32_CPSR_I | ARM32_CPSR_A) +#define ARM32_CPSR_IT_MASK (ARM32_CPSR_IT_MASK1 | ARM32_CPSR_IT_MASK2) +#define ARM32_CPSR_IT_MASK1 0x06000000 +#define ARM32_CPSR_IT_MASK2 0x0000fc00 + + +#ifdef ARM32 +#include <arm32.h> +#endif + +#endif /*ARM_H*/ diff --git a/core/arch/arm32/include/arm32.h b/core/arch/arm32/include/arm32.h index d6a12ac9..cd17fd4c 100644 --- a/core/arch/arm32/include/arm32.h +++ b/core/arch/arm32/include/arm32.h @@ -32,28 +32,25 @@ #include <stdint.h> #endif -#define CPSR_MODE_MASK 0x1f -#define CPSR_MODE_USR 0x10 -#define CPSR_MODE_FIQ 0x11 -#define CPSR_MODE_IRQ 0x12 -#define CPSR_MODE_SVC 0x13 -#define CPSR_MODE_MON 0x16 -#define CPSR_MODE_ABT 0x17 -#define CPSR_MODE_UND 0x1b -#define CPSR_MODE_SYS 0x1f - -#define CPSR_T (1 << 5) -#define CPSR_F (1 << 6) -#define CPSR_I (1 << 7) -#define CPSR_A (1 << 8) -#define CPSR_FIA (CPSR_F | CPSR_I | CPSR_A) -#define CPSR_IT_MASK (CPSR_IT_MASK1 | CPSR_IT_MASK2) -#define CPSR_IT_MASK1 0x06000000 -#define CPSR_IT_MASK2 0x0000fc00 - -#define MPIDR_CPU_MASK 0xff -#define MPIDR_CLUSTER_SHIFT 8 -#define MPIDR_CLUSTER_MASK (0xff << MPIDR_CLUSTER_SHIFT) +#define CPSR_MODE_MASK ARM32_CPSR_MODE_MASK +#define CPSR_MODE_USR ARM32_CPSR_MODE_USR +#define CPSR_MODE_FIQ ARM32_CPSR_MODE_FIQ +#define CPSR_MODE_IRQ ARM32_CPSR_MODE_IRQ +#define CPSR_MODE_SVC ARM32_CPSR_MODE_SVC +#define CPSR_MODE_MON ARM32_CPSR_MODE_MON +#define CPSR_MODE_ABT ARM32_CPSR_MODE_ABT +#define CPSR_MODE_UND ARM32_CPSR_MODE_UND +#define CPSR_MODE_SYS ARM32_CPSR_MODE_SYS + +#define CPSR_T ARM32_CPSR_T +#define CPSR_F_SHIFT ARM32_CPSR_F_SHIFT +#define CPSR_F ARM32_CPSR_F +#define CPSR_I ARM32_CPSR_I +#define CPSR_A ARM32_CPSR_A +#define CPSR_FIA ARM32_CPSR_FIA +#define CPSR_IT_MASK ARM32_CPSR_IT_MASK +#define CPSR_IT_MASK1 ARM32_CPSR_IT_MASK1 +#define CPSR_IT_MASK2 ARM32_CPSR_IT_MASK2 #define SCR_NS (1 << 0) #define SCR_IRQ (1 << 1) diff --git a/core/arch/arm32/kernel/misc_a32.S b/core/arch/arm32/kernel/misc_a32.S index 3a9a70f1..a0405520 100644 --- a/core/arch/arm32/kernel/misc_a32.S +++ b/core/arch/arm32/kernel/misc_a32.S @@ -26,7 +26,7 @@ */ #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> /* Let platforms override this if needed */ diff --git a/core/arch/arm32/kernel/mutex.c b/core/arch/arm32/kernel/mutex.c index b3851e7d..059eeef2 100644 --- a/core/arch/arm32/kernel/mutex.c +++ b/core/arch/arm32/kernel/mutex.c @@ -35,7 +35,7 @@ #include <mm/core_mmu.h> #include <sm/teesmc.h> #include <bitstring.h> -#include <arm32.h> +#include <arm.h> /* * Mutex design: diff --git a/core/arch/arm32/kernel/proc_a32.S b/core/arch/arm32/kernel/proc_a32.S index f654f0b2..279184a4 100644 --- a/core/arch/arm32/kernel/proc_a32.S +++ b/core/arch/arm32/kernel/proc_a32.S @@ -31,7 +31,7 @@ #include <kernel/tz_proc_def.h> #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> .global cpu_spin_lock diff --git a/core/arch/arm32/kernel/ssvce_a32.S b/core/arch/arm32/kernel/ssvce_a32.S index c2d91fea..496d9c8a 100644 --- a/core/arch/arm32/kernel/ssvce_a32.S +++ b/core/arch/arm32/kernel/ssvce_a32.S @@ -33,7 +33,7 @@ * Variable(s) */ #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> #include <kernel/tz_proc_def.h> diff --git a/core/arch/arm32/kernel/tee_time_arm_cntpct.c b/core/arch/arm32/kernel/tee_time_arm_cntpct.c index 4f6aef3e..1265359e 100644 --- a/core/arch/arm32/kernel/tee_time_arm_cntpct.c +++ b/core/arch/arm32/kernel/tee_time_arm_cntpct.c @@ -35,7 +35,7 @@ #include <assert.h> #include <stdint.h> #include <mpa.h> -#include <arm32.h> +#include <arm.h> static uint32_t do_div(uint64_t *dividend, uint32_t divisor) { diff --git a/core/arch/arm32/kernel/thread.c b/core/arch/arm32/kernel/thread.c index 2dda1014..e86753f4 100644 --- a/core/arch/arm32/kernel/thread.c +++ b/core/arch/arm32/kernel/thread.c @@ -34,7 +34,7 @@ #include <sm/sm.h> #include <sm/teesmc.h> #include <sm/teesmc_optee.h> -#include <arm32.h> +#include <arm.h> #include <kernel/tz_proc_def.h> #include <kernel/tz_proc.h> #include <kernel/misc.h> diff --git a/core/arch/arm32/kernel/thread_a32.S b/core/arch/arm32/kernel/thread_a32.S index 7de9044a..8693136c 100644 --- a/core/arch/arm32/kernel/thread_a32.S +++ b/core/arch/arm32/kernel/thread_a32.S @@ -26,7 +26,7 @@ */ #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> #include <sm/teesmc.h> #include <sm/teesmc_opteed_macros.h> diff --git a/core/arch/arm32/kernel/vfp.c b/core/arch/arm32/kernel/vfp.c index 53323f1b..478515e0 100644 --- a/core/arch/arm32/kernel/vfp.c +++ b/core/arch/arm32/kernel/vfp.c @@ -1,4 +1,4 @@ -#include <arm32.h> +#include <arm.h> #include <kernel/vfp.h> #include "vfp_private.h" #include <assert.h> diff --git a/core/arch/arm32/mm/core_mmu_lpae.c b/core/arch/arm32/mm/core_mmu_lpae.c index 9ce6d8d2..4661f511 100644 --- a/core/arch/arm32/mm/core_mmu_lpae.c +++ b/core/arch/arm32/mm/core_mmu_lpae.c @@ -65,7 +65,7 @@ #include <mm/tee_mmu_defs.h> #include <kernel/thread.h> #include <kernel/panic.h> -#include <arm32.h> +#include <arm.h> #include "core_mmu_private.h" #ifndef DEBUG_XLAT_TABLE diff --git a/core/arch/arm32/mm/core_mmu_v7.c b/core/arch/arm32/mm/core_mmu_v7.c index 4ca6a1c9..87e2651b 100644 --- a/core/arch/arm32/mm/core_mmu_v7.c +++ b/core/arch/arm32/mm/core_mmu_v7.c @@ -28,7 +28,7 @@ #include <stdlib.h> #include <assert.h> -#include <arm32.h> +#include <arm.h> #include <mm/core_mmu.h> #include <mm/tee_mmu_defs.h> #include <trace.h> diff --git a/core/arch/arm32/mm/tee_mmu.c b/core/arch/arm32/mm/tee_mmu.c index 75a9945c..09c629fa 100644 --- a/core/arch/arm32/mm/tee_mmu.c +++ b/core/arch/arm32/mm/tee_mmu.c @@ -28,7 +28,7 @@ #include <stdlib.h> #include <types_ext.h> -#include <arm32.h> +#include <arm.h> #include <util.h> #include <kernel/tee_common.h> #include <mm/tee_mmu.h> diff --git a/core/arch/arm32/mm/tee_pager.c b/core/arch/arm32/mm/tee_pager.c index c2c01563..537951f5 100644 --- a/core/arch/arm32/mm/tee_pager.c +++ b/core/arch/arm32/mm/tee_pager.c @@ -41,7 +41,7 @@ #include <mm/tee_mm.h> #include <mm/core_mmu.h> #include <tee/arch_svc.h> -#include <arm32.h> +#include <arm.h> #include <tee/tee_cryp_provider.h> #include <tee_api_defines.h> #include <utee_defines.h> diff --git a/core/arch/arm32/plat-stm/cache_maintenance.c b/core/arch/arm32/plat-stm/cache_maintenance.c index e71b93f5..54f037a2 100644 --- a/core/arch/arm32/plat-stm/cache_maintenance.c +++ b/core/arch/arm32/plat-stm/cache_maintenance.c @@ -25,7 +25,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <compiler.h> -#include <arm32.h> +#include <arm.h> #include <mm/core_mmu.h> #include <kernel/tz_ssvce_pl310.h> diff --git a/core/arch/arm32/plat-stm/main.c b/core/arch/arm32/plat-stm/main.c index 7041dc72..4052e6ac 100644 --- a/core/arch/arm32/plat-stm/main.c +++ b/core/arch/arm32/plat-stm/main.c @@ -30,7 +30,7 @@ #include <sm/tee_mon.h> #include <sm/teesmc.h> #include <sm/teesmc_optee.h> -#include <arm32.h> +#include <arm.h> #include <kernel/thread.h> #include <kernel/panic.h> #include <malloc.h> diff --git a/core/arch/arm32/plat-sunxi/entry.S b/core/arch/arm32/plat-sunxi/entry.S index 3d3d67d1..79878d95 100644 --- a/core/arch/arm32/plat-sunxi/entry.S +++ b/core/arch/arm32/plat-sunxi/entry.S @@ -28,7 +28,7 @@ #include <platform_config.h> #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> #include <sm/teesmc.h> #include <sm/teesmc_opteed_macros.h> diff --git a/core/arch/arm32/plat-sunxi/main.c b/core/arch/arm32/plat-sunxi/main.c index 8d3c030f..d56612ad 100644 --- a/core/arch/arm32/plat-sunxi/main.c +++ b/core/arch/arm32/plat-sunxi/main.c @@ -36,7 +36,7 @@ #include <sm/teesmc.h> #include <sm/teesmc_optee.h> -#include <arm32.h> +#include <arm.h> #include <kernel/thread.h> #include <kernel/time_source.h> #include <kernel/panic.h> diff --git a/core/arch/arm32/plat-sunxi/platform.c b/core/arch/arm32/plat-sunxi/platform.c index 576d9a5d..2671f865 100644 --- a/core/arch/arm32/plat-sunxi/platform.c +++ b/core/arch/arm32/plat-sunxi/platform.c @@ -32,7 +32,7 @@ #include <sm/teesmc.h> #include <sm/teesmc_optee.h> -#include <arm32.h> +#include <arm.h> #include <kernel/thread.h> #include <kernel/time_source.h> #include <kernel/panic.h> diff --git a/core/arch/arm32/plat-sunxi/smp_boot.S b/core/arch/arm32/plat-sunxi/smp_boot.S index 4d04a046..498d4328 100644 --- a/core/arch/arm32/plat-sunxi/smp_boot.S +++ b/core/arch/arm32/plat-sunxi/smp_boot.S @@ -26,7 +26,7 @@ */ #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> #include <sm/teesmc.h> #include <sm/teesmc_opteed_macros.h> diff --git a/core/arch/arm32/plat-vexpress/entry_a32.S b/core/arch/arm32/plat-vexpress/entry_a32.S index 8c9df0fb..fe5383e8 100644 --- a/core/arch/arm32/plat-vexpress/entry_a32.S +++ b/core/arch/arm32/plat-vexpress/entry_a32.S @@ -28,7 +28,7 @@ #include <platform_config.h> #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> #include <sm/teesmc.h> #include <sm/teesmc_opteed_macros.h> diff --git a/core/arch/arm32/plat-vexpress/juno_core_pos_a32.S b/core/arch/arm32/plat-vexpress/juno_core_pos_a32.S index ca6d89c5..699d7f51 100644 --- a/core/arch/arm32/plat-vexpress/juno_core_pos_a32.S +++ b/core/arch/arm32/plat-vexpress/juno_core_pos_a32.S @@ -26,7 +26,7 @@ */ #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> /* For Juno number the two A57s as 4 to 5 and A53s as 0 to 3 */ diff --git a/core/arch/arm32/plat-vexpress/main.c b/core/arch/arm32/plat-vexpress/main.c index 1a8032aa..5c1c3115 100644 --- a/core/arch/arm32/plat-vexpress/main.c +++ b/core/arch/arm32/plat-vexpress/main.c @@ -38,7 +38,7 @@ #include <util.h> -#include <arm32.h> +#include <arm.h> #include <kernel/thread.h> #include <kernel/panic.h> #include <trace.h> diff --git a/core/arch/arm32/plat-vexpress/platform_flags.mk b/core/arch/arm32/plat-vexpress/platform_flags.mk index e0cb767b..cf68baeb 100644 --- a/core/arch/arm32/plat-vexpress/platform_flags.mk +++ b/core/arch/arm32/plat-vexpress/platform_flags.mk @@ -2,7 +2,6 @@ PLATFORM_FLAVOR ?= fvp PLATFORM_FLAVOR_$(PLATFORM_FLAVOR) := y # 32-bit flags -arm32-platform-cppflags += -DARM32=1 -DILP32=1 arm32-platform-cpuarch := cortex-a15 arm32-platform-cflags += -mcpu=$(arm32-platform-cpuarch) -mthumb arm32-platform-cflags += -pipe -mthumb-interwork -mlong-calls @@ -13,7 +12,6 @@ arm32-platform-aflags += -mcpu=$(arm32-platform-cpuarch) arm32-platform-aflags += -mfpu=neon # 64-bit flags -arm64-platform-cppflags += -DARM64=1 -DLP64=1 arm64-platform-cflags += -mgeneral-regs-only platform-cflags += -ffunction-sections -fdata-sections diff --git a/core/arch/arm32/sm/sm.c b/core/arch/arm32/sm/sm.c index 619475ce..0f15a695 100644 --- a/core/arch/arm32/sm/sm.c +++ b/core/arch/arm32/sm/sm.c @@ -31,7 +31,7 @@ #include <sm/teesmc_opteed_macros.h> #include <sm/teesmc_opteed.h> -#include <arm32.h> +#include <arm.h> #include <kernel/misc.h> diff --git a/core/arch/arm32/sm/sm_a32.S b/core/arch/arm32/sm/sm_a32.S index c4da5bf5..d2b1dc4e 100644 --- a/core/arch/arm32/sm/sm_a32.S +++ b/core/arch/arm32/sm/sm_a32.S @@ -26,7 +26,7 @@ */ #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <arm32_macros.S> #include <sm/teesmc.h> diff --git a/core/arch/arm32/tee/arch_svc.c b/core/arch/arm32/tee/arch_svc.c index a4606635..b5ec9b83 100644 --- a/core/arch/arm32/tee/arch_svc.c +++ b/core/arch/arm32/tee/arch_svc.c @@ -25,7 +25,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <arm32.h> +#include <arm.h> #include <kernel/thread.h> #include <tee/tee_svc.h> #include <tee/arch_svc.h> diff --git a/core/arch/arm32/tee/arch_svc_a32.S b/core/arch/arm32/tee/arch_svc_a32.S index 784f9542..67616084 100644 --- a/core/arch/arm32/tee/arch_svc_a32.S +++ b/core/arch/arm32/tee/arch_svc_a32.S @@ -27,7 +27,7 @@ #include "tee_syscall_numbers.h" #include "trace_levels.h" #include <asm.S> -#include <arm32.h> +#include <arm.h> #include <tee_api_defines.h> #include <kernel/thread.h> diff --git a/core/core.mk b/core/core.mk index 347c8096..a4dc5e72 100644 --- a/core/core.mk +++ b/core/core.mk @@ -7,6 +7,7 @@ sm-$(sm) := y arch-dir := core/arch/$(ARCH) platform-dir := $(arch-dir)/plat-$(PLATFORM) include $(platform-dir)/conf.mk +include core/arch/$(ARCH)/$(ARCH).mk # Setup compiler for this sub module CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE) diff --git a/ta/arch/arm32/arm32.mk b/ta/arch/arm32/arm32.mk new file mode 100644 index 00000000..40a25486 --- /dev/null +++ b/ta/arch/arm32/arm32.mk @@ -0,0 +1,6 @@ +ifeq ($(CFG_ARM64_user_ta),y) +user_ta-platform-cppflags += -DARM64=1 +endif +ifeq ($(CFG_ARM32_user_ta),y) +user_ta-platform-cppflags += -DARM32=1 +endif diff --git a/ta/mk/ta_dev_kit.mk b/ta/mk/ta_dev_kit.mk index b36ce076..37265da1 100644 --- a/ta/mk/ta_dev_kit.mk +++ b/ta/mk/ta_dev_kit.mk @@ -32,6 +32,8 @@ cflags$(sm) += $(platform-cflags) $(user_ta-platform-cflags) cppflags$(sm) += -I. -I$(ta-dev-kit-dir)/include +include $(ta-dev-kit-dir)/mk/arch.mk + libdirs += $(ta-dev-kit-dir)/lib libnames += utils mpa utee libdeps += $(ta-dev-kit-dir)/lib/libutils.a @@ -9,6 +9,8 @@ CROSS_COMPILE_$(sm) ?= $(CROSS_COMPILE) COMPILER_$(sm) ?= $(COMPILER) include mk/$(COMPILER_$(sm)).mk +include ta/arch/$(ARCH)/$(ARCH).mk + cppflags$(sm) += $(platform-cppflags) $(user_ta-platform-cppflags) cflags$(sm) += $(platform-cflags) $(user_ta-platform-cflags) aflags$(sm) += $(platform-aflags) $(user_ta-platform-aflags) @@ -66,6 +68,17 @@ ta-mkfiles = mk/compile.mk mk/subdir.mk mk/gcc.mk \ $(foreach f, $(ta-mkfiles), \ $(eval $(call copy-file, $(f), $(out-dir)/export-user_ta/mk))) +# Special treatment for ta/arch/$(ARCH)/$(ARCH).mk +arch-arch-mk := $(out-dir)/export-user_ta/mk/arch.mk +$(arch-arch-mk): ta/arch/$(ARCH)/$(ARCH).mk + @set -e; \ + mkdir -p $(dir $@) ; \ + echo ' INSTALL $@' ; \ + cp $< $@ + +cleanfiles += $(arch-arch-mk) +all: $(arch-arch-mk) + # Copy the .h files for TAs define copy-incdir sf := $(subst $1/, , $(shell find $1 -name "*.h")) |