build: Avoid absolute paths during "whole-program" compiling.

The build currently does a textual include of all files in order to
use the -fwhole-compile optimization.  Update it to use relative file
paths instead of absolute file paths.  This makes the section names in
the resulting binary more readable.  It also makes the build easier on
some Windows hosts.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
build: use -m16 where available instead of asm(".code16gcc")

GCC 4.9 and clang 3.5 support the -m16 option on the command line which
supersedes the hackish ".code16gcc" assembler directive. Use it where
possible.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
romlayout: Use .code16 not .code16gcc

There's no need to use .code16gcc where we are writing assembler code
explicitly. It only affects word-size-ambiguous instructions, and we
should just be explicit. And we are.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
vgabios: Use .code16 not .code16gcc

There's no need to use .code16gcc where we are writing assembler code
explicitly. It only affects word-size-ambiguous instructions, and we
should just be explicit. And we are.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Run all hard drive ops in 32 bit.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Run keyboard and mouse commands always in 32bit mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Run all hardware interrupt handlers in 32bit mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Implement call32 mechanism using SMIs.

This is a work in progress.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>