Skip to content

Commit 6e39fd1

Browse files
dgarskedanielinux
authored andcommitted
Fix build for ZCU102. Fix ARM ASM defaults.
1 parent 7500ae9 commit 6e39fd1

File tree

7 files changed

+46
-25
lines changed

7 files changed

+46
-25
lines changed

arch.mk

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,16 @@ ifeq ($(ARCH),AARCH64)
8080
endif
8181

8282
SPI_TARGET=nxp
83+
else
84+
# By default disable ARM ASM for other targets
85+
NO_ARM_ASM=1
8386
endif
8487

8588
ifeq ($(SPMATH),1)
8689
MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
8790
MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_arm64.o
8891
endif
89-
ifeq ($(NO_ASM),0)
92+
ifeq ($(NO_ARM_ASM),0)
9093
ARCH_FLAGS=-mstrict-align
9194
CFLAGS+=$(ARCH_FLAGS) -DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_INLINE -DWC_HASH_DATA_ALIGNMENT=8
9295
WOLFCRYPT_OBJS += lib/wolfssl/wolfcrypt/src/port/arm/armv8-sha256.o \
@@ -228,11 +231,13 @@ ifeq ($(CORTEX_A5),1)
228231
MATH_OBJS+=./lib/wolfssl/wolfcrypt/src/sp_c32.o
229232
else
230233
MATH_OBJS+=./lib/wolfssl/wolfcrypt/src/sp_arm32.o
231-
OBJS+=./lib/wolfssl/wolfcrypt/src/port/arm/armv8-sha256.o
232-
OBJS+=./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm.o
233-
OBJS+=./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.o
234-
CFLAGS+=-DWOLFSSL_SP_ARM32_ASM -DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_NO_HW_CRYPTO \
235-
-DWOLFSSL_ARM_ARCH=7 -DWOLFSSL_ARMASM_INLINE -DWOLFSSL_ARMASM_NO_NEON
234+
ifneq ($(NO_ARM_ASM),1)
235+
OBJS+=./lib/wolfssl/wolfcrypt/src/port/arm/armv8-sha256.o
236+
OBJS+=./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm.o
237+
OBJS+=./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.o
238+
CFLAGS+=-DWOLFSSL_SP_ARM32_ASM -DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_NO_HW_CRYPTO \
239+
-DWOLFSSL_ARM_ARCH=7 -DWOLFSSL_ARMASM_INLINE -DWOLFSSL_ARMASM_NO_NEON
240+
endif
236241
endif
237242
else
238243
# All others use boot_arm.o
@@ -256,8 +261,7 @@ else
256261

257262

258263
CORTEXM_ARM_EXTRA_CFLAGS+=-DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_NO_HW_CRYPTO \
259-
-DWOLFSSL_ARMASM_NO_NEON
260-
CORTEXM_ARM_EXTRA_CFLAGS+=-DWOLFSSL_ARMASM_THUMB2
264+
-DWOLFSSL_ARMASM_NO_NEON -DWOLFSSL_ARMASM_THUMB2
261265
endif
262266
ifeq ($(CORTEX_M33),1)
263267
CFLAGS+=-mcpu=cortex-m33 -DCORTEX_M33

hal/nxp_ls1028a-ocram.ld

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ MEMORY
66
{
77
/*The flash address range on LS1028A RDB is 0x20000000 - 0x23FFFFFF.*/
88
FLASH (rx) : ORIGIN = @WOLFBOOT_ORIGIN@, LENGTH = @BOOTLOADER_PARTITION_SIZE@
9-
9+
1010
/* DDR4 - 2GB */
1111
DRAM (rwx) : ORIGIN = 0x80001000 , LENGTH = 0xBFFFFFFF
1212

@@ -22,7 +22,7 @@ SECTIONS
2222
PROVIDE (_CORE_NUMBER = 0);
2323
PROVIDE (_MEMORY_SIZE = LENGTH(OCRAM));
2424
PROVIDE (_FLASH_SIZE = LENGTH(FLASH));
25-
PROVIDE (STACK_SIZE = 20K);
25+
PROVIDE (_STACK_SIZE = 20K);
2626

2727
.boot :
2828
{
@@ -74,7 +74,7 @@ SECTIONS
7474
_rodata_end = .;
7575
} > OCRAM
7676

77-
PROVIDE(_stored_data = .);
77+
PROVIDE(_stored_data = .);
7878

7979
.data :
8080
{
@@ -84,7 +84,7 @@ SECTIONS
8484
KEEP(*(.ramcode))
8585
. = ALIGN(8);
8686
_end_data = .;
87-
} > OCRAM
87+
} > OCRAM
8888

8989
.bss :
9090
{
@@ -100,10 +100,10 @@ SECTIONS
100100
} > OCRAM
101101

102102
. = ALIGN(16);
103-
.stack :
103+
.stack :
104104
{
105105
_start_stack = .;
106-
. = . + STACK_SIZE;
106+
. = . + _STACK_SIZE;
107107
_end_stack = .;
108108
} > OCRAM
109109

