aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2012-12-19 14:16:30 +0000
committerIan Campbell <ian.campbell@citrix.com>2012-12-19 14:16:30 +0000
commit5a81d6b026ab06123f47e39bc47aedcf23048e6b (patch)
treea450f0d70e07174ed80819808588fcecbcd43ffd
parent977dba41ab7c2380c4b6757aed2e680a0d7df4c1 (diff)
downloadxen-5a81d6b026ab06123f47e39bc47aedcf23048e6b.tar.gz
xen-5a81d6b026ab06123f47e39bc47aedcf23048e6b.tar.bz2
xen-5a81d6b026ab06123f47e39bc47aedcf23048e6b.zip
xen: arm: introduce arm32 as a subarch of arm.
- move 32-bit specific files into subarch specific arm32 subdirectory. - move gic.h to xen/include/asm-arm (it is needed from both subarch and generic code). - make the appropriate build and config file changes to support XEN_TARGET_ARCH=arm32. This prepares us for an eventual 64-bit subarch. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Committed-by: Ian Campbell <ian.campbell@citrix.com>
-rw-r--r--Config.mk4
-rw-r--r--config/arm32.mk (renamed from config/arm.mk)0
-rw-r--r--xen/Rules.mk2
-rw-r--r--xen/arch/arm/Makefile9
-rw-r--r--xen/arch/arm/Rules.mk13
-rw-r--r--xen/arch/arm/arm32/Makefile5
-rw-r--r--xen/arch/arm/arm32/asm-offsets.c (renamed from xen/arch/arm/asm-offsets.c)0
-rw-r--r--xen/arch/arm/arm32/entry.S (renamed from xen/arch/arm/entry.S)0
-rw-r--r--xen/arch/arm/arm32/head.S (renamed from xen/arch/arm/head.S)0
-rw-r--r--xen/arch/arm/arm32/lib/Makefile (renamed from xen/arch/arm/lib/Makefile)0
-rw-r--r--xen/arch/arm/arm32/lib/assembler.h (renamed from xen/arch/arm/lib/assembler.h)0
-rw-r--r--xen/arch/arm/arm32/lib/bitops.h (renamed from xen/arch/arm/lib/bitops.h)0
-rw-r--r--xen/arch/arm/arm32/lib/changebit.S (renamed from xen/arch/arm/lib/changebit.S)0
-rw-r--r--xen/arch/arm/arm32/lib/clearbit.S (renamed from xen/arch/arm/lib/clearbit.S)0
-rw-r--r--xen/arch/arm/arm32/lib/copy_template.S (renamed from xen/arch/arm/lib/copy_template.S)0
-rw-r--r--xen/arch/arm/arm32/lib/div64.S (renamed from xen/arch/arm/lib/div64.S)0
-rw-r--r--xen/arch/arm/arm32/lib/findbit.S (renamed from xen/arch/arm/lib/findbit.S)0
-rw-r--r--xen/arch/arm/arm32/lib/lib1funcs.S (renamed from xen/arch/arm/lib/lib1funcs.S)0
-rw-r--r--xen/arch/arm/arm32/lib/lshrdi3.S (renamed from xen/arch/arm/lib/lshrdi3.S)0
-rw-r--r--xen/arch/arm/arm32/lib/memcpy.S (renamed from xen/arch/arm/lib/memcpy.S)0
-rw-r--r--xen/arch/arm/arm32/lib/memmove.S (renamed from xen/arch/arm/lib/memmove.S)0
-rw-r--r--xen/arch/arm/arm32/lib/memset.S (renamed from xen/arch/arm/lib/memset.S)0
-rw-r--r--xen/arch/arm/arm32/lib/memzero.S (renamed from xen/arch/arm/lib/memzero.S)0
-rw-r--r--xen/arch/arm/arm32/lib/setbit.S (renamed from xen/arch/arm/lib/setbit.S)0
-rw-r--r--xen/arch/arm/arm32/lib/testchangebit.S (renamed from xen/arch/arm/lib/testchangebit.S)0
-rw-r--r--xen/arch/arm/arm32/lib/testclearbit.S (renamed from xen/arch/arm/lib/testclearbit.S)0
-rw-r--r--xen/arch/arm/arm32/lib/testsetbit.S (renamed from xen/arch/arm/lib/testsetbit.S)0
-rw-r--r--xen/arch/arm/arm32/mode_switch.S (renamed from xen/arch/arm/mode_switch.S)2
-rw-r--r--xen/arch/arm/arm32/proc-ca15.S (renamed from xen/arch/arm/proc-ca15.S)0
-rw-r--r--xen/arch/arm/domain.c2
-rw-r--r--xen/arch/arm/domain_build.c2
-rw-r--r--xen/arch/arm/gic.c2
-rw-r--r--xen/arch/arm/irq.c2
-rw-r--r--xen/arch/arm/p2m.c2
-rw-r--r--xen/arch/arm/setup.c2
-rw-r--r--xen/arch/arm/smpboot.c2
-rw-r--r--xen/arch/arm/traps.c2
-rw-r--r--xen/arch/arm/vgic.c2
-rw-r--r--xen/arch/arm/vtimer.c2
-rw-r--r--xen/include/asm-arm/gic.h (renamed from xen/arch/arm/gic.h)6
40 files changed, 33 insertions, 28 deletions
diff --git a/Config.mk b/Config.mk
index 028b6d514a..a7d7f79618 100644
--- a/Config.mk
+++ b/Config.mk
@@ -14,7 +14,9 @@ debug ?= y
debug_symbols ?= $(debug)
XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/ \
- -e s/i86pc/x86_32/ -e s/amd64/x86_64/ -e s/arm.*/arm/)
+ -e s/i86pc/x86_32/ -e s/amd64/x86_64/ \
+ -e s/armv7.*/arm32/)
+
XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH)
XEN_OS ?= $(shell uname -s)
diff --git a/config/arm.mk b/config/arm32.mk
index f64f0c1c83..f64f0c1c83 100644
--- a/config/arm.mk
+++ b/config/arm32.mk
diff --git a/xen/Rules.mk b/xen/Rules.mk
index f7cb8b2c86..c2db449648 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -28,7 +28,7 @@ endif
# Set ARCH/SUBARCH appropriately.
override TARGET_SUBARCH := $(XEN_TARGET_ARCH)
override TARGET_ARCH := $(shell echo $(XEN_TARGET_ARCH) | \
- sed -e 's/x86.*/x86/')
+ sed -e 's/x86.*/x86/' -e s'/arm\(32\|64\)/arm/g')
TARGET := $(BASEDIR)/xen
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 4c61b042a7..24c0c12625 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -1,8 +1,7 @@
-subdir-y += lib
+subdir-$(arm32) += arm32
obj-y += dummy.o
obj-y += early_printk.o
-obj-y += entry.o
obj-y += domain.o
obj-y += domctl.o
obj-y += sysctl.o
@@ -12,8 +11,6 @@ obj-y += io.o
obj-y += irq.o
obj-y += kernel.o
obj-y += mm.o
-obj-y += mode_switch.o
-obj-y += proc-ca15.o
obj-y += p2m.o
obj-y += percpu.o
obj-y += guestcopy.o
@@ -36,7 +33,7 @@ obj-y += dtb.o
AFLAGS += -DCONFIG_DTB_FILE=\"$(CONFIG_DTB_FILE)\"
endif
-ALL_OBJS := head.o $(ALL_OBJS)
+ALL_OBJS := $(TARGET_SUBARCH)/head.o $(ALL_OBJS)
$(TARGET): $(TARGET)-syms $(TARGET).bin
# XXX: VE model loads by VMA so instead of
@@ -81,7 +78,7 @@ $(TARGET)-syms: prelink.o xen.lds $(BASEDIR)/common/symbols-dummy.o
$(@D)/.$(@F).1.o -o $@
rm -f $(@D)/.$(@F).[0-9]*
-asm-offsets.s: asm-offsets.c
+asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
$(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $<
xen.lds: xen.lds.S
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index a45c654346..f83bfee24d 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -12,16 +12,19 @@ CFLAGS += -fno-builtin -fno-common -Wredundant-decls
CFLAGS += -iwithprefix include -Werror -Wno-pointer-arith -pipe
CFLAGS += -I$(BASEDIR)/include
-# Prevent floating-point variables from creeping into Xen.
-CFLAGS += -msoft-float
-
$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
arm := y
+ifeq ($(TARGET_SUBARCH),arm32)
+# Prevent floating-point variables from creeping into Xen.
+CFLAGS += -msoft-float
+CFLAGS += -mcpu=cortex-a15 -mfpu=vfpv3 -mfloat-abi=softfp
+arm32 := y
+arm64 := n
+endif
+
ifneq ($(call cc-option,$(CC),-fvisibility=hidden,n),n)
CFLAGS += -DGCC_HAS_VISIBILITY_ATTRIBUTE
endif
-
-CFLAGS += -mcpu=cortex-a15 -mfpu=vfpv3 -mfloat-abi=softfp
diff --git a/xen/arch/arm/arm32/Makefile b/xen/arch/arm/arm32/Makefile
new file mode 100644
index 0000000000..20931fa63d
--- /dev/null
+++ b/xen/arch/arm/arm32/Makefile
@@ -0,0 +1,5 @@
+subdir-y += lib
+
+obj-y += entry.o
+obj-y += mode_switch.o
+obj-y += proc-ca15.o
diff --git a/xen/arch/arm/asm-offsets.c b/xen/arch/arm/arm32/asm-offsets.c
index cc1a72a659..cc1a72a659 100644
--- a/xen/arch/arm/asm-offsets.c
+++ b/xen/arch/arm/arm32/asm-offsets.c
diff --git a/xen/arch/arm/entry.S b/xen/arch/arm/arm32/entry.S
index 36114273d7..36114273d7 100644
--- a/xen/arch/arm/entry.S
+++ b/xen/arch/arm/arm32/entry.S
diff --git a/xen/arch/arm/head.S b/xen/arch/arm/arm32/head.S
index 93f4edba53..93f4edba53 100644
--- a/xen/arch/arm/head.S
+++ b/xen/arch/arm/arm32/head.S
diff --git a/xen/arch/arm/lib/Makefile b/xen/arch/arm/arm32/lib/Makefile
index 4cf41f41e1..4cf41f41e1 100644
--- a/xen/arch/arm/lib/Makefile
+++ b/xen/arch/arm/arm32/lib/Makefile
diff --git a/xen/arch/arm/lib/assembler.h b/xen/arch/arm/arm32/lib/assembler.h
index f8d4b3aa04..f8d4b3aa04 100644
--- a/xen/arch/arm/lib/assembler.h
+++ b/xen/arch/arm/arm32/lib/assembler.h
diff --git a/xen/arch/arm/lib/bitops.h b/xen/arch/arm/arm32/lib/bitops.h
index 689f2e8665..689f2e8665 100644
--- a/xen/arch/arm/lib/bitops.h
+++ b/xen/arch/arm/arm32/lib/bitops.h
diff --git a/xen/arch/arm/lib/changebit.S b/xen/arch/arm/arm32/lib/changebit.S
index 62954bcd07..62954bcd07 100644
--- a/xen/arch/arm/lib/changebit.S
+++ b/xen/arch/arm/arm32/lib/changebit.S
diff --git a/xen/arch/arm/lib/clearbit.S b/xen/arch/arm/arm32/lib/clearbit.S
index 42ce41656d..42ce41656d 100644
--- a/xen/arch/arm/lib/clearbit.S
+++ b/xen/arch/arm/arm32/lib/clearbit.S
diff --git a/xen/arch/arm/lib/copy_template.S b/xen/arch/arm/arm32/lib/copy_template.S
index 805e3f8fb0..805e3f8fb0 100644
--- a/xen/arch/arm/lib/copy_template.S
+++ b/xen/arch/arm/arm32/lib/copy_template.S
diff --git a/xen/arch/arm/lib/div64.S b/xen/arch/arm/arm32/lib/div64.S
index 83a5f22a84..83a5f22a84 100644
--- a/xen/arch/arm/lib/div64.S
+++ b/xen/arch/arm/arm32/lib/div64.S
diff --git a/xen/arch/arm/lib/findbit.S b/xen/arch/arm/arm32/lib/findbit.S
index 2fbcc82995..2fbcc82995 100644
--- a/xen/arch/arm/lib/findbit.S
+++ b/xen/arch/arm/arm32/lib/findbit.S
diff --git a/xen/arch/arm/lib/lib1funcs.S b/xen/arch/arm/arm32/lib/lib1funcs.S
index 95ee3121d9..95ee3121d9 100644
--- a/xen/arch/arm/lib/lib1funcs.S
+++ b/xen/arch/arm/arm32/lib/lib1funcs.S
diff --git a/xen/arch/arm/lib/lshrdi3.S b/xen/arch/arm/arm32/lib/lshrdi3.S
index 3e8887ef4e..3e8887ef4e 100644
--- a/xen/arch/arm/lib/lshrdi3.S
+++ b/xen/arch/arm/arm32/lib/lshrdi3.S
diff --git a/xen/arch/arm/lib/memcpy.S b/xen/arch/arm/arm32/lib/memcpy.S
index d1ab9fbb55..d1ab9fbb55 100644
--- a/xen/arch/arm/lib/memcpy.S
+++ b/xen/arch/arm/arm32/lib/memcpy.S
diff --git a/xen/arch/arm/lib/memmove.S b/xen/arch/arm/arm32/lib/memmove.S
index 4e142b8aeb..4e142b8aeb 100644
--- a/xen/arch/arm/lib/memmove.S
+++ b/xen/arch/arm/arm32/lib/memmove.S
diff --git a/xen/arch/arm/lib/memset.S b/xen/arch/arm/arm32/lib/memset.S
index d2937a3e0e..d2937a3e0e 100644
--- a/xen/arch/arm/lib/memset.S
+++ b/xen/arch/arm/arm32/lib/memset.S
diff --git a/xen/arch/arm/lib/memzero.S b/xen/arch/arm/arm32/lib/memzero.S
index ce25acaad1..ce25acaad1 100644
--- a/xen/arch/arm/lib/memzero.S
+++ b/xen/arch/arm/arm32/lib/memzero.S
diff --git a/xen/arch/arm/lib/setbit.S b/xen/arch/arm/arm32/lib/setbit.S
index c828851553..c828851553 100644
--- a/xen/arch/arm/lib/setbit.S
+++ b/xen/arch/arm/arm32/lib/setbit.S
diff --git a/xen/arch/arm/lib/testchangebit.S b/xen/arch/arm/arm32/lib/testchangebit.S
index a7f527cd98..a7f527cd98 100644
--- a/xen/arch/arm/lib/testchangebit.S
+++ b/xen/arch/arm/arm32/lib/testchangebit.S
diff --git a/xen/arch/arm/lib/testclearbit.S b/xen/arch/arm/arm32/lib/testclearbit.S
index 8f39c72936..8f39c72936 100644
--- a/xen/arch/arm/lib/testclearbit.S
+++ b/xen/arch/arm/arm32/lib/testclearbit.S
diff --git a/xen/arch/arm/lib/testsetbit.S b/xen/arch/arm/arm32/lib/testsetbit.S
index 1b8d273100..1b8d273100 100644
--- a/xen/arch/arm/lib/testsetbit.S
+++ b/xen/arch/arm/arm32/lib/testsetbit.S
diff --git a/xen/arch/arm/mode_switch.S b/xen/arch/arm/arm32/mode_switch.S
index 3dba38df7d..411eb924cb 100644
--- a/xen/arch/arm/mode_switch.S
+++ b/xen/arch/arm/arm32/mode_switch.S
@@ -21,7 +21,7 @@
#include <asm/page.h>
#include <asm/platform_vexpress.h>
#include <asm/asm_defns.h>
-#include "gic.h"
+#include <asm/gic.h>
/* XXX: Versatile Express specific code */
diff --git a/xen/arch/arm/proc-ca15.S b/xen/arch/arm/arm32/proc-ca15.S
index dcdd42e09e..dcdd42e09e 100644
--- a/xen/arch/arm/proc-ca15.S
+++ b/xen/arch/arm/arm32/proc-ca15.S
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 7bbad45553..2ad5c9063e 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -12,7 +12,7 @@
#include <asm/p2m.h>
#include <asm/irq.h>
-#include "gic.h"
+#include <asm/gic.h>
#include "vtimer.h"
#include "vpl011.h"
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 432fdc01c3..1e9776d597 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -11,7 +11,7 @@
#include <xen/libfdt/libfdt.h>
#include <xen/guest_access.h>
-#include "gic.h"
+#include <asm/gic.h>
#include "kernel.h"
static unsigned int __initdata opt_dom0_max_vcpus;
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index 7686bde7cf..b77761e245 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -30,7 +30,7 @@
#include <asm/p2m.h>
#include <asm/domain.h>
-#include "gic.h"
+#include <asm/gic.h>
/* Access to the GIC Distributor registers through the fixmap */
#define GICD ((volatile uint32_t *) FIXMAP_ADDR(FIXMAP_GICD))
diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
index a50281b04b..587a725dc2 100644
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -25,7 +25,7 @@
#include <xen/errno.h>
#include <xen/sched.h>
-#include "gic.h"
+#include <asm/gic.h>
static void enable_none(struct irq_desc *irq) { }
static unsigned int startup_none(struct irq_desc *irq) { return 0; }
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 7ae451596e..852f0d879e 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -4,7 +4,7 @@
#include <xen/errno.h>
#include <xen/domain_page.h>
#include <asm/flushtlb.h>
-#include "gic.h"
+#include <asm/gic.h>
void dump_p2m_lookup(struct domain *d, paddr_t addr)
{
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index bbee051c1b..b5cb912f0a 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -39,7 +39,7 @@
#include <asm/setup.h>
#include <asm/vfp.h>
#include <asm/early_printk.h>
-#include "gic.h"
+#include <asm/gic.h>
static __used void init_done(void)
{
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 351b559f48..c7a586b3b8 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -29,7 +29,7 @@
#include <xen/timer.h>
#include <xen/irq.h>
#include <asm/vfp.h>
-#include "gic.h"
+#include <asm/gic.h>
cpumask_t cpu_online_map;
EXPORT_SYMBOL(cpu_online_map);
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 096dc0bfb3..bddd7d4094 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -35,7 +35,7 @@
#include "io.h"
#include "vtimer.h"
-#include "gic.h"
+#include <asm/gic.h>
/* The base of the stack must always be double-word aligned, which means
* that both the kernel half of struct cpu_user_regs (which is pushed in
diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
index 3f7e757a08..7d1a5adaeb 100644
--- a/xen/arch/arm/vgic.c
+++ b/xen/arch/arm/vgic.c
@@ -27,7 +27,7 @@
#include <asm/current.h>
#include "io.h"
-#include "gic.h"
+#include <asm/gic.h>
#define VGIC_DISTR_BASE_ADDRESS 0x000000002c001000
diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index 490b021342..1c45f4a9d3 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -21,7 +21,7 @@
#include <xen/lib.h>
#include <xen/timer.h>
#include <xen/sched.h>
-#include "gic.h"
+#include <asm/gic.h>
extern s_time_t ticks_to_ns(uint64_t ticks);
extern uint64_t ns_to_ticks(s_time_t ns);
diff --git a/xen/arch/arm/gic.h b/xen/include/asm-arm/gic.h
index 1bf1b02913..bf30fbdd74 100644
--- a/xen/arch/arm/gic.h
+++ b/xen/include/asm-arm/gic.h
@@ -1,6 +1,4 @@
/*
- * xen/arch/arm/gic.h
- *
* ARM Generic Interrupt Controller support
*
* Tim Deegan <tim@xen.org>
@@ -17,8 +15,8 @@
* GNU General Public License for more details.
*/
-#ifndef __ARCH_ARM_GIC_H__
-#define __ARCH_ARM_GIC_H__
+#ifndef __ASM_ARM_GIC_H__
+#define __ASM_ARM_GIC_H__
#define GICD_CTLR (0x000/4)
#define GICD_TYPER (0x004/4)