diff options
author | rev13@wp.pl <rev13@wp.pl> | 2015-03-01 12:44:39 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-04-22 12:14:55 -0400 |
commit | 12d8a729137ec58107236c472ddb14a819e7bd0b (patch) | |
tree | 9d4f065d21466e06071d29b1b86eb6d185f0dffb /arch/arm/cpu/armv7m | |
parent | 5d27223ea5424fc157c8ac0afb236bc8cfcd1772 (diff) | |
download | u-boot-12d8a729137ec58107236c472ddb14a819e7bd0b.tar.gz u-boot-12d8a729137ec58107236c472ddb14a819e7bd0b.tar.bz2 u-boot-12d8a729137ec58107236c472ddb14a819e7bd0b.zip |
ARM: Add ARMv7-M support
Signed-off-by: Kamil Lulko <rev13@wp.pl>
Diffstat (limited to 'arch/arm/cpu/armv7m')
-rw-r--r-- | arch/arm/cpu/armv7m/Makefile | 9 | ||||
-rw-r--r-- | arch/arm/cpu/armv7m/config.mk | 8 | ||||
-rw-r--r-- | arch/arm/cpu/armv7m/cpu.c | 35 | ||||
-rw-r--r-- | arch/arm/cpu/armv7m/start.S | 15 |
4 files changed, 67 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7m/Makefile b/arch/arm/cpu/armv7m/Makefile new file mode 100644 index 0000000000..aff60e8102 --- /dev/null +++ b/arch/arm/cpu/armv7m/Makefile @@ -0,0 +1,9 @@ +# +# (C) Copyright 2000-2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +extra-y := start.o +obj-y += cpu.o diff --git a/arch/arm/cpu/armv7m/config.mk b/arch/arm/cpu/armv7m/config.mk new file mode 100644 index 0000000000..0b31e44d49 --- /dev/null +++ b/arch/arm/cpu/armv7m/config.mk @@ -0,0 +1,8 @@ +# +# (C) Copyright 2015 +# Kamil Lulko, <rev13@wp.pl> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +PLATFORM_CPPFLAGS += -march=armv7-m -mthumb diff --git a/arch/arm/cpu/armv7m/cpu.c b/arch/arm/cpu/armv7m/cpu.c new file mode 100644 index 0000000000..d3ab862c55 --- /dev/null +++ b/arch/arm/cpu/armv7m/cpu.c @@ -0,0 +1,35 @@ +/* + * (C) Copyright 2010,2011 + * Vladimir Khusainov, Emcraft Systems, vlad@emcraft.com + * + * (C) Copyright 2015 + * Kamil Lulko, <rev13@wp.pl> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/armv7m.h> + +/* + * This is called right before passing control to + * the Linux kernel point. + */ +int cleanup_before_linux(void) +{ + return 0; +} + +/* + * Perform the low-level reset. + */ +void reset_cpu(ulong addr) +{ + /* + * Perform reset but keep priority group unchanged. + */ + writel((V7M_AIRCR_VECTKEY << V7M_AIRCR_VECTKEY_SHIFT) + | (V7M_SCB->aircr & V7M_AIRCR_PRIGROUP_MSK) + | V7M_AIRCR_SYSRESET, &V7M_SCB->aircr); +} diff --git a/arch/arm/cpu/armv7m/start.S b/arch/arm/cpu/armv7m/start.S new file mode 100644 index 0000000000..e05e984228 --- /dev/null +++ b/arch/arm/cpu/armv7m/start.S @@ -0,0 +1,15 @@ +/* + * (C) Copyright 2015 + * Kamil Lulko, <rev13@wp.pl> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +.globl reset +.type reset, %function +reset: + b _main + +.globl c_runtime_cpu_setup +c_runtime_cpu_setup: + mov pc, lr |