hal/nxp_ls1028a.ld

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ MEMORY
66
{
77
/*The flash address range on LS1028A RDB is 0x20000000 - 0x23FFFFFF.*/
88
FLASH (rx) : ORIGIN = @WOLFBOOT_ORIGIN@, LENGTH = @BOOTLOADER_PARTITION_SIZE@
9-
9+
1010
/* DDR4 - 2GB */
1111
DRAM (rwx) : ORIGIN = 0x80001000 , LENGTH = 0xBFFFFFFF
1212

@@ -22,7 +22,7 @@ SECTIONS
2222
PROVIDE (_CORE_NUMBER = 0);
2323
PROVIDE (_MEMORY_SIZE = LENGTH(OCRAM));
2424
PROVIDE (_FLASH_SIZE = LENGTH(FLASH));
25-
PROVIDE (STACK_SIZE = 64K);
25+
PROVIDE (_STACK_SIZE = 64K);
2626

2727
.boot :
2828
{
@@ -74,7 +74,7 @@ SECTIONS
7474
_rodata_end = .;
7575
} > FLASH
7676

77-
PROVIDE(_stored_data = .);
77+
PROVIDE(_stored_data = .);
7878

7979
.data :
8080
{
@@ -100,10 +100,10 @@ SECTIONS
100100
} > OCRAM
101101

102102
. = ALIGN(16);
103-
.stack :
103+
.stack :
104104
{
105105
_start_stack = .;
106-
. = . + STACK_SIZE;
106+
. = . + _STACK_SIZE;
107107
_end_stack = .;
108108
} > OCRAM
109109

hal/nxp_p1021.ld

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ OUTPUT_ARCH( "powerpc" )
22

33
ENTRY( _reset )
44

5-
HEAP_SIZE = 4K; /* heap not used */
6-
STACK_SIZE = 128K;
5+
_HEAP_SIZE = 4K; /* heap not used */
6+
_STACK_SIZE = 128K;
77

88
MEMORY
99
{
@@ -85,6 +85,6 @@ PROVIDE(_start_heap = _end);
8585

8686
/* If relocated to DDR already then use stack end from DDR */
8787
/* If debugging and DDR is not ready, use L1 or L2 */
88-
PROVIDE(_end_stack = _end + HEAP_SIZE + STACK_SIZE );
88+
PROVIDE(_end_stack = _end + _HEAP_SIZE + _STACK_SIZE );
8989
/* PROVIDE(_end_stack = ORIGIN(L1RAM) + (LENGTH(L1RAM)) ); */
9090
/* PROVIDE(_end_stack = ORIGIN(L2RAM) + (LENGTH(L2RAM)) ); */

hal/zynq.ld

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ _EL2_STACK_SIZE = DEFINED(_EL2_STACK_SIZE) ? _EL2_STACK_SIZE : 1024;
1111
/* Define Memories in the system */
1212
MEMORY
1313
{
14+
/* psu_ddr_0_MEM_0 : ORIGIN = 0x0, LENGTH = 0x7FF00000 */
1415
psu_ddr_0_MEM_0 : ORIGIN = 0x40000000, LENGTH = 0x100000
16+
psu_ddr_1_MEM_0 : ORIGIN = 0x800000000, LENGTH = 0x80000000
17+
psu_ocm_ram_0_MEM_0 : ORIGIN = 0xFFFC0000, LENGTH = 0x40000
18+
psu_qspi_linear_0_MEM_0 : ORIGIN = 0xC0000000, LENGTH = 0x20000000
1519

1620
}
1721

@@ -21,6 +25,11 @@ ENTRY(_vector_table)
2125
/* Define the sections, and where they are mapped in memory */
2226
SECTIONS
2327
{
28+
29+
PROVIDE (_DDR_ADDRESS = 0x80001000);
30+
PROVIDE (_OCRAM_ADDRESS = ORIGIN(psu_ocm_ram_0_MEM_0));
31+
PROVIDE (_MEMORY_SIZE = LENGTH(psu_ocm_ram_0_MEM_0));
32+
2433
.text : {
2534
KEEP (*(.vectors))
2635
*(.boot)
@@ -302,5 +311,7 @@ _SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
302311
__el0_stack = .;
303312
} > psu_ddr_0_MEM_0
304313

314+
PROVIDE(_stack_base = .);
315+
305316
_end = .;
306317
}

src/boot_aarch64.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,16 @@
2828
/* Linker exported variables */
2929
extern unsigned int __bss_start__;
3030
extern unsigned int __bss_end__;
31+
#ifndef NO_XIP
3132
extern unsigned int _stored_data;
3233
extern unsigned int _start_data;
3334
extern unsigned int _end_data;
35+
#endif
3436

3537
extern void main(void);
3638
extern void gicv2_init_secure(void);
3739

38-
void boot_entry_C(void)
40+
void boot_entry_C(void)
3941
{
4042
register unsigned int *dst, *src;
4143

@@ -46,6 +48,7 @@ void boot_entry_C(void)
4648
dst++;
4749
}
4850

51+
#ifndef NO_XIP
4952
/* Copy data section from flash to RAM if necessary */
5053
src = (unsigned int*)&_stored_data;
5154
dst = (unsigned int*)&_start_data;
@@ -56,6 +59,9 @@ void boot_entry_C(void)
5659
src++;
5760
}
5861
}
62+
#else
63+
(void)src;
64+
#endif
5965

6066
/* Run wolfboot! */
6167
main();

src/boot_aarch64_start.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* Aarch64 bootup
3-
* Copyright (C) 2021 wolfSSL Inc.
3+
* Copyright (C) 2024 wolfSSL Inc.
44
*
55
* This file is part of wolfBoot.
66
*
@@ -269,7 +269,7 @@ init_stack:
269269
sub x0, x0, #16
270270
and x0, x0, #-16
271271
mov sp, x0
272-
ldr x1, =STACK_SIZE
272+
ldr x1, =_STACK_SIZE
273273
msr sp_el2, x0
274274
msr sp_el1, x0
275275
msr sp_el0, x0

0 commit comments

Comments
 (0)