| ifeq ($(KBUILD_VERBOSE),1) |
| GENIDT_EXTRA_ARGS := -d |
| else |
| GENIDT_EXTRA_ARGS := |
| endif |
| |
| ifeq ($(PREBUILT_HOST_TOOLS),) |
| GENIDT := scripts/gen_idt/gen_idt |
| else |
| GENIDT := $(PREBUILT_HOST_TOOLS)/gen_idt |
| endif |
| |
| OUTPUT_FORMAT ?= elf32-i386 |
| OUTPUT_ARCH ?= i386 |
| |
| quiet_cmd_gen_idt = SIDT $@ |
| cmd_gen_idt = \ |
| ( \ |
| $(OBJCOPY) -I $(OUTPUT_FORMAT) -O binary -j intList $< isrList.bin && \ |
| $(GENIDT) -i isrList.bin -n $(CONFIG_IDT_NUM_VECTORS) -o staticIdt.bin \ |
| -m irq_int_vector_map.bin \ |
| -l $(CONFIG_MAX_IRQ_LINES) $(GENIDT_EXTRA_ARGS) && \ |
| $(OBJCOPY) -I binary -B $(OUTPUT_ARCH) -O $(OUTPUT_FORMAT) \ |
| --rename-section .data=staticIdt staticIdt.bin staticIdt.o && \ |
| $(OBJCOPY) -I binary -B $(OUTPUT_ARCH) -O $(OUTPUT_FORMAT) \ |
| --rename-section .data=irq_int_vector_map irq_int_vector_map.bin \ |
| irq_int_vector_map.o && \ |
| rm staticIdt.bin irq_int_vector_map.bin isrList.bin \ |
| ) |
| |
| staticIdt.o: $(PREBUILT_KERNEL) |
| $(call cmd,gen_idt) |
| |
| quiet_cmd_lnk_elf = LINK $@ |
| cmd_lnk_elf = \ |
| ( \ |
| $(CC) -T linker.cmd @$(KERNEL_NAME).lnk staticIdt.o \ |
| irq_int_vector_map.o -o $@; \ |
| ${OBJCOPY} --change-section-address intList=${CONFIG_PHYS_LOAD_ADDR} \ |
| $@ elf.tmp; \ |
| $(OBJCOPY) -R intList elf.tmp $@; \ |
| rm elf.tmp \ |
| ) |
| |
| $(KERNEL_ELF_NAME): staticIdt.o linker.cmd |
| $(call cmd,lnk_elf) |
| @$(srctree)/scripts/check_link_map.py $(KERNEL_NAME).map |
| @$(WARN_ABOUT_ASSERT) |
| @$(WARN_ABOUT_DEPRECATION) |
| |