diff options
author | Michael Brown <mcb30@ipxe.org> | 2016-05-08 00:18:35 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2016-05-08 00:18:35 +0100 |
commit | edea3a434ccae8dc980c715949287c9ba63babf5 (patch) | |
tree | d821d987dcf1ac0bc4f22e1363fa32c95f6bd0b2 /src | |
parent | 2a187f480ecc9d7943a53658e748bb5e60104788 (diff) | |
download | ipxe-edea3a434ccae8dc980c715949287c9ba63babf5.tar.gz |
[arm] Split out 32-bit-specific code to arch/arm32
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/arm/Makefile | 21 | ||||
-rw-r--r-- | src/arch/arm/Makefile.efi | 8 | ||||
-rw-r--r-- | src/arch/arm/core/arm_io.c | 26 | ||||
-rw-r--r-- | src/arch/arm32/Makefile | 23 | ||||
-rw-r--r-- | src/arch/arm32/Makefile.efi | 14 | ||||
-rw-r--r-- | src/arch/arm32/core/arm32_bigint.c (renamed from src/arch/arm/core/arm_bigint.c) | 0 | ||||
-rw-r--r-- | src/arch/arm32/core/setjmp.S (renamed from src/arch/arm/core/setjmp.S) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/bigint.h (renamed from src/arch/arm/include/bits/bigint.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/bitops.h (renamed from src/arch/arm/include/bits/bitops.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/byteswap.h (renamed from src/arch/arm/include/bits/byteswap.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/compiler.h (renamed from src/arch/arm/include/bits/compiler.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/profile.h (renamed from src/arch/arm/include/bits/profile.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/stdint.h (renamed from src/arch/arm/include/bits/stdint.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/bits/strings.h (renamed from src/arch/arm/include/bits/strings.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/efi/ipxe/dhcp_arch.h (renamed from src/arch/arm/include/efi/ipxe/dhcp_arch.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/gdbmach.h (renamed from src/arch/arm/include/gdbmach.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/limits.h (renamed from src/arch/arm/include/limits.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/include/setjmp.h (renamed from src/arch/arm/include/setjmp.h) | 0 | ||||
-rw-r--r-- | src/arch/arm32/libgcc/lldivmod.S (renamed from src/arch/arm/libgcc/lldivmod.S) | 0 | ||||
-rw-r--r-- | src/arch/arm32/libgcc/llshift.S (renamed from src/arch/arm/libgcc/llshift.S) | 0 |
20 files changed, 54 insertions, 38 deletions
diff --git a/src/arch/arm/Makefile b/src/arch/arm/Makefile index f883a64d6..3cee5f3ac 100644 --- a/src/arch/arm/Makefile +++ b/src/arch/arm/Makefile @@ -3,23 +3,10 @@ ASM_TCHAR := % ASM_TCHAR_OPS := %% -# ARM-specific directories containing source files -# -SRCDIRS += arch/arm/core -SRCDIRS += arch/arm/libgcc -SRCDIRS += arch/arm/interface/efi - -# ARM-specific flags +# Include common ARM headers # -CFLAGS += -mthumb -mcpu=cortex-a15 -mabi=aapcs -mfloat-abi=soft -CFLAGS += -mword-relocations -ASFLAGS += -mthumb -mcpu=cortex-a15 +INCDIRS += arch/arm/include -# EFI requires -fshort-wchar, and nothing else currently uses wchar_t -# -CFLAGS += -fshort-wchar - -# Include platform-specific Makefile +# ARM-specific directories containing source files # -MAKEDEPS += arch/arm/Makefile.$(PLATFORM) -include arch/arm/Makefile.$(PLATFORM) +SRCDIRS += arch/arm/interface/efi diff --git a/src/arch/arm/Makefile.efi b/src/arch/arm/Makefile.efi index 909c8d21b..f04be425b 100644 --- a/src/arch/arm/Makefile.efi +++ b/src/arch/arm/Makefile.efi @@ -1,13 +1,5 @@ # -*- makefile -*- : Force emacs to use Makefile mode -# Specify EFI image builder -# -ELF2EFI = $(ELF2EFI32) - -# Specify EFI boot file -# -EFI_BOOT_FILE = bootarm.efi - # Include generic EFI Makefile # MAKEDEPS += Makefile.efi diff --git a/src/arch/arm/core/arm_io.c b/src/arch/arm/core/arm_io.c index 804014c9a..4bc47a5c6 100644 --- a/src/arch/arm/core/arm_io.c +++ b/src/arch/arm/core/arm_io.c @@ -33,7 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); */ /** An ARM I/O qword */ -union arm_io_qword { +union arm32_io_qword { uint64_t qword; uint32_t dword[2]; }; @@ -44,12 +44,12 @@ union arm_io_qword { * @v io_addr I/O address * @ret data Value read * - * This is not atomic for ARM. + * This is not atomic for ARM32. */ -static uint64_t arm_readq ( volatile uint64_t *io_addr ) { - volatile union arm_io_qword *ptr = - container_of ( io_addr, union arm_io_qword, qword ); - union arm_io_qword tmp; +static uint64_t arm32_readq ( volatile uint64_t *io_addr ) { + volatile union arm32_io_qword *ptr = + container_of ( io_addr, union arm32_io_qword, qword ); + union arm32_io_qword tmp; tmp.dword[0] = readl ( &ptr->dword[0] ); tmp.dword[1] = readl ( &ptr->dword[1] ); @@ -62,12 +62,12 @@ static uint64_t arm_readq ( volatile uint64_t *io_addr ) { * @v data Value to write * @v io_addr I/O address * - * This is not atomic for ARM. + * This is not atomic for ARM32. */ -static void arm_writeq ( uint64_t data, volatile uint64_t *io_addr ) { - volatile union arm_io_qword *ptr = - container_of ( io_addr, union arm_io_qword, qword ); - union arm_io_qword tmp; +static void arm32_writeq ( uint64_t data, volatile uint64_t *io_addr ) { + volatile union arm32_io_qword *ptr = + container_of ( io_addr, union arm32_io_qword, qword ); + union arm32_io_qword tmp; tmp.qword = data; writel ( tmp.dword[0], &ptr->dword[0] ); @@ -84,5 +84,5 @@ PROVIDE_IOAPI_INLINE ( arm, writew ); PROVIDE_IOAPI_INLINE ( arm, writel ); PROVIDE_IOAPI_INLINE ( arm, iodelay ); PROVIDE_IOAPI_INLINE ( arm, mb ); -PROVIDE_IOAPI ( arm, readq, arm_readq ); -PROVIDE_IOAPI ( arm, writeq, arm_writeq ); +PROVIDE_IOAPI ( arm, readq, arm32_readq ); +PROVIDE_IOAPI ( arm, writeq, arm32_writeq ); diff --git a/src/arch/arm32/Makefile b/src/arch/arm32/Makefile new file mode 100644 index 000000000..3a7c09230 --- /dev/null +++ b/src/arch/arm32/Makefile @@ -0,0 +1,23 @@ +# ARM32-specific directories containing source files +# +SRCDIRS += arch/arm32/core +SRCDIRS += arch/arm32/libgcc + +# ARM32-specific flags +# +CFLAGS += -mthumb -mcpu=cortex-a15 -mabi=aapcs -mfloat-abi=soft +CFLAGS += -mword-relocations +ASFLAGS += -mthumb -mcpu=cortex-a15 + +# EFI requires -fshort-wchar, and nothing else currently uses wchar_t +# +CFLAGS += -fshort-wchar + +# Include common ARM Makefile +MAKEDEPS += arch/arm/Makefile +include arch/arm/Makefile + +# Include platform-specific Makefile +# +MAKEDEPS += arch/arm32/Makefile.$(PLATFORM) +include arch/arm32/Makefile.$(PLATFORM) diff --git a/src/arch/arm32/Makefile.efi b/src/arch/arm32/Makefile.efi new file mode 100644 index 000000000..a06354f1d --- /dev/null +++ b/src/arch/arm32/Makefile.efi @@ -0,0 +1,14 @@ +# -*- makefile -*- : Force emacs to use Makefile mode + +# Specify EFI image builder +# +ELF2EFI = $(ELF2EFI32) + +# Specify EFI boot file +# +EFI_BOOT_FILE = bootarm.efi + +# Include generic EFI Makefile +# +MAKEDEPS += arch/arm/Makefile.efi +include arch/arm/Makefile.efi diff --git a/src/arch/arm/core/arm_bigint.c b/src/arch/arm32/core/arm32_bigint.c index 839bead18..839bead18 100644 --- a/src/arch/arm/core/arm_bigint.c +++ b/src/arch/arm32/core/arm32_bigint.c diff --git a/src/arch/arm/core/setjmp.S b/src/arch/arm32/core/setjmp.S index 7e7b0fe58..7e7b0fe58 100644 --- a/src/arch/arm/core/setjmp.S +++ b/src/arch/arm32/core/setjmp.S diff --git a/src/arch/arm/include/bits/bigint.h b/src/arch/arm32/include/bits/bigint.h index 103c6c489..103c6c489 100644 --- a/src/arch/arm/include/bits/bigint.h +++ b/src/arch/arm32/include/bits/bigint.h diff --git a/src/arch/arm/include/bits/bitops.h b/src/arch/arm32/include/bits/bitops.h index 9a5fe14c2..9a5fe14c2 100644 --- a/src/arch/arm/include/bits/bitops.h +++ b/src/arch/arm32/include/bits/bitops.h diff --git a/src/arch/arm/include/bits/byteswap.h b/src/arch/arm32/include/bits/byteswap.h index 1fc884bd8..1fc884bd8 100644 --- a/src/arch/arm/include/bits/byteswap.h +++ b/src/arch/arm32/include/bits/byteswap.h diff --git a/src/arch/arm/include/bits/compiler.h b/src/arch/arm32/include/bits/compiler.h index e420cf922..e420cf922 100644 --- a/src/arch/arm/include/bits/compiler.h +++ b/src/arch/arm32/include/bits/compiler.h diff --git a/src/arch/arm/include/bits/profile.h b/src/arch/arm32/include/bits/profile.h index 2b15d1604..2b15d1604 100644 --- a/src/arch/arm/include/bits/profile.h +++ b/src/arch/arm32/include/bits/profile.h diff --git a/src/arch/arm/include/bits/stdint.h b/src/arch/arm32/include/bits/stdint.h index fe1f9946a..fe1f9946a 100644 --- a/src/arch/arm/include/bits/stdint.h +++ b/src/arch/arm32/include/bits/stdint.h diff --git a/src/arch/arm/include/bits/strings.h b/src/arch/arm32/include/bits/strings.h index adbd5f4b4..adbd5f4b4 100644 --- a/src/arch/arm/include/bits/strings.h +++ b/src/arch/arm32/include/bits/strings.h diff --git a/src/arch/arm/include/efi/ipxe/dhcp_arch.h b/src/arch/arm32/include/efi/ipxe/dhcp_arch.h index f403d4ce8..f403d4ce8 100644 --- a/src/arch/arm/include/efi/ipxe/dhcp_arch.h +++ b/src/arch/arm32/include/efi/ipxe/dhcp_arch.h diff --git a/src/arch/arm/include/gdbmach.h b/src/arch/arm32/include/gdbmach.h index cd152eedd..cd152eedd 100644 --- a/src/arch/arm/include/gdbmach.h +++ b/src/arch/arm32/include/gdbmach.h diff --git a/src/arch/arm/include/limits.h b/src/arch/arm32/include/limits.h index bb48b75ab..bb48b75ab 100644 --- a/src/arch/arm/include/limits.h +++ b/src/arch/arm32/include/limits.h diff --git a/src/arch/arm/include/setjmp.h b/src/arch/arm32/include/setjmp.h index 4828b47a2..4828b47a2 100644 --- a/src/arch/arm/include/setjmp.h +++ b/src/arch/arm32/include/setjmp.h diff --git a/src/arch/arm/libgcc/lldivmod.S b/src/arch/arm32/libgcc/lldivmod.S index 910be4b78..910be4b78 100644 --- a/src/arch/arm/libgcc/lldivmod.S +++ b/src/arch/arm32/libgcc/lldivmod.S diff --git a/src/arch/arm/libgcc/llshift.S b/src/arch/arm32/libgcc/llshift.S index cc16e2615..cc16e2615 100644 --- a/src/arch/arm/libgcc/llshift.S +++ b/src/arch/arm32/libgcc/llshift.S |