diff --git a/arch.mk b/arch.mk index 6e1b1c38..badf2b62 100644 --- a/arch.mk +++ b/arch.mk @@ -29,9 +29,28 @@ UART_TARGET=$(TARGET) WOLFCRYPT_OBJS+=./lib/wolfssl/wolfcrypt/src/sha256.o ifeq ($(ARCH),x86_64) - OBJS+=src/boot_x86_64.o - ifeq ($(DEBUG),1) - CFLAGS+=-DWOLFBOOT_DEBUG_EFI=1 + CFLAGS+=-DARCH_x86_64 + ifeq ($(FORCE_32BIT),1) + NO_ASM=1 + CFLAGS+=-DFORCE_32BIT + endif + ifeq ($(SPMATH),1) + ifeq ($(NO_ASM),1) + ifeq ($(FORCE_32BIT),1) + MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o + CFLAGS+=-DWOLFSSL_SP_DIV_WORD_HALF + else + MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c64.o + endif + else + MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_x86_64.o + endif + endif + ifeq ($(TARGET),x86_64_efi) + OBJS+=src/boot_x86_64.o + ifeq ($(DEBUG),1) + CFLAGS+=-DWOLFBOOT_DEBUG_EFI=1 + endif endif endif diff --git a/include/user_settings.h b/include/user_settings.h index d3984468..206c9b22 100644 --- a/include/user_settings.h +++ b/include/user_settings.h @@ -202,6 +202,11 @@ extern int tolower(int c); # define HAVE___UINT128_T # define WOLFSSL_SP_ARM64_ASM # define SP_WORD_SIZE 64 +# elif defined(ARCH_x86_64) && !defined(FORCE_32BIT) +# define SP_WORD_SIZE 64 +# ifndef NO_ASM +# define WOLFSSL_SP_X86_64_ASM +# endif # else # define SP_WORD_SIZE 32 # endif diff --git a/tools/config.mk b/tools/config.mk index a93fdfb5..85a708ac 100644 --- a/tools/config.mk +++ b/tools/config.mk @@ -60,6 +60,7 @@ ifeq ($(ARCH),) WOLFBOOT_HUGE_STACK?=0 ARMORED?=0 ELF?=0 + FORCE_32BIT=0 endif CONFIG_VARS:= ARCH TARGET SIGN HASH MCUXPRESSO MCUXPRESSO_CPU MCUXPRESSO_DRIVERS \ @@ -72,7 +73,7 @@ CONFIG_VARS:= ARCH TARGET SIGN HASH MCUXPRESSO MCUXPRESSO_CPU MCUXPRESSO_DRIVERS WOLFBOOT_PARTITION_SWAP_ADDRESS WOLFBOOT_LOAD_ADDRESS \ WOLFBOOT_LOAD_DTS_ADDRESS WOLFBOOT_DTS_BOOT_ADDRESS WOLFBOOT_DTS_UPDATE_ADDRESS \ WOLFBOOT_SMALL_STACK DELTA_UPDATES DELTA_BLOCK_SIZE \ - WOLFBOOT_HUGE_STACK \ + WOLFBOOT_HUGE_STACK FORCE_32BIT\ ENCRYPT_WITH_CHAHA ENCRYPT_WITH_AES128 ENCRYPT_WITH_AES256 ARMORED \ ELF