summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2016-05-08 01:18:35 +0200
committerMichael Brown2016-05-08 01:18:35 +0200
commitedea3a434ccae8dc980c715949287c9ba63babf5 (patch)
treed821d987dcf1ac0bc4f22e1363fa32c95f6bd0b2 /src/arch
parent[arm] Avoid instruction references to symbols defined via ".equ" (diff)
downloadipxe-edea3a434ccae8dc980c715949287c9ba63babf5.tar.gz
ipxe-edea3a434ccae8dc980c715949287c9ba63babf5.tar.xz
ipxe-edea3a434ccae8dc980c715949287c9ba63babf5.zip
[arm] Split out 32-bit-specific code to arch/arm32
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm/Makefile21
-rw-r--r--src/arch/arm/Makefile.efi8
-rw-r--r--src/arch/arm/core/arm_io.c26
-rw-r--r--src/arch/arm32/Makefile23
-rw-r--r--src/arch/arm32/Makefile.efi14
-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 f883a64d..3cee5f3a 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 909c8d21..f04be425 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 804014c9..4bc47a5c 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 00000000..3a7c0923
--- /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 00000000..a06354f1
--- /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 839bead1..839bead1 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 7e7b0fe5..7e7b0fe5 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 103c6c48..103c6c48 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 9a5fe14c..9a5fe14c 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 1fc884bd..1fc884bd 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 e420cf92..e420cf92 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 2b15d160..2b15d160 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 fe1f9946..fe1f9946 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 adbd5f4b..adbd5f4b 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 f403d4ce..f403d4ce 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 cd152eed..cd152eed 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 bb48b75a..bb48b75a 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 4828b47a..4828b47a 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 910be4b7..910be4b7 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 cc16e261..cc16e261 100644
--- a/src/arch/arm/libgcc/llshift.S
+++ b/src/arch/arm32/libgcc/llshift.S