@@ -47,6 +47,7 @@ XARCH_riscv = riscv64
47
47
XARCH = $(or $(XARCH_$(ARCH)),$(ARCH))
48
48
49
49
# map from user input variants to their kernel supported architectures
50
+ ARCH_x32 = x86
50
51
ARCH_armthumb = arm
51
52
ARCH_ppc = powerpc
52
53
ARCH_ppc64 = powerpc
@@ -68,6 +69,7 @@ ARCH := $(or $(ARCH_$(XARCH)),$(XARCH))
68
69
# kernel image names by architecture
69
70
IMAGE_i386 = arch/x86/boot/bzImage
70
71
IMAGE_x86_64 = arch/x86/boot/bzImage
72
+ IMAGE_x32 = arch/x86/boot/bzImage
71
73
IMAGE_x86 = arch/x86/boot/bzImage
72
74
IMAGE_arm64 = arch/arm64/boot/Image
73
75
IMAGE_arm = arch/arm/boot/zImage
@@ -97,6 +99,7 @@ IMAGE_NAME = $(notdir $(IMAGE))
97
99
# default kernel configurations that appear to be usable
98
100
DEFCONFIG_i386 = defconfig
99
101
DEFCONFIG_x86_64 = defconfig
102
+ DEFCONFIG_x32 = defconfig
100
103
DEFCONFIG_x86 = defconfig
101
104
DEFCONFIG_arm64 = defconfig
102
105
DEFCONFIG_arm = multi_v7_defconfig
@@ -122,6 +125,7 @@ DEFCONFIG_m68k = virt_defconfig
122
125
DEFCONFIG_sh4 = rts7751r2dplus_defconfig
123
126
DEFCONFIG = $(DEFCONFIG_$(XARCH))
124
127
128
+ EXTRACONFIG_x32 = -e CONFIG_X86_X32_ABI
125
129
EXTRACONFIG_arm = -e CONFIG_NAMESPACES
126
130
EXTRACONFIG_armthumb = -e CONFIG_NAMESPACES
127
131
EXTRACONFIG_m68k = -e CONFIG_BLK_DEV_INITRD
@@ -134,6 +138,7 @@ TEST =
134
138
# QEMU_ARCH: arch names used by qemu
135
139
QEMU_ARCH_i386 = i386
136
140
QEMU_ARCH_x86_64 = x86_64
141
+ QEMU_ARCH_x32 = x86_64
137
142
QEMU_ARCH_x86 = x86_64
138
143
QEMU_ARCH_arm64 = aarch64
139
144
QEMU_ARCH_arm = arm
@@ -174,6 +179,7 @@ endif
174
179
# QEMU_ARGS : some arch-specific args to pass to qemu
175
180
QEMU_ARGS_i386 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
176
181
QEMU_ARGS_x86_64 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
182
+ QEMU_ARGS_x32 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
177
183
QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)"
178
184
QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
179
185
QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)"
210
216
endif
211
217
212
218
CFLAGS_i386 = $(call cc-option,-m32)
219
+ CFLAGS_x32 = -mx32
213
220
CFLAGS_arm = -marm
214
221
CFLAGS_armthumb = -mthumb -march=armv6t2
215
222
CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple)
@@ -236,6 +243,11 @@ LDFLAGS :=
236
243
237
244
LIBGCC := -lgcc
238
245
246
+ ifeq ($(ARCH),x86)
247
+ # Not needed on x86, probably not present for x32
248
+ LIBGCC :=
249
+ endif
250
+
239
251
ifneq ($(LLVM),)
240
252
# Not needed for clang
241
253
LIBGCC :=
0 commit comments