It seems to me GCC should grow an option to insert .code16gcc
by itself (-m16 perhaps?)
-m16 is the right thing,
and it also provides a proper hook for
eventually having a real 16-bit backend (there are at least two projects
for doing that.)
For now, I have:
CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \
$(cflags-$(ARCH)) \
-Wall -Wstrict-prototypes \
-march=i386 -mregparm=3 \
-include $(srctree)/$(src)/code16gcc.h \
-fno-strict-aliasing -fomit-frame-pointer \
$(call cc-option, -ffreestanding) \
$(call cc-option, -fno-unit-at-a-time) \
$(call cc-option, -fno-toplevel-reorder) \
$(call cc-option, -fno-stack-protector) \
$(call cc-option, -mpreferred-stack-boundary=2)
... since that will require less violence to eventually hack in the
proper -m16 option if/when it becomes available.