mirror of https://github.com/ipxe/ipxe.git
[arm] Split out 32-bit-specific code to arch/arm32
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/53/head
parent
2a187f480e
commit
edea3a434c
|
@ -3,23 +3,10 @@
|
||||||
ASM_TCHAR := %
|
ASM_TCHAR := %
|
||||||
ASM_TCHAR_OPS := %%
|
ASM_TCHAR_OPS := %%
|
||||||
|
|
||||||
|
# Include common ARM headers
|
||||||
|
#
|
||||||
|
INCDIRS += arch/arm/include
|
||||||
|
|
||||||
# ARM-specific directories containing source files
|
# ARM-specific directories containing source files
|
||||||
#
|
#
|
||||||
SRCDIRS += arch/arm/core
|
|
||||||
SRCDIRS += arch/arm/libgcc
|
|
||||||
SRCDIRS += arch/arm/interface/efi
|
SRCDIRS += arch/arm/interface/efi
|
||||||
|
|
||||||
# ARM-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 platform-specific Makefile
|
|
||||||
#
|
|
||||||
MAKEDEPS += arch/arm/Makefile.$(PLATFORM)
|
|
||||||
include arch/arm/Makefile.$(PLATFORM)
|
|
||||||
|
|
|
@ -1,13 +1,5 @@
|
||||||
# -*- makefile -*- : Force emacs to use Makefile mode
|
# -*- 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
|
# Include generic EFI Makefile
|
||||||
#
|
#
|
||||||
MAKEDEPS += Makefile.efi
|
MAKEDEPS += Makefile.efi
|
||||||
|
|
|
@ -33,7 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** An ARM I/O qword */
|
/** An ARM I/O qword */
|
||||||
union arm_io_qword {
|
union arm32_io_qword {
|
||||||
uint64_t qword;
|
uint64_t qword;
|
||||||
uint32_t dword[2];
|
uint32_t dword[2];
|
||||||
};
|
};
|
||||||
|
@ -44,12 +44,12 @@ union arm_io_qword {
|
||||||
* @v io_addr I/O address
|
* @v io_addr I/O address
|
||||||
* @ret data Value read
|
* @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 ) {
|
static uint64_t arm32_readq ( volatile uint64_t *io_addr ) {
|
||||||
volatile union arm_io_qword *ptr =
|
volatile union arm32_io_qword *ptr =
|
||||||
container_of ( io_addr, union arm_io_qword, qword );
|
container_of ( io_addr, union arm32_io_qword, qword );
|
||||||
union arm_io_qword tmp;
|
union arm32_io_qword tmp;
|
||||||
|
|
||||||
tmp.dword[0] = readl ( &ptr->dword[0] );
|
tmp.dword[0] = readl ( &ptr->dword[0] );
|
||||||
tmp.dword[1] = readl ( &ptr->dword[1] );
|
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 data Value to write
|
||||||
* @v io_addr I/O address
|
* @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 ) {
|
static void arm32_writeq ( uint64_t data, volatile uint64_t *io_addr ) {
|
||||||
volatile union arm_io_qword *ptr =
|
volatile union arm32_io_qword *ptr =
|
||||||
container_of ( io_addr, union arm_io_qword, qword );
|
container_of ( io_addr, union arm32_io_qword, qword );
|
||||||
union arm_io_qword tmp;
|
union arm32_io_qword tmp;
|
||||||
|
|
||||||
tmp.qword = data;
|
tmp.qword = data;
|
||||||
writel ( tmp.dword[0], &ptr->dword[0] );
|
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, writel );
|
||||||
PROVIDE_IOAPI_INLINE ( arm, iodelay );
|
PROVIDE_IOAPI_INLINE ( arm, iodelay );
|
||||||
PROVIDE_IOAPI_INLINE ( arm, mb );
|
PROVIDE_IOAPI_INLINE ( arm, mb );
|
||||||
PROVIDE_IOAPI ( arm, readq, arm_readq );
|
PROVIDE_IOAPI ( arm, readq, arm32_readq );
|
||||||
PROVIDE_IOAPI ( arm, writeq, arm_writeq );
|
PROVIDE_IOAPI ( arm, writeq, arm32_writeq );
|
||||||
|
|
|
@ -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)
|
|
@ -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
|
Loading…
Reference in New Issue