put 16-bit code in a single file

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/Makefile b/Makefile
index 4149ef7..39a63bd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,4 @@
-obj16-y = e820.o int10.o int15.o
-obj-y = $(obj16-y) entry.o main.o string.o printf.o cstart.o fw_cfg.o
+obj-y = code16.o entry.o main.o string.o printf.o cstart.o fw_cfg.o
 obj-y += linuxboot.o
 
 all-y = bios.bin
@@ -14,7 +13,6 @@
 BIOS_CFLAGS += -fno-stack-protector -fno-delete-null-pointer-checks
 BIOS_CFLAGS += -ffreestanding
 BIOS_CFLAGS += -Iinclude
-$(obj16-y): BIOS_CFLAGS += -include code16gcc.h
 
 dummy := $(shell mkdir -p .deps)
 autodepend-flags = -MMD -MF .deps/cc-$(patsubst %/,%,$(dir $*))-$(notdir $*).d
diff --git a/code16.c b/code16.c
new file mode 100644
index 0000000..d8861de
--- /dev/null
+++ b/code16.c
@@ -0,0 +1,116 @@
+asm(".code16gcc");
+#include "bios.h"
+#include "segment.h"
+#include "ioport.h"
+#include "processor-flags.h"
+#include "e820.h"
+
+static inline void set_fs(uint16_t seg)
+{
+	asm volatile("movw %0,%%fs" : : "rm" (seg));
+}
+
+static inline uint8_t rdfs8(unsigned long addr)
+{
+	uint8_t v;
+
+	asm volatile("addr32 movb %%fs:%1,%0" : "=q" (v) : "m" (*(uint8_t *)addr));
+
+	return v;
+}
+
+static inline uint32_t rdfs32(unsigned long addr)
+{
+	uint32_t v;
+
+	asm volatile("addr32 movl %%fs:%1,%0" : "=q" (v) : "m" (*(uint32_t *)addr));
+
+	return v;
+}
+
+struct e820map e820;
+
+bioscall void e820_query_map(struct biosregs *regs)
+{
+	uint32_t map_size;
+	uint16_t fs_seg;
+	uint32_t ndx;
+
+	fs_seg		= flat_to_seg16((uintptr_t) &e820);
+	set_fs(fs_seg);
+
+	ndx		= regs->ebx;
+
+	map_size	= rdfs32(flat_to_off16((uintptr_t) &e820.nr_map));
+
+	if (ndx < map_size) {
+		uint32_t start;
+		unsigned int i;
+		uint8_t *p;
+
+		start	= flat_to_off16((uintptr_t)&e820.map[ndx]);
+
+		p	= (void *) regs->edi;
+
+		for (i = 0; i < sizeof(struct e820entry); i++)
+			*p++	= rdfs8(start + i);
+	}
+
+	regs->eax	= SMAP;
+	regs->ecx	= sizeof(struct e820entry);
+	regs->ebx	= ++ndx;
+
+	/* Clear CF to indicate success.  */
+	regs->eflags	&= ~X86_EFLAGS_CF;
+
+	if (ndx >= map_size)
+		regs->ebx	= 0;	/* end of map */
+}
+
+bioscall void int15_handler(struct biosregs *regs)
+{
+	switch (regs->eax) {
+	case 0xe820:
+		e820_query_map(regs);
+		break;
+	default:
+		/* Set CF to indicate failure.  */
+		regs->eflags	|= X86_EFLAGS_CF;
+		break;
+	}
+}
+/*
+ * It's probably much more useful to make this print to the serial
+ * line rather than print to a non-displayed VGA memory
+ */
+static inline void int10_putchar(struct biosregs *args)
+{
+	uint8_t al = args->eax & 0xFF;
+
+	outb(0x3f8, al);
+}
+
+#define VBE_STATUS_OK		0x004F
+#define VBE_STATUS_FAIL		0x014F
+
+static void int10_vesa(struct biosregs *args)
+{
+	args->eax = VBE_STATUS_FAIL;
+}
+
+bioscall void int10_handler(struct biosregs *args)
+{
+	uint8_t ah;
+
+	ah = (args->eax & 0xff00) >> 8;
+
+	switch (ah) {
+	case 0x0e:
+		int10_putchar(args);
+		break;
+	case 0x4f:
+		int10_vesa(args);
+		break;
+	}
+
+}
diff --git a/code16gcc.h b/code16gcc.h
deleted file mode 100644
index a4feb62..0000000
--- a/code16gcc.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * code16gcc.h
- *
- * This file is -include'd when compiling 16-bit C code.
- * Note: this asm() needs to be emitted before gcc emits any code.
- * Depending on gcc version, this requires -fno-unit-at-a-time or
- * -fno-toplevel-reorder.
- *
- * Hopefully gcc will eventually have a real -m16 option so we can
- * drop this hack long term.
- */
-
-
-asm(".code16gcc");
diff --git a/e820.c b/e820.c
deleted file mode 100644
index 6271353..0000000
--- a/e820.c
+++ /dev/null
@@ -1,67 +0,0 @@
-#include "bios.h"
-#include "segment.h"
-
-#include "processor-flags.h"
-#include "e820.h"
-
-static inline void set_fs(uint16_t seg)
-{
-	asm volatile("movw %0,%%fs" : : "rm" (seg));
-}
-
-static inline uint8_t rdfs8(unsigned long addr)
-{
-	uint8_t v;
-
-	asm volatile("addr32 movb %%fs:%1,%0" : "=q" (v) : "m" (*(uint8_t *)addr));
-
-	return v;
-}
-
-static inline uint32_t rdfs32(unsigned long addr)
-{
-	uint32_t v;
-
-	asm volatile("addr32 movl %%fs:%1,%0" : "=q" (v) : "m" (*(uint32_t *)addr));
-
-	return v;
-}
-
-struct e820map e820;
-
-bioscall void e820_query_map(struct biosregs *regs)
-{
-	uint32_t map_size;
-	uint16_t fs_seg;
-	uint32_t ndx;
-
-	fs_seg		= flat_to_seg16((uintptr_t) &e820);
-	set_fs(fs_seg);
-
-	ndx		= regs->ebx;
-
-	map_size	= rdfs32(flat_to_off16((uintptr_t) &e820.nr_map));
-
-	if (ndx < map_size) {
-		uint32_t start;
-		unsigned int i;
-		uint8_t *p;
-
-		start	= flat_to_off16((uintptr_t)&e820.map[ndx]);
-
-		p	= (void *) regs->edi;
-
-		for (i = 0; i < sizeof(struct e820entry); i++)
-			*p++	= rdfs8(start + i);
-	}
-
-	regs->eax	= SMAP;
-	regs->ecx	= sizeof(struct e820entry);
-	regs->ebx	= ++ndx;
-
-	/* Clear CF to indicate success.  */
-	regs->eflags	&= ~X86_EFLAGS_CF;
-
-	if (ndx >= map_size)
-		regs->ebx	= 0;	/* end of map */
-}
diff --git a/int10.c b/int10.c
deleted file mode 100644
index 0e506cc..0000000
--- a/int10.c
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "bios.h"
-#include "segment.h"
-#include "ioport.h"
-
-/*
- * It's probably much more useful to make this print to the serial
- * line rather than print to a non-displayed VGA memory
- */
-static inline void int10_putchar(struct biosregs *args)
-{
-	uint8_t al = args->eax & 0xFF;
-
-	outb(0x3f8, al);
-}
-
-#define VBE_STATUS_OK		0x004F
-#define VBE_STATUS_FAIL		0x014F
-
-static void int10_vesa(struct biosregs *args)
-{
-	args->eax = VBE_STATUS_FAIL;
-}
-
-bioscall void int10_handler(struct biosregs *args)
-{
-	uint8_t ah;
-
-	ah = (args->eax & 0xff00) >> 8;
-
-	switch (ah) {
-	case 0x0e:
-		int10_putchar(args);
-		break;
-	case 0x4f:
-		int10_vesa(args);
-		break;
-	}
-
-}
diff --git a/int15.c b/int15.c
deleted file mode 100644
index d8ff820..0000000
--- a/int15.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "bios.h"
-
-#include "processor-flags.h"
-
-bioscall void int15_handler(struct biosregs *regs)
-{
-	switch (regs->eax) {
-	case 0xe820:
-		e820_query_map(regs);
-		break;
-	default:
-		/* Set CF to indicate failure.  */
-		regs->eflags	|= X86_EFLAGS_CF;
-		break;
-	}
-}