[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <86802c440707092124k61627732u6817b5d48dd97b88@mail.gmail.com>
Date: Mon, 9 Jul 2007 21:24:03 -0700
From: "Yinghai Lu" <yhlu.kernel@...il.com>
To: "H. Peter Anvin" <hpa@...or.com>
Cc: linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org,
andi@...stfloor.org, akpm@...ux-foundation.org
Subject: Re: x86 setup code rewrite in C
On 7/9/07, H. Peter Anvin <hpa@...or.com> wrote:
> This patch set replaces the x86 setup code, which is currently all in
> assembly, with a version written in C, using the ".code16gcc" feature
> of binutils (which has been present since at least 2001.)
>
> The new code is vastly easier to read, and, I hope, debug. It should
> be noted that I found a fair number of minor bugs while going through
> this code, and have attempted to correct them.
>
> In the process of doing so, it introduces several cleanups, in
> particular:
>
> - Obsoletes the hd_info field in the boot_params structure; they are
> only ever used for ST-506 (pre-IDE) drives and are pretty much
> guaranteed to be wrong on current BIOSes;
> - Unifies the CPU feature bits between i386 and x86-64. In the
> future, it should be possible to use arch/i386/boot/cpucheck.c to do
> the post-invocation CPU check currently done in
> arch/x86_64/kernel/trampoline.S, although this patch set doesn't
> introduce that change.
> - boot_params is now a proper structure.
>
> This code has been tested in -mm since early in the 2.6.22 cycle.
>
> arch/i386/boot/bootsect.S | 98 -
> arch/i386/boot/edd.S | 231 --
> arch/i386/boot/setup.S | 1075 -------------
> arch/i386/boot/video.S | 2043 --------------------------
> arch/i386/kernel/verify_cpu.S | 94 -
> arch/x86_64/boot/bootsect.S | 98 -
> arch/x86_64/boot/install.sh | 2
> arch/x86_64/boot/mtools.conf.in | 17
> arch/x86_64/boot/setup.S | 826 ----------
> arch/x86_64/boot/tools/build.c | 185 --
> b/Documentation/i386/zero-page.txt | 1
> b/MAINTAINERS | 4
> b/arch/i386/Kconfig.cpu | 6
> b/arch/i386/boot/Makefile | 46
> b/arch/i386/boot/a20.c | 161 ++
> b/arch/i386/boot/apm.c | 97 +
> b/arch/i386/boot/bitops.h | 45
> b/arch/i386/boot/boot.h | 290 +++
> b/arch/i386/boot/cmdline.c | 97 +
> b/arch/i386/boot/code16gcc.h | 9
> b/arch/i386/boot/compressed/Makefile | 7
> b/arch/i386/boot/compressed/head.S | 6
> b/arch/i386/boot/copy.S | 101 +
> b/arch/i386/boot/cpu.c | 69
> b/arch/i386/boot/cpucheck.c | 267 +++
> b/arch/i386/boot/edd.c | 196 ++
> b/arch/i386/boot/header.S | 283 +++
> b/arch/i386/boot/main.c | 161 ++
> b/arch/i386/boot/mca.c | 43
> b/arch/i386/boot/memory.c | 99 +
> b/arch/i386/boot/pm.c | 170 ++
> b/arch/i386/boot/pmjump.S | 54
> b/arch/i386/boot/printf.c | 331 ++++
> b/arch/i386/boot/setup.ld | 54
> b/arch/i386/boot/string.c | 34
> b/arch/i386/boot/tools/build.c | 160 --
> b/arch/i386/boot/tty.c | 112 +
> b/arch/i386/boot/version.c | 23
> b/arch/i386/boot/vesa.h | 79 +
> b/arch/i386/boot/video-bios.c | 125 +
> b/arch/i386/boot/video-vesa.c | 284 +++
> b/arch/i386/boot/video-vga.c | 260 +++
> b/arch/i386/boot/video.c | 456 +++++
> b/arch/i386/boot/video.h | 145 +
> b/arch/i386/boot/voyager.c | 46
> b/arch/i386/kernel/cpu/Makefile | 2
> b/arch/i386/kernel/cpu/addon_cpuid_features.c | 50
> b/arch/i386/kernel/cpu/common.c | 2
> b/arch/i386/kernel/cpu/proc.c | 21
> b/arch/i386/kernel/e820.c | 2
> b/arch/i386/kernel/setup.c | 12
> b/arch/x86_64/Kconfig | 4
> b/arch/x86_64/boot/Makefile | 136 -
> b/arch/x86_64/boot/compressed/Makefile | 9
> b/arch/x86_64/boot/compressed/head.S | 6
> b/arch/x86_64/kernel/Makefile | 2
> b/arch/x86_64/kernel/setup.c | 21
> b/arch/x86_64/kernel/verify_cpu.S | 22
> b/drivers/ide/legacy/hd.c | 73
> b/include/asm-i386/boot.h | 6
> b/include/asm-i386/bootparam.h | 85 +
> b/include/asm-i386/cpufeature.h | 26
> b/include/asm-i386/e820.h | 14
> b/include/asm-i386/processor.h | 1
> b/include/asm-i386/required-features.h | 39
> b/include/asm-i386/setup.h | 10
> b/include/asm-x86_64/alternative.h | 68
> b/include/asm-x86_64/boot.h | 16
> b/include/asm-x86_64/bootparam.h | 1
> b/include/asm-x86_64/cpufeature.h | 115 -
> b/include/asm-x86_64/e820.h | 6
> b/include/asm-x86_64/processor.h | 3
> b/include/asm-x86_64/required-features.h | 46
> b/include/asm-x86_64/segment.h | 8
> b/include/linux/edd.h | 4
> b/include/linux/screen_info.h | 9
> 76 files changed, 4601 insertions(+), 5208 deletions(-)
is possible to put 16bit c in seperate directory. or rename them with _16.c?
YH
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists