:: commit 0c05d92c7f34c68747e76aefb8329f2306179573

mintsuki <mintsuki@protonmail.com> — 2022-06-28 06:47

parents: b404e2ba90

build: Add generic x86 asm extension grouping

diff --git a/common/GNUmakefile b/common/GNUmakefile
index 2c00e880..21f608e8 100644
--- a/common/GNUmakefile
+++ b/common/GNUmakefile
@@ -144,22 +144,25 @@ endif
 
 override C_FILES := $(shell find ./ -type f -name '*.c')
 ifeq ($(TARGET), bios)
+override ASMX86_FILES := $(shell find ./ -type f -name '*.asm_x86')
 override ASM32_FILES := $(shell find ./ -type f -name '*.asm_ia32')
 override ASMB_FILES := $(shell find ./ -type f -name '*.asm_bios_ia32')
 
-override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(ASM32_FILES:.asm_ia32=.o) $(ASMB_FILES:.asm_bios_ia32=.o))
+override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(ASM32_FILES:.asm_ia32=.o) $(ASMB_FILES:.asm_bios_ia32=.o) $(ASMX86_FILES:.asm_x86=.o))
 endif
 ifeq ($(TARGET), uefi-x86-64)
+override ASMX86_FILES := $(shell find ./ -type f -name '*.asm_x86')
 override ASM64_FILES := $(shell find ./ -type f -name '*.asm_x86_64')
 override ASM64U_FILES := $(shell find ./ -type f -name '*.asm_uefi_x86_64')
 
-override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(ASM64_FILES:.asm_x86_64=.o) $(ASM64U_FILES:.asm_uefi_x86_64=.o))
+override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(ASM64_FILES:.asm_x86_64=.o) $(ASM64U_FILES:.asm_uefi_x86_64=.o) $(ASMX86_FILES:.asm_x86=.o))
 endif
 ifeq ($(TARGET), uefi-ia32)
+override ASMX86_FILES := $(shell find ./ -type f -name '*.asm_x86')
 override ASM32_FILES := $(shell find ./ -type f -name '*.asm_ia32')
 override ASM32U_FILES := $(shell find ./ -type f -name '*.asm_uefi_ia32')
 
-override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(ASM32_FILES:.asm_ia32=.o) $(ASM32U_FILES:.asm_uefi_ia32=.o))
+override OBJ := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.o) $(ASM32_FILES:.asm_ia32=.o) $(ASM32U_FILES:.asm_uefi_ia32=.o) $(ASMX86_FILES:.asm_x86=.o))
 endif
 override HEADER_DEPS := $(addprefix $(call MKESCAPE,$(BUILDDIR))/, $(C_FILES:.c=.d))
 
@@ -409,6 +412,10 @@ $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_ia32
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_bios_ia32
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
 	nasm '$(call SHESCAPE,$<)' -F dwarf -g $(WERROR) -f elf32 -o '$(call SHESCAPE,$@)'
+
+$(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_x86
+	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
+	nasm '$(call SHESCAPE,$<)' -F dwarf -g $(WERROR) -f elf32 -o '$(call SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET), uefi-x86-64)
@@ -419,6 +426,10 @@ $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_x86_64
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_uefi_x86_64
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
 	nasm '$(call SHESCAPE,$<)' -F dwarf -g $(WERROR) -f elf64 -o '$(call SHESCAPE,$@)'
+
+$(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_x86
+	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
+	nasm '$(call SHESCAPE,$<)' -F dwarf -g $(WERROR) -f elf64 -o '$(call SHESCAPE,$@)'
 endif
 
 ifeq ($(TARGET), uefi-ia32)
@@ -429,4 +440,8 @@ $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_ia32
 $(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_uefi_ia32
 	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
 	nasm '$(call SHESCAPE,$<)' -F dwarf -g $(WERROR) -f elf32 -o '$(call SHESCAPE,$@)'
+
+$(call MKESCAPE,$(BUILDDIR))/%.o: %.asm_x86
+	mkdir -p "$$(dirname '$(call SHESCAPE,$@)')"
+	nasm '$(call SHESCAPE,$<)' -F dwarf -g $(WERROR) -f elf32 -o '$(call SHESCAPE,$@)'
 endif
diff --git a/common/protos/multiboot_reloc.asm_ia32 b/common/protos/multiboot_reloc.asm_x86
similarity index 99%
rename from common/protos/multiboot_reloc.asm_ia32
rename to common/protos/multiboot_reloc.asm_x86
index 8ae1d423..821b9d83 100644
--- a/common/protos/multiboot_reloc.asm_ia32
+++ b/common/protos/multiboot_reloc.asm_x86
@@ -1,5 +1,7 @@
 section .data
 
+bits 32
+
 global multiboot_reloc_stub
 multiboot_reloc_stub:
     jmp .code
tab: 248 wrap: offon