summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/arch/x86/boot
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/arch/x86/boot')
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/Makefile194
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/a20.c165
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/apm.c75
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/bioscall.S82
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/bitops.h43
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/boot.h369
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/cmdline.c158
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/code16gcc.h15
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/Makefile76
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/cmdline.c21
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/early_serial_console.c5
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/eboot.c1022
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/eboot.h61
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_32.S86
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_64.S1
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/head_32.S225
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/head_64.S371
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/misc.c379
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/misc.h39
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/mkpiggy.c95
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/string.c11
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/compressed/vmlinux.lds.S74
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/copy.S87
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/cpu.c85
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/cpucheck.c252
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/ctype.h21
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/early_serial_console.c151
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/edd.c181
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/header.S478
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/install.sh59
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/main.c178
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/mca.c38
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/memory.c136
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/mkcpustr.c49
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/mtools.conf.in17
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/pm.c126
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/pmjump.S77
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/printf.c309
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/regs.c29
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/setup.ld64
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/string.c148
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/tools/build.c266
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/tty.c139
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/version.c21
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/vesa.h72
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/video-bios.c128
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/video-mode.c173
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/video-vesa.c280
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/video-vga.c288
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/video.c341
-rw-r--r--ANDROID_3.4.5/arch/x86/boot/video.h121
51 files changed, 0 insertions, 7881 deletions
diff --git a/ANDROID_3.4.5/arch/x86/boot/Makefile b/ANDROID_3.4.5/arch/x86/boot/Makefile
deleted file mode 100644
index 5a747dd8..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/Makefile
+++ /dev/null
@@ -1,194 +0,0 @@
-#
-# arch/x86/boot/Makefile
-#
-# This file is subject to the terms and conditions of the GNU General Public
-# License. See the file "COPYING" in the main directory of this archive
-# for more details.
-#
-# Copyright (C) 1994 by Linus Torvalds
-# Changed by many, many contributors over the years.
-#
-
-# If you want to preset the SVGA mode, uncomment the next line and
-# set SVGA_MODE to whatever number you want.
-# Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
-# The number is the same as you would ordinarily press at bootup.
-
-SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
-
-targets := vmlinux.bin setup.bin setup.elf bzImage
-targets += fdimage fdimage144 fdimage288 image.iso mtools.conf
-subdir- := compressed
-
-setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpucheck.o
-setup-y += early_serial_console.o edd.o header.o main.o mca.o memory.o
-setup-y += pm.o pmjump.o printf.o regs.o string.o tty.o video.o
-setup-y += video-mode.o version.o
-setup-$(CONFIG_X86_APM_BOOT) += apm.o
-
-# The link order of the video-*.o modules can matter. In particular,
-# video-vga.o *must* be listed first, followed by video-vesa.o.
-# Hardware-specific drivers should follow in the order they should be
-# probed, and video-bios.o should typically be last.
-setup-y += video-vga.o
-setup-y += video-vesa.o
-setup-y += video-bios.o
-
-targets += $(setup-y)
-hostprogs-y := mkcpustr tools/build
-
-HOST_EXTRACFLAGS += -I$(srctree)/tools/include $(LINUXINCLUDE) \
- -D__EXPORTED_HEADERS__
-
-$(obj)/cpu.o: $(obj)/cpustr.h
-
-quiet_cmd_cpustr = CPUSTR $@
- cmd_cpustr = $(obj)/mkcpustr > $@
-targets += cpustr.h
-$(obj)/cpustr.h: $(obj)/mkcpustr FORCE
- $(call if_changed,cpustr)
-
-# ---------------------------------------------------------------------------
-
-# How to compile the 16-bit code. Note we always compile for -march=i386,
-# that way we can complain to the user if the CPU is insufficient.
-KBUILD_CFLAGS := $(LINUXINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \
- -DDISABLE_BRANCH_PROFILING \
- -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-toplevel-reorder,\
- $(call cc-option, -fno-unit-at-a-time)) \
- $(call cc-option, -fno-stack-protector) \
- $(call cc-option, -mpreferred-stack-boundary=2)
-KBUILD_CFLAGS += $(call cc-option, -m32)
-KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
-GCOV_PROFILE := n
-
-$(obj)/bzImage: asflags-y := $(SVGA_MODE)
-
-quiet_cmd_image = BUILD $@
-cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin > $@
-
-$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
- $(call if_changed,image)
- @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
-
-OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S
-$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
- $(call if_changed,objcopy)
-
-SETUP_OBJS = $(addprefix $(obj)/,$(setup-y))
-
-sed-voffset := -e 's/^\([0-9a-fA-F]*\) . \(_text\|_end\)$$/\#define VO_\2 0x\1/p'
-
-quiet_cmd_voffset = VOFFSET $@
- cmd_voffset = $(NM) $< | sed -n $(sed-voffset) > $@
-
-targets += voffset.h
-$(obj)/voffset.h: vmlinux FORCE
- $(call if_changed,voffset)
-
-sed-zoffset := -e 's/^\([0-9a-fA-F]*\) . \(startup_32\|input_data\|_end\|z_.*\)$$/\#define ZO_\2 0x\1/p'
-
-quiet_cmd_zoffset = ZOFFSET $@
- cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@
-
-targets += zoffset.h
-$(obj)/zoffset.h: $(obj)/compressed/vmlinux FORCE
- $(call if_changed,zoffset)
-
-
-AFLAGS_header.o += -I$(obj)
-$(obj)/header.o: $(obj)/voffset.h $(obj)/zoffset.h
-
-LDFLAGS_setup.elf := -T
-$(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE
- $(call if_changed,ld)
-
-OBJCOPYFLAGS_setup.bin := -O binary
-$(obj)/setup.bin: $(obj)/setup.elf FORCE
- $(call if_changed,objcopy)
-
-$(obj)/compressed/vmlinux: FORCE
- $(Q)$(MAKE) $(build)=$(obj)/compressed $@
-
-# Set this if you want to pass append arguments to the
-# bzdisk/fdimage/isoimage kernel
-FDARGS =
-# Set this if you want an initrd included with the
-# bzdisk/fdimage/isoimage kernel
-FDINITRD =
-
-image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,)
-
-$(obj)/mtools.conf: $(src)/mtools.conf.in
- sed -e 's|@OBJ@|$(obj)|g' < $< > $@
-
-# This requires write access to /dev/fd0
-bzdisk: $(obj)/bzImage $(obj)/mtools.conf
- MTOOLSRC=$(obj)/mtools.conf mformat a: ; sync
- syslinux /dev/fd0 ; sync
- echo '$(image_cmdline)' | \
- MTOOLSRC=$(src)/mtools.conf mcopy - a:syslinux.cfg
- if [ -f '$(FDINITRD)' ] ; then \
- MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' a:initrd.img ; \
- fi
- MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage a:linux ; sync
-
-# These require being root or having syslinux 2.02 or higher installed
-fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf
- dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440
- MTOOLSRC=$(obj)/mtools.conf mformat v: ; sync
- syslinux $(obj)/fdimage ; sync
- echo '$(image_cmdline)' | \
- MTOOLSRC=$(obj)/mtools.conf mcopy - v:syslinux.cfg
- if [ -f '$(FDINITRD)' ] ; then \
- MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' v:initrd.img ; \
- fi
- MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage v:linux ; sync
-
-fdimage288: $(obj)/bzImage $(obj)/mtools.conf
- dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880
- MTOOLSRC=$(obj)/mtools.conf mformat w: ; sync
- syslinux $(obj)/fdimage ; sync
- echo '$(image_cmdline)' | \
- MTOOLSRC=$(obj)/mtools.conf mcopy - w:syslinux.cfg
- if [ -f '$(FDINITRD)' ] ; then \
- MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' w:initrd.img ; \
- fi
- MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage w:linux ; sync
-
-isoimage: $(obj)/bzImage
- -rm -rf $(obj)/isoimage
- mkdir $(obj)/isoimage
- for i in lib lib64 share end ; do \
- if [ -f /usr/$$i/syslinux/isolinux.bin ] ; then \
- cp /usr/$$i/syslinux/isolinux.bin $(obj)/isoimage ; \
- break ; \
- fi ; \
- if [ $$i = end ] ; then exit 1 ; fi ; \
- done
- cp $(obj)/bzImage $(obj)/isoimage/linux
- echo '$(image_cmdline)' > $(obj)/isoimage/isolinux.cfg
- if [ -f '$(FDINITRD)' ] ; then \
- cp '$(FDINITRD)' $(obj)/isoimage/initrd.img ; \
- fi
- mkisofs -J -r -o $(obj)/image.iso -b isolinux.bin -c boot.cat \
- -no-emul-boot -boot-load-size 4 -boot-info-table \
- $(obj)/isoimage
- isohybrid $(obj)/image.iso 2>/dev/null || true
- rm -rf $(obj)/isoimage
-
-bzlilo: $(obj)/bzImage
- if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
- if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
- cat $(obj)/bzImage > $(INSTALL_PATH)/vmlinuz
- cp System.map $(INSTALL_PATH)/
- if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
-
-install:
- sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
- System.map "$(INSTALL_PATH)"
diff --git a/ANDROID_3.4.5/arch/x86/boot/a20.c b/ANDROID_3.4.5/arch/x86/boot/a20.c
deleted file mode 100644
index 64a31a6d..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/a20.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007-2008 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Enable A20 gate (return -1 on failure)
- */
-
-#include "boot.h"
-
-#define MAX_8042_LOOPS 100000
-#define MAX_8042_FF 32
-
-static int empty_8042(void)
-{
- u8 status;
- int loops = MAX_8042_LOOPS;
- int ffs = MAX_8042_FF;
-
- while (loops--) {
- io_delay();
-
- status = inb(0x64);
- if (status == 0xff) {
- /* FF is a plausible, but very unlikely status */
- if (!--ffs)
- return -1; /* Assume no KBC present */
- }
- if (status & 1) {
- /* Read and discard input data */
- io_delay();
- (void)inb(0x60);
- } else if (!(status & 2)) {
- /* Buffers empty, finished! */
- return 0;
- }
- }
-
- return -1;
-}
-
-/* Returns nonzero if the A20 line is enabled. The memory address
- used as a test is the int $0x80 vector, which should be safe. */
-
-#define A20_TEST_ADDR (4*0x80)
-#define A20_TEST_SHORT 32
-#define A20_TEST_LONG 2097152 /* 2^21 */
-
-static int a20_test(int loops)
-{
- int ok = 0;
- int saved, ctr;
-
- set_fs(0x0000);
- set_gs(0xffff);
-
- saved = ctr = rdfs32(A20_TEST_ADDR);
-
- while (loops--) {
- wrfs32(++ctr, A20_TEST_ADDR);
- io_delay(); /* Serialize and make delay constant */
- ok = rdgs32(A20_TEST_ADDR+0x10) ^ ctr;
- if (ok)
- break;
- }
-
- wrfs32(saved, A20_TEST_ADDR);
- return ok;
-}
-
-/* Quick test to see if A20 is already enabled */
-static int a20_test_short(void)
-{
- return a20_test(A20_TEST_SHORT);
-}
-
-/* Longer test that actually waits for A20 to come on line; this
- is useful when dealing with the KBC or other slow external circuitry. */
-static int a20_test_long(void)
-{
- return a20_test(A20_TEST_LONG);
-}
-
-static void enable_a20_bios(void)
-{
- struct biosregs ireg;
-
- initregs(&ireg);
- ireg.ax = 0x2401;
- intcall(0x15, &ireg, NULL);
-}
-
-static void enable_a20_kbc(void)
-{
- empty_8042();
-
- outb(0xd1, 0x64); /* Command write */
- empty_8042();
-
- outb(0xdf, 0x60); /* A20 on */
- empty_8042();
-
- outb(0xff, 0x64); /* Null command, but UHCI wants it */
- empty_8042();
-}
-
-static void enable_a20_fast(void)
-{
- u8 port_a;
-
- port_a = inb(0x92); /* Configuration port A */
- port_a |= 0x02; /* Enable A20 */
- port_a &= ~0x01; /* Do not reset machine */
- outb(port_a, 0x92);
-}
-
-/*
- * Actual routine to enable A20; return 0 on ok, -1 on failure
- */
-
-#define A20_ENABLE_LOOPS 255 /* Number of times to try */
-
-int enable_a20(void)
-{
- int loops = A20_ENABLE_LOOPS;
- int kbc_err;
-
- while (loops--) {
- /* First, check to see if A20 is already enabled
- (legacy free, etc.) */
- if (a20_test_short())
- return 0;
-
- /* Next, try the BIOS (INT 0x15, AX=0x2401) */
- enable_a20_bios();
- if (a20_test_short())
- return 0;
-
- /* Try enabling A20 through the keyboard controller */
- kbc_err = empty_8042();
-
- if (a20_test_short())
- return 0; /* BIOS worked, but with delayed reaction */
-
- if (!kbc_err) {
- enable_a20_kbc();
- if (a20_test_long())
- return 0;
- }
-
- /* Finally, try enabling the "fast A20 gate" */
- enable_a20_fast();
- if (a20_test_long())
- return 0;
- }
-
- return -1;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/apm.c b/ANDROID_3.4.5/arch/x86/boot/apm.c
deleted file mode 100644
index ee274834..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/apm.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * Original APM BIOS checking by Stephen Rothwell, May 1994
- * (sfr@canb.auug.org.au)
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Get APM BIOS information
- */
-
-#include "boot.h"
-
-int query_apm_bios(void)
-{
- struct biosregs ireg, oreg;
-
- /* APM BIOS installation check */
- initregs(&ireg);
- ireg.ah = 0x53;
- intcall(0x15, &ireg, &oreg);
-
- if (oreg.flags & X86_EFLAGS_CF)
- return -1; /* No APM BIOS */
-
- if (oreg.bx != 0x504d) /* "PM" signature */
- return -1;
-
- if (!(oreg.cx & 0x02)) /* 32 bits supported? */
- return -1;
-
- /* Disconnect first, just in case */
- ireg.al = 0x04;
- intcall(0x15, &ireg, NULL);
-
- /* 32-bit connect */
- ireg.al = 0x03;
- intcall(0x15, &ireg, &oreg);
-
- boot_params.apm_bios_info.cseg = oreg.ax;
- boot_params.apm_bios_info.offset = oreg.ebx;
- boot_params.apm_bios_info.cseg_16 = oreg.cx;
- boot_params.apm_bios_info.dseg = oreg.dx;
- boot_params.apm_bios_info.cseg_len = oreg.si;
- boot_params.apm_bios_info.cseg_16_len = oreg.hsi;
- boot_params.apm_bios_info.dseg_len = oreg.di;
-
- if (oreg.flags & X86_EFLAGS_CF)
- return -1;
-
- /* Redo the installation check as the 32-bit connect;
- some BIOSes return different flags this way... */
-
- ireg.al = 0x00;
- intcall(0x15, &ireg, &oreg);
-
- if ((oreg.eflags & X86_EFLAGS_CF) || oreg.bx != 0x504d) {
- /* Failure with 32-bit connect, try to disconect and ignore */
- ireg.al = 0x04;
- intcall(0x15, &ireg, NULL);
- return -1;
- }
-
- boot_params.apm_bios_info.version = oreg.ax;
- boot_params.apm_bios_info.flags = oreg.cx;
- return 0;
-}
-
diff --git a/ANDROID_3.4.5/arch/x86/boot/bioscall.S b/ANDROID_3.4.5/arch/x86/boot/bioscall.S
deleted file mode 100644
index 1dfbf64e..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/bioscall.S
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -----------------------------------------------------------------------
- *
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2 or (at your
- * option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * "Glove box" for BIOS calls. Avoids the constant problems with BIOSes
- * touching registers they shouldn't be.
- */
-
- .code16gcc
- .text
- .globl intcall
- .type intcall, @function
-intcall:
- /* Self-modify the INT instruction. Ugly, but works. */
- cmpb %al, 3f
- je 1f
- movb %al, 3f
- jmp 1f /* Synchronize pipeline */
-1:
- /* Save state */
- pushfl
- pushw %fs
- pushw %gs
- pushal
-
- /* Copy input state to stack frame */
- subw $44, %sp
- movw %dx, %si
- movw %sp, %di
- movw $11, %cx
- rep; movsd
-
- /* Pop full state from the stack */
- popal
- popw %gs
- popw %fs
- popw %es
- popw %ds
- popfl
-
- /* Actual INT */
- .byte 0xcd /* INT opcode */
-3: .byte 0
-
- /* Push full state to the stack */
- pushfl
- pushw %ds
- pushw %es
- pushw %fs
- pushw %gs
- pushal
-
- /* Re-establish C environment invariants */
- cld
- movzwl %sp, %esp
- movw %cs, %ax
- movw %ax, %ds
- movw %ax, %es
-
- /* Copy output state from stack frame */
- movw 68(%esp), %di /* Original %cx == 3rd argument */
- andw %di, %di
- jz 4f
- movw %sp, %si
- movw $11, %cx
- rep; movsd
-4: addw $44, %sp
-
- /* Restore state and return */
- popal
- popw %gs
- popw %fs
- popfl
- retl
- .size intcall, .-intcall
diff --git a/ANDROID_3.4.5/arch/x86/boot/bitops.h b/ANDROID_3.4.5/arch/x86/boot/bitops.h
deleted file mode 100644
index 878e4b99..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/bitops.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Very simple bitops for the boot code.
- */
-
-#ifndef BOOT_BITOPS_H
-#define BOOT_BITOPS_H
-#define _LINUX_BITOPS_H /* Inhibit inclusion of <linux/bitops.h> */
-
-static inline int constant_test_bit(int nr, const void *addr)
-{
- const u32 *p = (const u32 *)addr;
- return ((1UL << (nr & 31)) & (p[nr >> 5])) != 0;
-}
-static inline int variable_test_bit(int nr, const void *addr)
-{
- u8 v;
- const u32 *p = (const u32 *)addr;
-
- asm("btl %2,%1; setc %0" : "=qm" (v) : "m" (*p), "Ir" (nr));
- return v;
-}
-
-#define test_bit(nr,addr) \
-(__builtin_constant_p(nr) ? \
- constant_test_bit((nr),(addr)) : \
- variable_test_bit((nr),(addr)))
-
-static inline void set_bit(int nr, void *addr)
-{
- asm("btsl %1,%0" : "+m" (*(u32 *)addr) : "Ir" (nr));
-}
-
-#endif /* BOOT_BITOPS_H */
diff --git a/ANDROID_3.4.5/arch/x86/boot/boot.h b/ANDROID_3.4.5/arch/x86/boot/boot.h
deleted file mode 100644
index 18997e5a..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/boot.h
+++ /dev/null
@@ -1,369 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Header file for the real-mode kernel code
- */
-
-#ifndef BOOT_BOOT_H
-#define BOOT_BOOT_H
-
-#define STACK_SIZE 512 /* Minimum number of bytes for stack */
-
-#ifndef __ASSEMBLY__
-
-#include <stdarg.h>
-#include <linux/types.h>
-#include <linux/edd.h>
-#include <asm/boot.h>
-#include <asm/setup.h>
-#include "bitops.h"
-#include <asm/cpufeature.h>
-#include <asm/processor-flags.h>
-#include "ctype.h"
-
-/* Useful macros */
-#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
-
-extern struct setup_header hdr;
-extern struct boot_params boot_params;
-
-#define cpu_relax() asm volatile("rep; nop")
-
-/* Basic port I/O */
-static inline void outb(u8 v, u16 port)
-{
- asm volatile("outb %0,%1" : : "a" (v), "dN" (port));
-}
-static inline u8 inb(u16 port)
-{
- u8 v;
- asm volatile("inb %1,%0" : "=a" (v) : "dN" (port));
- return v;
-}
-
-static inline void outw(u16 v, u16 port)
-{
- asm volatile("outw %0,%1" : : "a" (v), "dN" (port));
-}
-static inline u16 inw(u16 port)
-{
- u16 v;
- asm volatile("inw %1,%0" : "=a" (v) : "dN" (port));
- return v;
-}
-
-static inline void outl(u32 v, u16 port)
-{
- asm volatile("outl %0,%1" : : "a" (v), "dN" (port));
-}
-static inline u32 inl(u16 port)
-{
- u32 v;
- asm volatile("inl %1,%0" : "=a" (v) : "dN" (port));
- return v;
-}
-
-static inline void io_delay(void)
-{
- const u16 DELAY_PORT = 0x80;
- asm volatile("outb %%al,%0" : : "dN" (DELAY_PORT));
-}
-
-/* These functions are used to reference data in other segments. */
-
-static inline u16 ds(void)
-{
- u16 seg;
- asm("movw %%ds,%0" : "=rm" (seg));
- return seg;
-}
-
-static inline void set_fs(u16 seg)
-{
- asm volatile("movw %0,%%fs" : : "rm" (seg));
-}
-static inline u16 fs(void)
-{
- u16 seg;
- asm volatile("movw %%fs,%0" : "=rm" (seg));
- return seg;
-}
-
-static inline void set_gs(u16 seg)
-{
- asm volatile("movw %0,%%gs" : : "rm" (seg));
-}
-static inline u16 gs(void)
-{
- u16 seg;
- asm volatile("movw %%gs,%0" : "=rm" (seg));
- return seg;
-}
-
-typedef unsigned int addr_t;
-
-static inline u8 rdfs8(addr_t addr)
-{
- u8 v;
- asm volatile("movb %%fs:%1,%0" : "=q" (v) : "m" (*(u8 *)addr));
- return v;
-}
-static inline u16 rdfs16(addr_t addr)
-{
- u16 v;
- asm volatile("movw %%fs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
- return v;
-}
-static inline u32 rdfs32(addr_t addr)
-{
- u32 v;
- asm volatile("movl %%fs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
- return v;
-}
-
-static inline void wrfs8(u8 v, addr_t addr)
-{
- asm volatile("movb %1,%%fs:%0" : "+m" (*(u8 *)addr) : "qi" (v));
-}
-static inline void wrfs16(u16 v, addr_t addr)
-{
- asm volatile("movw %1,%%fs:%0" : "+m" (*(u16 *)addr) : "ri" (v));
-}
-static inline void wrfs32(u32 v, addr_t addr)
-{
- asm volatile("movl %1,%%fs:%0" : "+m" (*(u32 *)addr) : "ri" (v));
-}
-
-static inline u8 rdgs8(addr_t addr)
-{
- u8 v;
- asm volatile("movb %%gs:%1,%0" : "=q" (v) : "m" (*(u8 *)addr));
- return v;
-}
-static inline u16 rdgs16(addr_t addr)
-{
- u16 v;
- asm volatile("movw %%gs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
- return v;
-}
-static inline u32 rdgs32(addr_t addr)
-{
- u32 v;
- asm volatile("movl %%gs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
- return v;
-}
-
-static inline void wrgs8(u8 v, addr_t addr)
-{
- asm volatile("movb %1,%%gs:%0" : "+m" (*(u8 *)addr) : "qi" (v));
-}
-static inline void wrgs16(u16 v, addr_t addr)
-{
- asm volatile("movw %1,%%gs:%0" : "+m" (*(u16 *)addr) : "ri" (v));
-}
-static inline void wrgs32(u32 v, addr_t addr)
-{
- asm volatile("movl %1,%%gs:%0" : "+m" (*(u32 *)addr) : "ri" (v));
-}
-
-/* Note: these only return true/false, not a signed return value! */
-static inline int memcmp(const void *s1, const void *s2, size_t len)
-{
- u8 diff;
- asm("repe; cmpsb; setnz %0"
- : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
- return diff;
-}
-
-static inline int memcmp_fs(const void *s1, addr_t s2, size_t len)
-{
- u8 diff;
- asm volatile("fs; repe; cmpsb; setnz %0"
- : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
- return diff;
-}
-static inline int memcmp_gs(const void *s1, addr_t s2, size_t len)
-{
- u8 diff;
- asm volatile("gs; repe; cmpsb; setnz %0"
- : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
- return diff;
-}
-
-/* Heap -- available for dynamic lists. */
-extern char _end[];
-extern char *HEAP;
-extern char *heap_end;
-#define RESET_HEAP() ((void *)( HEAP = _end ))
-static inline char *__get_heap(size_t s, size_t a, size_t n)
-{
- char *tmp;
-
- HEAP = (char *)(((size_t)HEAP+(a-1)) & ~(a-1));
- tmp = HEAP;
- HEAP += s*n;
- return tmp;
-}
-#define GET_HEAP(type, n) \
- ((type *)__get_heap(sizeof(type),__alignof__(type),(n)))
-
-static inline bool heap_free(size_t n)
-{
- return (int)(heap_end-HEAP) >= (int)n;
-}
-
-/* copy.S */
-
-void copy_to_fs(addr_t dst, void *src, size_t len);
-void *copy_from_fs(void *dst, addr_t src, size_t len);
-void copy_to_gs(addr_t dst, void *src, size_t len);
-void *copy_from_gs(void *dst, addr_t src, size_t len);
-void *memcpy(void *dst, void *src, size_t len);
-void *memset(void *dst, int c, size_t len);
-
-#define memcpy(d,s,l) __builtin_memcpy(d,s,l)
-#define memset(d,c,l) __builtin_memset(d,c,l)
-
-/* a20.c */
-int enable_a20(void);
-
-/* apm.c */
-int query_apm_bios(void);
-
-/* bioscall.c */
-struct biosregs {
- union {
- struct {
- u32 edi;
- u32 esi;
- u32 ebp;
- u32 _esp;
- u32 ebx;
- u32 edx;
- u32 ecx;
- u32 eax;
- u32 _fsgs;
- u32 _dses;
- u32 eflags;
- };
- struct {
- u16 di, hdi;
- u16 si, hsi;
- u16 bp, hbp;
- u16 _sp, _hsp;
- u16 bx, hbx;
- u16 dx, hdx;
- u16 cx, hcx;
- u16 ax, hax;
- u16 gs, fs;
- u16 es, ds;
- u16 flags, hflags;
- };
- struct {
- u8 dil, dih, edi2, edi3;
- u8 sil, sih, esi2, esi3;
- u8 bpl, bph, ebp2, ebp3;
- u8 _spl, _sph, _esp2, _esp3;
- u8 bl, bh, ebx2, ebx3;
- u8 dl, dh, edx2, edx3;
- u8 cl, ch, ecx2, ecx3;
- u8 al, ah, eax2, eax3;
- };
- };
-};
-void intcall(u8 int_no, const struct biosregs *ireg, struct biosregs *oreg);
-
-/* cmdline.c */
-int __cmdline_find_option(u32 cmdline_ptr, const char *option, char *buffer, int bufsize);
-int __cmdline_find_option_bool(u32 cmdline_ptr, const char *option);
-static inline int cmdline_find_option(const char *option, char *buffer, int bufsize)
-{
- return __cmdline_find_option(boot_params.hdr.cmd_line_ptr, option, buffer, bufsize);
-}
-
-static inline int cmdline_find_option_bool(const char *option)
-{
- return __cmdline_find_option_bool(boot_params.hdr.cmd_line_ptr, option);
-}
-
-
-/* cpu.c, cpucheck.c */
-struct cpu_features {
- int level; /* Family, or 64 for x86-64 */
- int model;
- u32 flags[NCAPINTS];
-};
-extern struct cpu_features cpu;
-int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr);
-int validate_cpu(void);
-
-/* early_serial_console.c */
-extern int early_serial_base;
-void console_init(void);
-
-/* edd.c */
-void query_edd(void);
-
-/* header.S */
-void __attribute__((noreturn)) die(void);
-
-/* mca.c */
-int query_mca(void);
-
-/* memory.c */
-int detect_memory(void);
-
-/* pm.c */
-void __attribute__((noreturn)) go_to_protected_mode(void);
-
-/* pmjump.S */
-void __attribute__((noreturn))
- protected_mode_jump(u32 entrypoint, u32 bootparams);
-
-/* printf.c */
-int sprintf(char *buf, const char *fmt, ...);
-int vsprintf(char *buf, const char *fmt, va_list args);
-int printf(const char *fmt, ...);
-
-/* regs.c */
-void initregs(struct biosregs *regs);
-
-/* string.c */
-int strcmp(const char *str1, const char *str2);
-int strncmp(const char *cs, const char *ct, size_t count);
-size_t strnlen(const char *s, size_t maxlen);
-unsigned int atou(const char *s);
-unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base);
-
-/* tty.c */
-void puts(const char *);
-void putchar(int);
-int getchar(void);
-void kbd_flush(void);
-int getchar_timeout(void);
-
-/* video.c */
-void set_video(void);
-
-/* video-mode.c */
-int set_mode(u16 mode);
-int mode_defined(u16 mode);
-void probe_cards(int unsafe);
-
-/* video-vesa.c */
-void vesa_store_edid(void);
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* BOOT_BOOT_H */
diff --git a/ANDROID_3.4.5/arch/x86/boot/cmdline.c b/ANDROID_3.4.5/arch/x86/boot/cmdline.c
deleted file mode 100644
index 6b3b6f70..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/cmdline.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Simple command-line parser for early boot.
- */
-
-#include "boot.h"
-
-static inline int myisspace(u8 c)
-{
- return c <= ' '; /* Close enough approximation */
-}
-
-/*
- * Find a non-boolean option, that is, "option=argument". In accordance
- * with standard Linux practice, if this option is repeated, this returns
- * the last instance on the command line.
- *
- * Returns the length of the argument (regardless of if it was
- * truncated to fit in the buffer), or -1 on not found.
- */
-int __cmdline_find_option(u32 cmdline_ptr, const char *option, char *buffer, int bufsize)
-{
- addr_t cptr;
- char c;
- int len = -1;
- const char *opptr = NULL;
- char *bufptr = buffer;
- enum {
- st_wordstart, /* Start of word/after whitespace */
- st_wordcmp, /* Comparing this word */
- st_wordskip, /* Miscompare, skip */
- st_bufcpy /* Copying this to buffer */
- } state = st_wordstart;
-
- if (!cmdline_ptr || cmdline_ptr >= 0x100000)
- return -1; /* No command line, or inaccessible */
-
- cptr = cmdline_ptr & 0xf;
- set_fs(cmdline_ptr >> 4);
-
- while (cptr < 0x10000 && (c = rdfs8(cptr++))) {
- switch (state) {
- case st_wordstart:
- if (myisspace(c))
- break;
-
- /* else */
- state = st_wordcmp;
- opptr = option;
- /* fall through */
-
- case st_wordcmp:
- if (c == '=' && !*opptr) {
- len = 0;
- bufptr = buffer;
- state = st_bufcpy;
- } else if (myisspace(c)) {
- state = st_wordstart;
- } else if (c != *opptr++) {
- state = st_wordskip;
- }
- break;
-
- case st_wordskip:
- if (myisspace(c))
- state = st_wordstart;
- break;
-
- case st_bufcpy:
- if (myisspace(c)) {
- state = st_wordstart;
- } else {
- if (len < bufsize-1)
- *bufptr++ = c;
- len++;
- }
- break;
- }
- }
-
- if (bufsize)
- *bufptr = '\0';
-
- return len;
-}
-
-/*
- * Find a boolean option (like quiet,noapic,nosmp....)
- *
- * Returns the position of that option (starts counting with 1)
- * or 0 on not found
- */
-int __cmdline_find_option_bool(u32 cmdline_ptr, const char *option)
-{
- addr_t cptr;
- char c;
- int pos = 0, wstart = 0;
- const char *opptr = NULL;
- enum {
- st_wordstart, /* Start of word/after whitespace */
- st_wordcmp, /* Comparing this word */
- st_wordskip, /* Miscompare, skip */
- } state = st_wordstart;
-
- if (!cmdline_ptr || cmdline_ptr >= 0x100000)
- return -1; /* No command line, or inaccessible */
-
- cptr = cmdline_ptr & 0xf;
- set_fs(cmdline_ptr >> 4);
-
- while (cptr < 0x10000) {
- c = rdfs8(cptr++);
- pos++;
-
- switch (state) {
- case st_wordstart:
- if (!c)
- return 0;
- else if (myisspace(c))
- break;
-
- state = st_wordcmp;
- opptr = option;
- wstart = pos;
- /* fall through */
-
- case st_wordcmp:
- if (!*opptr)
- if (!c || myisspace(c))
- return wstart;
- else
- state = st_wordskip;
- else if (!c)
- return 0;
- else if (c != *opptr++)
- state = st_wordskip;
- break;
-
- case st_wordskip:
- if (!c)
- return 0;
- else if (myisspace(c))
- state = st_wordstart;
- break;
- }
- }
-
- return 0; /* Buffer overrun */
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/code16gcc.h b/ANDROID_3.4.5/arch/x86/boot/code16gcc.h
deleted file mode 100644
index d93e4801..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/code16gcc.h
+++ /dev/null
@@ -1,15 +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.
- */
-
-#ifndef __ASSEMBLY__
-asm(".code16gcc");
-#endif
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/Makefile b/ANDROID_3.4.5/arch/x86/boot/compressed/Makefile
deleted file mode 100644
index e398bb5d..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# linux/arch/x86/boot/compressed/Makefile
-#
-# create a compressed vmlinux image from the original vmlinux
-#
-
-targets := vmlinux.lds vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma vmlinux.bin.xz vmlinux.bin.lzo head_$(BITS).o misc.o string.o cmdline.o early_serial_console.o piggy.o
-
-KBUILD_CFLAGS := -m$(BITS) -D__KERNEL__ $(LINUX_INCLUDE) -O2
-KBUILD_CFLAGS += -fno-strict-aliasing -fPIC
-KBUILD_CFLAGS += -DDISABLE_BRANCH_PROFILING
-cflags-$(CONFIG_X86_32) := -march=i386
-cflags-$(CONFIG_X86_64) := -mcmodel=small
-KBUILD_CFLAGS += $(cflags-y)
-KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
-KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
-
-KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
-GCOV_PROFILE := n
-
-LDFLAGS := -m elf_$(UTS_MACHINE)
-LDFLAGS_vmlinux := -T
-
-hostprogs-y := mkpiggy
-HOST_EXTRACFLAGS += -I$(srctree)/tools/include
-
-VMLINUX_OBJS = $(obj)/vmlinux.lds $(obj)/head_$(BITS).o $(obj)/misc.o \
- $(obj)/string.o $(obj)/cmdline.o $(obj)/early_serial_console.o \
- $(obj)/piggy.o
-
-ifeq ($(CONFIG_EFI_STUB), y)
- VMLINUX_OBJS += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o
-endif
-
-$(obj)/vmlinux: $(VMLINUX_OBJS) FORCE
- $(call if_changed,ld)
- @:
-
-OBJCOPYFLAGS_vmlinux.bin := -R .comment -S
-$(obj)/vmlinux.bin: vmlinux FORCE
- $(call if_changed,objcopy)
-
-targets += vmlinux.bin.all vmlinux.relocs
-
-CMD_RELOCS = arch/x86/tools/relocs
-quiet_cmd_relocs = RELOCS $@
- cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $<
-$(obj)/vmlinux.relocs: vmlinux FORCE
- $(call if_changed,relocs)
-
-vmlinux.bin.all-y := $(obj)/vmlinux.bin
-vmlinux.bin.all-$(CONFIG_X86_NEED_RELOCS) += $(obj)/vmlinux.relocs
-
-$(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
- $(call if_changed,gzip)
-$(obj)/vmlinux.bin.bz2: $(vmlinux.bin.all-y) FORCE
- $(call if_changed,bzip2)
-$(obj)/vmlinux.bin.lzma: $(vmlinux.bin.all-y) FORCE
- $(call if_changed,lzma)
-$(obj)/vmlinux.bin.xz: $(vmlinux.bin.all-y) FORCE
- $(call if_changed,xzkern)
-$(obj)/vmlinux.bin.lzo: $(vmlinux.bin.all-y) FORCE
- $(call if_changed,lzo)
-
-suffix-$(CONFIG_KERNEL_GZIP) := gz
-suffix-$(CONFIG_KERNEL_BZIP2) := bz2
-suffix-$(CONFIG_KERNEL_LZMA) := lzma
-suffix-$(CONFIG_KERNEL_XZ) := xz
-suffix-$(CONFIG_KERNEL_LZO) := lzo
-
-quiet_cmd_mkpiggy = MKPIGGY $@
- cmd_mkpiggy = $(obj)/mkpiggy $< > $@ || ( rm -f $@ ; false )
-
-targets += piggy.S
-$(obj)/piggy.S: $(obj)/vmlinux.bin.$(suffix-y) $(obj)/mkpiggy FORCE
- $(call if_changed,mkpiggy)
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/cmdline.c b/ANDROID_3.4.5/arch/x86/boot/compressed/cmdline.c
deleted file mode 100644
index cb62f786..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/cmdline.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "misc.h"
-
-static unsigned long fs;
-static inline void set_fs(unsigned long seg)
-{
- fs = seg << 4; /* shift it back */
-}
-typedef unsigned long addr_t;
-static inline char rdfs8(addr_t addr)
-{
- return *((char *)(fs + addr));
-}
-#include "../cmdline.c"
-int cmdline_find_option(const char *option, char *buffer, int bufsize)
-{
- return __cmdline_find_option(real_mode->hdr.cmd_line_ptr, option, buffer, bufsize);
-}
-int cmdline_find_option_bool(const char *option)
-{
- return __cmdline_find_option_bool(real_mode->hdr.cmd_line_ptr, option);
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/early_serial_console.c b/ANDROID_3.4.5/arch/x86/boot/compressed/early_serial_console.c
deleted file mode 100644
index 261e81fb..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/early_serial_console.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "misc.h"
-
-int early_serial_base;
-
-#include "../early_serial_console.c"
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/eboot.c b/ANDROID_3.4.5/arch/x86/boot/compressed/eboot.c
deleted file mode 100644
index 0cdfc0d2..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/eboot.c
+++ /dev/null
@@ -1,1022 +0,0 @@
-/* -----------------------------------------------------------------------
- *
- * Copyright 2011 Intel Corporation; author Matt Fleming
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-#include <linux/efi.h>
-#include <asm/efi.h>
-#include <asm/setup.h>
-#include <asm/desc.h>
-
-#include "eboot.h"
-
-static efi_system_table_t *sys_table;
-
-static efi_status_t __get_map(efi_memory_desc_t **map, unsigned long *map_size,
- unsigned long *desc_size)
-{
- efi_memory_desc_t *m = NULL;
- efi_status_t status;
- unsigned long key;
- u32 desc_version;
-
- *map_size = sizeof(*m) * 32;
-again:
- /*
- * Add an additional efi_memory_desc_t because we're doing an
- * allocation which may be in a new descriptor region.
- */
- *map_size += sizeof(*m);
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA, *map_size, (void **)&m);
- if (status != EFI_SUCCESS)
- goto fail;
-
- status = efi_call_phys5(sys_table->boottime->get_memory_map, map_size,
- m, &key, desc_size, &desc_version);
- if (status == EFI_BUFFER_TOO_SMALL) {
- efi_call_phys1(sys_table->boottime->free_pool, m);
- goto again;
- }
-
- if (status != EFI_SUCCESS)
- efi_call_phys1(sys_table->boottime->free_pool, m);
-
-fail:
- *map = m;
- return status;
-}
-
-/*
- * Allocate at the highest possible address that is not above 'max'.
- */
-static efi_status_t high_alloc(unsigned long size, unsigned long align,
- unsigned long *addr, unsigned long max)
-{
- unsigned long map_size, desc_size;
- efi_memory_desc_t *map;
- efi_status_t status;
- unsigned long nr_pages;
- u64 max_addr = 0;
- int i;
-
- status = __get_map(&map, &map_size, &desc_size);
- if (status != EFI_SUCCESS)
- goto fail;
-
- nr_pages = round_up(size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
-again:
- for (i = 0; i < map_size / desc_size; i++) {
- efi_memory_desc_t *desc;
- unsigned long m = (unsigned long)map;
- u64 start, end;
-
- desc = (efi_memory_desc_t *)(m + (i * desc_size));
- if (desc->type != EFI_CONVENTIONAL_MEMORY)
- continue;
-
- if (desc->num_pages < nr_pages)
- continue;
-
- start = desc->phys_addr;
- end = start + desc->num_pages * (1UL << EFI_PAGE_SHIFT);
-
- if ((start + size) > end || (start + size) > max)
- continue;
-
- if (end - size > max)
- end = max;
-
- if (round_down(end - size, align) < start)
- continue;
-
- start = round_down(end - size, align);
-
- /*
- * Don't allocate at 0x0. It will confuse code that
- * checks pointers against NULL.
- */
- if (start == 0x0)
- continue;
-
- if (start > max_addr)
- max_addr = start;
- }
-
- if (!max_addr)
- status = EFI_NOT_FOUND;
- else {
- status = efi_call_phys4(sys_table->boottime->allocate_pages,
- EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA,
- nr_pages, &max_addr);
- if (status != EFI_SUCCESS) {
- max = max_addr;
- max_addr = 0;
- goto again;
- }
-
- *addr = max_addr;
- }
-
-free_pool:
- efi_call_phys1(sys_table->boottime->free_pool, map);
-
-fail:
- return status;
-}
-
-/*
- * Allocate at the lowest possible address.
- */
-static efi_status_t low_alloc(unsigned long size, unsigned long align,
- unsigned long *addr)
-{
- unsigned long map_size, desc_size;
- efi_memory_desc_t *map;
- efi_status_t status;
- unsigned long nr_pages;
- int i;
-
- status = __get_map(&map, &map_size, &desc_size);
- if (status != EFI_SUCCESS)
- goto fail;
-
- nr_pages = round_up(size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
- for (i = 0; i < map_size / desc_size; i++) {
- efi_memory_desc_t *desc;
- unsigned long m = (unsigned long)map;
- u64 start, end;
-
- desc = (efi_memory_desc_t *)(m + (i * desc_size));
-
- if (desc->type != EFI_CONVENTIONAL_MEMORY)
- continue;
-
- if (desc->num_pages < nr_pages)
- continue;
-
- start = desc->phys_addr;
- end = start + desc->num_pages * (1UL << EFI_PAGE_SHIFT);
-
- /*
- * Don't allocate at 0x0. It will confuse code that
- * checks pointers against NULL. Skip the first 8
- * bytes so we start at a nice even number.
- */
- if (start == 0x0)
- start += 8;
-
- start = round_up(start, align);
- if ((start + size) > end)
- continue;
-
- status = efi_call_phys4(sys_table->boottime->allocate_pages,
- EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA,
- nr_pages, &start);
- if (status == EFI_SUCCESS) {
- *addr = start;
- break;
- }
- }
-
- if (i == map_size / desc_size)
- status = EFI_NOT_FOUND;
-
-free_pool:
- efi_call_phys1(sys_table->boottime->free_pool, map);
-fail:
- return status;
-}
-
-static void low_free(unsigned long size, unsigned long addr)
-{
- unsigned long nr_pages;
-
- nr_pages = round_up(size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
- efi_call_phys2(sys_table->boottime->free_pages, addr, size);
-}
-
-static void find_bits(unsigned long mask, u8 *pos, u8 *size)
-{
- u8 first, len;
-
- first = 0;
- len = 0;
-
- if (mask) {
- while (!(mask & 0x1)) {
- mask = mask >> 1;
- first++;
- }
-
- while (mask & 0x1) {
- mask = mask >> 1;
- len++;
- }
- }
-
- *pos = first;
- *size = len;
-}
-
-/*
- * See if we have Graphics Output Protocol
- */
-static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto,
- unsigned long size)
-{
- struct efi_graphics_output_protocol *gop, *first_gop;
- struct efi_pixel_bitmask pixel_info;
- unsigned long nr_gops;
- efi_status_t status;
- void **gop_handle;
- u16 width, height;
- u32 fb_base, fb_size;
- u32 pixels_per_scan_line;
- int pixel_format;
- int i;
-
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA, size, &gop_handle);
- if (status != EFI_SUCCESS)
- return status;
-
- status = efi_call_phys5(sys_table->boottime->locate_handle,
- EFI_LOCATE_BY_PROTOCOL, proto,
- NULL, &size, gop_handle);
- if (status != EFI_SUCCESS)
- goto free_handle;
-
- first_gop = NULL;
-
- nr_gops = size / sizeof(void *);
- for (i = 0; i < nr_gops; i++) {
- struct efi_graphics_output_mode_info *info;
- efi_guid_t pciio_proto = EFI_PCI_IO_PROTOCOL_GUID;
- void *pciio;
- void *h = gop_handle[i];
-
- status = efi_call_phys3(sys_table->boottime->handle_protocol,
- h, proto, &gop);
- if (status != EFI_SUCCESS)
- continue;
-
- efi_call_phys3(sys_table->boottime->handle_protocol,
- h, &pciio_proto, &pciio);
-
- status = efi_call_phys4(gop->query_mode, gop,
- gop->mode->mode, &size, &info);
- if (status == EFI_SUCCESS && (!first_gop || pciio)) {
- /*
- * Apple provide GOPs that are not backed by
- * real hardware (they're used to handle
- * multiple displays). The workaround is to
- * search for a GOP implementing the PCIIO
- * protocol, and if one isn't found, to just
- * fallback to the first GOP.
- */
- width = info->horizontal_resolution;
- height = info->vertical_resolution;
- fb_base = gop->mode->frame_buffer_base;
- fb_size = gop->mode->frame_buffer_size;
- pixel_format = info->pixel_format;
- pixel_info = info->pixel_information;
- pixels_per_scan_line = info->pixels_per_scan_line;
-
- /*
- * Once we've found a GOP supporting PCIIO,
- * don't bother looking any further.
- */
- if (pciio)
- break;
-
- first_gop = gop;
- }
- }
-
- /* Did we find any GOPs? */
- if (!first_gop)
- goto free_handle;
-
- /* EFI framebuffer */
- si->orig_video_isVGA = VIDEO_TYPE_EFI;
-
- si->lfb_width = width;
- si->lfb_height = height;
- si->lfb_base = fb_base;
- si->lfb_size = fb_size;
- si->pages = 1;
-
- if (pixel_format == PIXEL_RGB_RESERVED_8BIT_PER_COLOR) {
- si->lfb_depth = 32;
- si->lfb_linelength = pixels_per_scan_line * 4;
- si->red_size = 8;
- si->red_pos = 0;
- si->green_size = 8;
- si->green_pos = 8;
- si->blue_size = 8;
- si->blue_pos = 16;
- si->rsvd_size = 8;
- si->rsvd_pos = 24;
- } else if (pixel_format == PIXEL_BGR_RESERVED_8BIT_PER_COLOR) {
- si->lfb_depth = 32;
- si->lfb_linelength = pixels_per_scan_line * 4;
- si->red_size = 8;
- si->red_pos = 16;
- si->green_size = 8;
- si->green_pos = 8;
- si->blue_size = 8;
- si->blue_pos = 0;
- si->rsvd_size = 8;
- si->rsvd_pos = 24;
- } else if (pixel_format == PIXEL_BIT_MASK) {
- find_bits(pixel_info.red_mask, &si->red_pos, &si->red_size);
- find_bits(pixel_info.green_mask, &si->green_pos,
- &si->green_size);
- find_bits(pixel_info.blue_mask, &si->blue_pos, &si->blue_size);
- find_bits(pixel_info.reserved_mask, &si->rsvd_pos,
- &si->rsvd_size);
- si->lfb_depth = si->red_size + si->green_size +
- si->blue_size + si->rsvd_size;
- si->lfb_linelength = (pixels_per_scan_line * si->lfb_depth) / 8;
- } else {
- si->lfb_depth = 4;
- si->lfb_linelength = si->lfb_width / 2;
- si->red_size = 0;
- si->red_pos = 0;
- si->green_size = 0;
- si->green_pos = 0;
- si->blue_size = 0;
- si->blue_pos = 0;
- si->rsvd_size = 0;
- si->rsvd_pos = 0;
- }
-
-free_handle:
- efi_call_phys1(sys_table->boottime->free_pool, gop_handle);
- return status;
-}
-
-/*
- * See if we have Universal Graphics Adapter (UGA) protocol
- */
-static efi_status_t setup_uga(struct screen_info *si, efi_guid_t *uga_proto,
- unsigned long size)
-{
- struct efi_uga_draw_protocol *uga, *first_uga;
- unsigned long nr_ugas;
- efi_status_t status;
- u32 width, height;
- void **uga_handle = NULL;
- int i;
-
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA, size, &uga_handle);
- if (status != EFI_SUCCESS)
- return status;
-
- status = efi_call_phys5(sys_table->boottime->locate_handle,
- EFI_LOCATE_BY_PROTOCOL, uga_proto,
- NULL, &size, uga_handle);
- if (status != EFI_SUCCESS)
- goto free_handle;
-
- first_uga = NULL;
-
- nr_ugas = size / sizeof(void *);
- for (i = 0; i < nr_ugas; i++) {
- efi_guid_t pciio_proto = EFI_PCI_IO_PROTOCOL_GUID;
- void *handle = uga_handle[i];
- u32 w, h, depth, refresh;
- void *pciio;
-
- status = efi_call_phys3(sys_table->boottime->handle_protocol,
- handle, uga_proto, &uga);
- if (status != EFI_SUCCESS)
- continue;
-
- efi_call_phys3(sys_table->boottime->handle_protocol,
- handle, &pciio_proto, &pciio);
-
- status = efi_call_phys5(uga->get_mode, uga, &w, &h,
- &depth, &refresh);
- if (status == EFI_SUCCESS && (!first_uga || pciio)) {
- width = w;
- height = h;
-
- /*
- * Once we've found a UGA supporting PCIIO,
- * don't bother looking any further.
- */
- if (pciio)
- break;
-
- first_uga = uga;
- }
- }
-
- if (!first_uga)
- goto free_handle;
-
- /* EFI framebuffer */
- si->orig_video_isVGA = VIDEO_TYPE_EFI;
-
- si->lfb_depth = 32;
- si->lfb_width = width;
- si->lfb_height = height;
-
- si->red_size = 8;
- si->red_pos = 16;
- si->green_size = 8;
- si->green_pos = 8;
- si->blue_size = 8;
- si->blue_pos = 0;
- si->rsvd_size = 8;
- si->rsvd_pos = 24;
-
-
-free_handle:
- efi_call_phys1(sys_table->boottime->free_pool, uga_handle);
- return status;
-}
-
-void setup_graphics(struct boot_params *boot_params)
-{
- efi_guid_t graphics_proto = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
- struct screen_info *si;
- efi_guid_t uga_proto = EFI_UGA_PROTOCOL_GUID;
- efi_status_t status;
- unsigned long size;
- void **gop_handle = NULL;
- void **uga_handle = NULL;
-
- si = &boot_params->screen_info;
- memset(si, 0, sizeof(*si));
-
- size = 0;
- status = efi_call_phys5(sys_table->boottime->locate_handle,
- EFI_LOCATE_BY_PROTOCOL, &graphics_proto,
- NULL, &size, gop_handle);
- if (status == EFI_BUFFER_TOO_SMALL)
- status = setup_gop(si, &graphics_proto, size);
-
- if (status != EFI_SUCCESS) {
- size = 0;
- status = efi_call_phys5(sys_table->boottime->locate_handle,
- EFI_LOCATE_BY_PROTOCOL, &uga_proto,
- NULL, &size, uga_handle);
- if (status == EFI_BUFFER_TOO_SMALL)
- setup_uga(si, &uga_proto, size);
- }
-}
-
-struct initrd {
- efi_file_handle_t *handle;
- u64 size;
-};
-
-/*
- * Check the cmdline for a LILO-style initrd= arguments.
- *
- * We only support loading an initrd from the same filesystem as the
- * kernel image.
- */
-static efi_status_t handle_ramdisks(efi_loaded_image_t *image,
- struct setup_header *hdr)
-{
- struct initrd *initrds;
- unsigned long initrd_addr;
- efi_guid_t fs_proto = EFI_FILE_SYSTEM_GUID;
- u64 initrd_total;
- efi_file_io_interface_t *io;
- efi_file_handle_t *fh;
- efi_status_t status;
- int nr_initrds;
- char *str;
- int i, j, k;
-
- initrd_addr = 0;
- initrd_total = 0;
-
- str = (char *)(unsigned long)hdr->cmd_line_ptr;
-
- j = 0; /* See close_handles */
-
- if (!str || !*str)
- return EFI_SUCCESS;
-
- for (nr_initrds = 0; *str; nr_initrds++) {
- str = strstr(str, "initrd=");
- if (!str)
- break;
-
- str += 7;
-
- /* Skip any leading slashes */
- while (*str == '/' || *str == '\\')
- str++;
-
- while (*str && *str != ' ' && *str != '\n')
- str++;
- }
-
- if (!nr_initrds)
- return EFI_SUCCESS;
-
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA,
- nr_initrds * sizeof(*initrds),
- &initrds);
- if (status != EFI_SUCCESS)
- goto fail;
-
- str = (char *)(unsigned long)hdr->cmd_line_ptr;
- for (i = 0; i < nr_initrds; i++) {
- struct initrd *initrd;
- efi_file_handle_t *h;
- efi_file_info_t *info;
- efi_char16_t filename_16[256];
- unsigned long info_sz;
- efi_guid_t info_guid = EFI_FILE_INFO_ID;
- efi_char16_t *p;
- u64 file_sz;
-
- str = strstr(str, "initrd=");
- if (!str)
- break;
-
- str += 7;
-
- initrd = &initrds[i];
- p = filename_16;
-
- /* Skip any leading slashes */
- while (*str == '/' || *str == '\\')
- str++;
-
- while (*str && *str != ' ' && *str != '\n') {
- if ((u8 *)p >= (u8 *)filename_16 + sizeof(filename_16))
- break;
-
- *p++ = *str++;
- }
-
- *p = '\0';
-
- /* Only open the volume once. */
- if (!i) {
- efi_boot_services_t *boottime;
-
- boottime = sys_table->boottime;
-
- status = efi_call_phys3(boottime->handle_protocol,
- image->device_handle, &fs_proto, &io);
- if (status != EFI_SUCCESS)
- goto free_initrds;
-
- status = efi_call_phys2(io->open_volume, io, &fh);
- if (status != EFI_SUCCESS)
- goto free_initrds;
- }
-
- status = efi_call_phys5(fh->open, fh, &h, filename_16,
- EFI_FILE_MODE_READ, (u64)0);
- if (status != EFI_SUCCESS)
- goto close_handles;
-
- initrd->handle = h;
-
- info_sz = 0;
- status = efi_call_phys4(h->get_info, h, &info_guid,
- &info_sz, NULL);
- if (status != EFI_BUFFER_TOO_SMALL)
- goto close_handles;
-
-grow:
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA, info_sz, &info);
- if (status != EFI_SUCCESS)
- goto close_handles;
-
- status = efi_call_phys4(h->get_info, h, &info_guid,
- &info_sz, info);
- if (status == EFI_BUFFER_TOO_SMALL) {
- efi_call_phys1(sys_table->boottime->free_pool, info);
- goto grow;
- }
-
- file_sz = info->file_size;
- efi_call_phys1(sys_table->boottime->free_pool, info);
-
- if (status != EFI_SUCCESS)
- goto close_handles;
-
- initrd->size = file_sz;
- initrd_total += file_sz;
- }
-
- if (initrd_total) {
- unsigned long addr;
-
- /*
- * Multiple initrd's need to be at consecutive
- * addresses in memory, so allocate enough memory for
- * all the initrd's.
- */
- status = high_alloc(initrd_total, 0x1000,
- &initrd_addr, hdr->initrd_addr_max);
- if (status != EFI_SUCCESS)
- goto close_handles;
-
- /* We've run out of free low memory. */
- if (initrd_addr > hdr->initrd_addr_max) {
- status = EFI_INVALID_PARAMETER;
- goto free_initrd_total;
- }
-
- addr = initrd_addr;
- for (j = 0; j < nr_initrds; j++) {
- u64 size;
-
- size = initrds[j].size;
- while (size) {
- u64 chunksize;
- if (size > EFI_READ_CHUNK_SIZE)
- chunksize = EFI_READ_CHUNK_SIZE;
- else
- chunksize = size;
- status = efi_call_phys3(fh->read,
- initrds[j].handle,
- &chunksize, addr);
- if (status != EFI_SUCCESS)
- goto free_initrd_total;
- addr += chunksize;
- size -= chunksize;
- }
-
- efi_call_phys1(fh->close, initrds[j].handle);
- }
-
- }
-
- efi_call_phys1(sys_table->boottime->free_pool, initrds);
-
- hdr->ramdisk_image = initrd_addr;
- hdr->ramdisk_size = initrd_total;
-
- return status;
-
-free_initrd_total:
- low_free(initrd_total, initrd_addr);
-
-close_handles:
- for (k = j; k < nr_initrds; k++)
- efi_call_phys1(fh->close, initrds[k].handle);
-free_initrds:
- efi_call_phys1(sys_table->boottime->free_pool, initrds);
-fail:
- hdr->ramdisk_image = 0;
- hdr->ramdisk_size = 0;
-
- return status;
-}
-
-/*
- * Because the x86 boot code expects to be passed a boot_params we
- * need to create one ourselves (usually the bootloader would create
- * one for us).
- */
-static efi_status_t make_boot_params(struct boot_params *boot_params,
- efi_loaded_image_t *image,
- void *handle)
-{
- struct efi_info *efi = &boot_params->efi_info;
- struct apm_bios_info *bi = &boot_params->apm_bios_info;
- struct sys_desc_table *sdt = &boot_params->sys_desc_table;
- struct e820entry *e820_map = &boot_params->e820_map[0];
- struct e820entry *prev = NULL;
- struct setup_header *hdr = &boot_params->hdr;
- unsigned long size, key, desc_size, _size;
- efi_memory_desc_t *mem_map;
- void *options = image->load_options;
- u32 load_options_size = image->load_options_size / 2; /* ASCII */
- int options_size = 0;
- efi_status_t status;
- __u32 desc_version;
- unsigned long cmdline;
- u8 nr_entries;
- u16 *s2;
- u8 *s1;
- int i;
-
- hdr->type_of_loader = 0x21;
-
- /* Convert unicode cmdline to ascii */
- cmdline = 0;
- s2 = (u16 *)options;
-
- if (s2) {
- while (*s2 && *s2 != '\n' && options_size < load_options_size) {
- s2++;
- options_size++;
- }
-
- if (options_size) {
- if (options_size > hdr->cmdline_size)
- options_size = hdr->cmdline_size;
-
- options_size++; /* NUL termination */
-
- status = low_alloc(options_size, 1, &cmdline);
- if (status != EFI_SUCCESS)
- goto fail;
-
- s1 = (u8 *)(unsigned long)cmdline;
- s2 = (u16 *)options;
-
- for (i = 0; i < options_size - 1; i++)
- *s1++ = *s2++;
-
- *s1 = '\0';
- }
- }
-
- hdr->cmd_line_ptr = cmdline;
-
- hdr->ramdisk_image = 0;
- hdr->ramdisk_size = 0;
-
- status = handle_ramdisks(image, hdr);
- if (status != EFI_SUCCESS)
- goto free_cmdline;
-
- setup_graphics(boot_params);
-
- /* Clear APM BIOS info */
- memset(bi, 0, sizeof(*bi));
-
- memset(sdt, 0, sizeof(*sdt));
-
- memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32));
-
- size = sizeof(*mem_map) * 32;
-
-again:
- size += sizeof(*mem_map);
- _size = size;
- status = low_alloc(size, 1, (unsigned long *)&mem_map);
- if (status != EFI_SUCCESS)
- goto free_cmdline;
-
- status = efi_call_phys5(sys_table->boottime->get_memory_map, &size,
- mem_map, &key, &desc_size, &desc_version);
- if (status == EFI_BUFFER_TOO_SMALL) {
- low_free(_size, (unsigned long)mem_map);
- goto again;
- }
-
- if (status != EFI_SUCCESS)
- goto free_mem_map;
-
- efi->efi_systab = (unsigned long)sys_table;
- efi->efi_memdesc_size = desc_size;
- efi->efi_memdesc_version = desc_version;
- efi->efi_memmap = (unsigned long)mem_map;
- efi->efi_memmap_size = size;
-
-#ifdef CONFIG_X86_64
- efi->efi_systab_hi = (unsigned long)sys_table >> 32;
- efi->efi_memmap_hi = (unsigned long)mem_map >> 32;
-#endif
-
- /* Might as well exit boot services now */
- status = efi_call_phys2(sys_table->boottime->exit_boot_services,
- handle, key);
- if (status != EFI_SUCCESS)
- goto free_mem_map;
-
- /* Historic? */
- boot_params->alt_mem_k = 32 * 1024;
-
- /*
- * Convert the EFI memory map to E820.
- */
- nr_entries = 0;
- for (i = 0; i < size / desc_size; i++) {
- efi_memory_desc_t *d;
- unsigned int e820_type = 0;
- unsigned long m = (unsigned long)mem_map;
-
- d = (efi_memory_desc_t *)(m + (i * desc_size));
- switch (d->type) {
- case EFI_RESERVED_TYPE:
- case EFI_RUNTIME_SERVICES_CODE:
- case EFI_RUNTIME_SERVICES_DATA:
- case EFI_MEMORY_MAPPED_IO:
- case EFI_MEMORY_MAPPED_IO_PORT_SPACE:
- case EFI_PAL_CODE:
- e820_type = E820_RESERVED;
- break;
-
- case EFI_UNUSABLE_MEMORY:
- e820_type = E820_UNUSABLE;
- break;
-
- case EFI_ACPI_RECLAIM_MEMORY:
- e820_type = E820_ACPI;
- break;
-
- case EFI_LOADER_CODE:
- case EFI_LOADER_DATA:
- case EFI_BOOT_SERVICES_CODE:
- case EFI_BOOT_SERVICES_DATA:
- case EFI_CONVENTIONAL_MEMORY:
- e820_type = E820_RAM;
- break;
-
- case EFI_ACPI_MEMORY_NVS:
- e820_type = E820_NVS;
- break;
-
- default:
- continue;
- }
-
- /* Merge adjacent mappings */
- if (prev && prev->type == e820_type &&
- (prev->addr + prev->size) == d->phys_addr)
- prev->size += d->num_pages << 12;
- else {
- e820_map->addr = d->phys_addr;
- e820_map->size = d->num_pages << 12;
- e820_map->type = e820_type;
- prev = e820_map++;
- nr_entries++;
- }
- }
-
- boot_params->e820_entries = nr_entries;
-
- return EFI_SUCCESS;
-
-free_mem_map:
- low_free(_size, (unsigned long)mem_map);
-free_cmdline:
- if (options_size)
- low_free(options_size, hdr->cmd_line_ptr);
-fail:
- return status;
-}
-
-/*
- * On success we return a pointer to a boot_params structure, and NULL
- * on failure.
- */
-struct boot_params *efi_main(void *handle, efi_system_table_t *_table)
-{
- struct boot_params *boot_params;
- unsigned long start, nr_pages;
- struct desc_ptr *gdt, *idt;
- efi_loaded_image_t *image;
- struct setup_header *hdr;
- efi_status_t status;
- efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID;
- struct desc_struct *desc;
-
- sys_table = _table;
-
- /* Check if we were booted by the EFI firmware */
- if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
- goto fail;
-
- status = efi_call_phys3(sys_table->boottime->handle_protocol,
- handle, &proto, (void *)&image);
- if (status != EFI_SUCCESS)
- goto fail;
-
- status = low_alloc(0x4000, 1, (unsigned long *)&boot_params);
- if (status != EFI_SUCCESS)
- goto fail;
-
- memset(boot_params, 0x0, 0x4000);
-
- /* Copy first two sectors to boot_params */
- memcpy(boot_params, image->image_base, 1024);
-
- hdr = &boot_params->hdr;
-
- /*
- * The EFI firmware loader could have placed the kernel image
- * anywhere in memory, but the kernel has various restrictions
- * on the max physical address it can run at. Attempt to move
- * the kernel to boot_params.pref_address, or as low as
- * possible.
- */
- start = hdr->pref_address;
- nr_pages = round_up(hdr->init_size, EFI_PAGE_SIZE) / EFI_PAGE_SIZE;
-
- status = efi_call_phys4(sys_table->boottime->allocate_pages,
- EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA,
- nr_pages, &start);
- if (status != EFI_SUCCESS) {
- status = low_alloc(hdr->init_size, hdr->kernel_alignment,
- &start);
- if (status != EFI_SUCCESS)
- goto fail;
- }
-
- hdr->code32_start = (__u32)start;
- hdr->pref_address = (__u64)(unsigned long)image->image_base;
-
- memcpy((void *)start, image->image_base, image->image_size);
-
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA, sizeof(*gdt),
- (void **)&gdt);
- if (status != EFI_SUCCESS)
- goto fail;
-
- gdt->size = 0x800;
- status = low_alloc(gdt->size, 8, (unsigned long *)&gdt->address);
- if (status != EFI_SUCCESS)
- goto fail;
-
- status = efi_call_phys3(sys_table->boottime->allocate_pool,
- EFI_LOADER_DATA, sizeof(*idt),
- (void **)&idt);
- if (status != EFI_SUCCESS)
- goto fail;
-
- idt->size = 0;
- idt->address = 0;
-
- status = make_boot_params(boot_params, image, handle);
- if (status != EFI_SUCCESS)
- goto fail;
-
- memset((char *)gdt->address, 0x0, gdt->size);
- desc = (struct desc_struct *)gdt->address;
-
- /* The first GDT is a dummy and the second is unused. */
- desc += 2;
-
- desc->limit0 = 0xffff;
- desc->base0 = 0x0000;
- desc->base1 = 0x0000;
- desc->type = SEG_TYPE_CODE | SEG_TYPE_EXEC_READ;
- desc->s = DESC_TYPE_CODE_DATA;
- desc->dpl = 0;
- desc->p = 1;
- desc->limit = 0xf;
- desc->avl = 0;
- desc->l = 0;
- desc->d = SEG_OP_SIZE_32BIT;
- desc->g = SEG_GRANULARITY_4KB;
- desc->base2 = 0x00;
-
- desc++;
- desc->limit0 = 0xffff;
- desc->base0 = 0x0000;
- desc->base1 = 0x0000;
- desc->type = SEG_TYPE_DATA | SEG_TYPE_READ_WRITE;
- desc->s = DESC_TYPE_CODE_DATA;
- desc->dpl = 0;
- desc->p = 1;
- desc->limit = 0xf;
- desc->avl = 0;
- desc->l = 0;
- desc->d = SEG_OP_SIZE_32BIT;
- desc->g = SEG_GRANULARITY_4KB;
- desc->base2 = 0x00;
-
-#ifdef CONFIG_X86_64
- /* Task segment value */
- desc++;
- desc->limit0 = 0x0000;
- desc->base0 = 0x0000;
- desc->base1 = 0x0000;
- desc->type = SEG_TYPE_TSS;
- desc->s = 0;
- desc->dpl = 0;
- desc->p = 1;
- desc->limit = 0x0;
- desc->avl = 0;
- desc->l = 0;
- desc->d = 0;
- desc->g = SEG_GRANULARITY_4KB;
- desc->base2 = 0x00;
-#endif /* CONFIG_X86_64 */
-
- asm volatile ("lidt %0" : : "m" (*idt));
- asm volatile ("lgdt %0" : : "m" (*gdt));
-
- asm volatile("cli");
-
- return boot_params;
-fail:
- return NULL;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/eboot.h b/ANDROID_3.4.5/arch/x86/boot/compressed/eboot.h
deleted file mode 100644
index 39251663..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/eboot.h
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef BOOT_COMPRESSED_EBOOT_H
-#define BOOT_COMPRESSED_EBOOT_H
-
-#define SEG_TYPE_DATA (0 << 3)
-#define SEG_TYPE_READ_WRITE (1 << 1)
-#define SEG_TYPE_CODE (1 << 3)
-#define SEG_TYPE_EXEC_READ (1 << 1)
-#define SEG_TYPE_TSS ((1 << 3) | (1 << 0))
-#define SEG_OP_SIZE_32BIT (1 << 0)
-#define SEG_GRANULARITY_4KB (1 << 0)
-
-#define DESC_TYPE_CODE_DATA (1 << 0)
-
-#define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT)
-#define EFI_READ_CHUNK_SIZE (1024 * 1024)
-
-#define PIXEL_RGB_RESERVED_8BIT_PER_COLOR 0
-#define PIXEL_BGR_RESERVED_8BIT_PER_COLOR 1
-#define PIXEL_BIT_MASK 2
-#define PIXEL_BLT_ONLY 3
-#define PIXEL_FORMAT_MAX 4
-
-struct efi_pixel_bitmask {
- u32 red_mask;
- u32 green_mask;
- u32 blue_mask;
- u32 reserved_mask;
-};
-
-struct efi_graphics_output_mode_info {
- u32 version;
- u32 horizontal_resolution;
- u32 vertical_resolution;
- int pixel_format;
- struct efi_pixel_bitmask pixel_information;
- u32 pixels_per_scan_line;
-} __packed;
-
-struct efi_graphics_output_protocol_mode {
- u32 max_mode;
- u32 mode;
- unsigned long info;
- unsigned long size_of_info;
- u64 frame_buffer_base;
- unsigned long frame_buffer_size;
-} __packed;
-
-struct efi_graphics_output_protocol {
- void *query_mode;
- unsigned long set_mode;
- unsigned long blt;
- struct efi_graphics_output_protocol_mode *mode;
-};
-
-struct efi_uga_draw_protocol {
- void *get_mode;
- void *set_mode;
- void *blt;
-};
-
-#endif /* BOOT_COMPRESSED_EBOOT_H */
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_32.S b/ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_32.S
deleted file mode 100644
index a53440e8..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_32.S
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * EFI call stub for IA32.
- *
- * This stub allows us to make EFI calls in physical mode with interrupts
- * turned off. Note that this implementation is different from the one in
- * arch/x86/platform/efi/efi_stub_32.S because we're _already_ in physical
- * mode at this point.
- */
-
-#include <linux/linkage.h>
-#include <asm/page_types.h>
-
-/*
- * efi_call_phys(void *, ...) is a function with variable parameters.
- * All the callers of this function assure that all the parameters are 4-bytes.
- */
-
-/*
- * In gcc calling convention, EBX, ESP, EBP, ESI and EDI are all callee save.
- * So we'd better save all of them at the beginning of this function and restore
- * at the end no matter how many we use, because we can not assure EFI runtime
- * service functions will comply with gcc calling convention, too.
- */
-
-.text
-ENTRY(efi_call_phys)
- /*
- * 0. The function can only be called in Linux kernel. So CS has been
- * set to 0x0010, DS and SS have been set to 0x0018. In EFI, I found
- * the values of these registers are the same. And, the corresponding
- * GDT entries are identical. So I will do nothing about segment reg
- * and GDT, but change GDT base register in prelog and epilog.
- */
-
- /*
- * 1. Because we haven't been relocated by this point we need to
- * use relative addressing.
- */
- call 1f
-1: popl %edx
- subl $1b, %edx
-
- /*
- * 2. Now on the top of stack is the return
- * address in the caller of efi_call_phys(), then parameter 1,
- * parameter 2, ..., param n. To make things easy, we save the return
- * address of efi_call_phys in a global variable.
- */
- popl %ecx
- movl %ecx, saved_return_addr(%edx)
- /* get the function pointer into ECX*/
- popl %ecx
- movl %ecx, efi_rt_function_ptr(%edx)
-
- /*
- * 3. Call the physical function.
- */
- call *%ecx
-
- /*
- * 4. Balance the stack. And because EAX contain the return value,
- * we'd better not clobber it. We need to calculate our address
- * again because %ecx and %edx are not preserved across EFI function
- * calls.
- */
- call 1f
-1: popl %edx
- subl $1b, %edx
-
- movl efi_rt_function_ptr(%edx), %ecx
- pushl %ecx
-
- /*
- * 10. Push the saved return address onto the stack and return.
- */
- movl saved_return_addr(%edx), %ecx
- pushl %ecx
- ret
-ENDPROC(efi_call_phys)
-.previous
-
-.data
-saved_return_addr:
- .long 0
-efi_rt_function_ptr:
- .long 0
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_64.S b/ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_64.S
deleted file mode 100644
index cedc60de..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/efi_stub_64.S
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../platform/efi/efi_stub_64.S"
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/head_32.S b/ANDROID_3.4.5/arch/x86/boot/compressed/head_32.S
deleted file mode 100644
index c85e3ac9..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/head_32.S
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * linux/boot/head.S
- *
- * Copyright (C) 1991, 1992, 1993 Linus Torvalds
- */
-
-/*
- * head.S contains the 32-bit startup code.
- *
- * NOTE!!! Startup happens at absolute address 0x00001000, which is also where
- * the page directory will exist. The startup code will be overwritten by
- * the page directory. [According to comments etc elsewhere on a compressed
- * kernel it will end up at 0x1000 + 1Mb I hope so as I assume this. - AC]
- *
- * Page 0 is deliberately kept safe, since System Management Mode code in
- * laptops may need to access the BIOS data stored there. This is also
- * useful for future device drivers that either access the BIOS via VM86
- * mode.
- */
-
-/*
- * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
- */
- .text
-
-#include <linux/init.h>
-#include <linux/linkage.h>
-#include <asm/segment.h>
-#include <asm/page_types.h>
-#include <asm/boot.h>
-#include <asm/asm-offsets.h>
-
- __HEAD
-ENTRY(startup_32)
-#ifdef CONFIG_EFI_STUB
- jmp preferred_addr
-
- .balign 0x10
- /*
- * We don't need the return address, so set up the stack so
- * efi_main() can find its arugments.
- */
- add $0x4, %esp
-
- call efi_main
- cmpl $0, %eax
- movl %eax, %esi
- jne 2f
-1:
- /* EFI init failed, so hang. */
- hlt
- jmp 1b
-2:
- call 3f
-3:
- popl %eax
- subl $3b, %eax
- subl BP_pref_address(%esi), %eax
- add BP_code32_start(%esi), %eax
- leal preferred_addr(%eax), %eax
- jmp *%eax
-
-preferred_addr:
-#endif
- cld
- /*
- * Test KEEP_SEGMENTS flag to see if the bootloader is asking
- * us to not reload segments
- */
- testb $(1<<6), BP_loadflags(%esi)
- jnz 1f
-
- cli
- movl $__BOOT_DS, %eax
- movl %eax, %ds
- movl %eax, %es
- movl %eax, %fs
- movl %eax, %gs
- movl %eax, %ss
-1:
-
-/*
- * Calculate the delta between where we were compiled to run
- * at and where we were actually loaded at. This can only be done
- * with a short local call on x86. Nothing else will tell us what
- * address we are running at. The reserved chunk of the real-mode
- * data at 0x1e4 (defined as a scratch field) are used as the stack
- * for this calculation. Only 4 bytes are needed.
- */
- leal (BP_scratch+4)(%esi), %esp
- call 1f
-1: popl %ebp
- subl $1b, %ebp
-
-/*
- * %ebp contains the address we are loaded at by the boot loader and %ebx
- * contains the address where we should move the kernel image temporarily
- * for safe in-place decompression.
- */
-
-#ifdef CONFIG_RELOCATABLE
- movl %ebp, %ebx
- movl BP_kernel_alignment(%esi), %eax
- decl %eax
- addl %eax, %ebx
- notl %eax
- andl %eax, %ebx
-#else
- movl $LOAD_PHYSICAL_ADDR, %ebx
-#endif
-
- /* Target address to relocate to for decompression */
- addl $z_extract_offset, %ebx
-
- /* Set up the stack */
- leal boot_stack_end(%ebx), %esp
-
- /* Zero EFLAGS */
- pushl $0
- popfl
-
-/*
- * Copy the compressed kernel to the end of our buffer
- * where decompression in place becomes safe.
- */
- pushl %esi
- leal (_bss-4)(%ebp), %esi
- leal (_bss-4)(%ebx), %edi
- movl $(_bss - startup_32), %ecx
- shrl $2, %ecx
- std
- rep movsl
- cld
- popl %esi
-
-/*
- * Jump to the relocated address.
- */
- leal relocated(%ebx), %eax
- jmp *%eax
-ENDPROC(startup_32)
-
- .text
-relocated:
-
-/*
- * Clear BSS (stack is currently empty)
- */
- xorl %eax, %eax
- leal _bss(%ebx), %edi
- leal _ebss(%ebx), %ecx
- subl %edi, %ecx
- shrl $2, %ecx
- rep stosl
-
-/*
- * Adjust our own GOT
- */
- leal _got(%ebx), %edx
- leal _egot(%ebx), %ecx
-1:
- cmpl %ecx, %edx
- jae 2f
- addl %ebx, (%edx)
- addl $4, %edx
- jmp 1b
-2:
-
-/*
- * Do the decompression, and jump to the new kernel..
- */
- leal z_extract_offset_negative(%ebx), %ebp
- /* push arguments for decompress_kernel: */
- pushl %ebp /* output address */
- pushl $z_input_len /* input_len */
- leal input_data(%ebx), %eax
- pushl %eax /* input_data */
- leal boot_heap(%ebx), %eax
- pushl %eax /* heap area */
- pushl %esi /* real mode pointer */
- call decompress_kernel
- addl $20, %esp
-
-#if CONFIG_RELOCATABLE
-/*
- * Find the address of the relocations.
- */
- leal z_output_len(%ebp), %edi
-
-/*
- * Calculate the delta between where vmlinux was compiled to run
- * and where it was actually loaded.
- */
- movl %ebp, %ebx
- subl $LOAD_PHYSICAL_ADDR, %ebx
- jz 2f /* Nothing to be done if loaded at compiled addr. */
-/*
- * Process relocations.
- */
-
-1: subl $4, %edi
- movl (%edi), %ecx
- testl %ecx, %ecx
- jz 2f
- addl %ebx, -__PAGE_OFFSET(%ebx, %ecx)
- jmp 1b
-2:
-#endif
-
-/*
- * Jump to the decompressed kernel.
- */
- xorl %ebx, %ebx
- jmp *%ebp
-
-/*
- * Stack and heap for uncompression
- */
- .bss
- .balign 4
-boot_heap:
- .fill BOOT_HEAP_SIZE, 1, 0
-boot_stack:
- .fill BOOT_STACK_SIZE, 1, 0
-boot_stack_end:
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/head_64.S b/ANDROID_3.4.5/arch/x86/boot/compressed/head_64.S
deleted file mode 100644
index 87e03a13..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/head_64.S
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * linux/boot/head.S
- *
- * Copyright (C) 1991, 1992, 1993 Linus Torvalds
- */
-
-/*
- * head.S contains the 32-bit startup code.
- *
- * NOTE!!! Startup happens at absolute address 0x00001000, which is also where
- * the page directory will exist. The startup code will be overwritten by
- * the page directory. [According to comments etc elsewhere on a compressed
- * kernel it will end up at 0x1000 + 1Mb I hope so as I assume this. - AC]
- *
- * Page 0 is deliberately kept safe, since System Management Mode code in
- * laptops may need to access the BIOS data stored there. This is also
- * useful for future device drivers that either access the BIOS via VM86
- * mode.
- */
-
-/*
- * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
- */
- .code32
- .text
-
-#include <linux/init.h>
-#include <linux/linkage.h>
-#include <asm/segment.h>
-#include <asm/pgtable_types.h>
-#include <asm/page_types.h>
-#include <asm/boot.h>
-#include <asm/msr.h>
-#include <asm/processor-flags.h>
-#include <asm/asm-offsets.h>
-
- __HEAD
- .code32
-ENTRY(startup_32)
- cld
- /*
- * Test KEEP_SEGMENTS flag to see if the bootloader is asking
- * us to not reload segments
- */
- testb $(1<<6), BP_loadflags(%esi)
- jnz 1f
-
- cli
- movl $(__KERNEL_DS), %eax
- movl %eax, %ds
- movl %eax, %es
- movl %eax, %ss
-1:
-
-/*
- * Calculate the delta between where we were compiled to run
- * at and where we were actually loaded at. This can only be done
- * with a short local call on x86. Nothing else will tell us what
- * address we are running at. The reserved chunk of the real-mode
- * data at 0x1e4 (defined as a scratch field) are used as the stack
- * for this calculation. Only 4 bytes are needed.
- */
- leal (BP_scratch+4)(%esi), %esp
- call 1f
-1: popl %ebp
- subl $1b, %ebp
-
-/* setup a stack and make sure cpu supports long mode. */
- movl $boot_stack_end, %eax
- addl %ebp, %eax
- movl %eax, %esp
-
- call verify_cpu
- testl %eax, %eax
- jnz no_longmode
-
-/*
- * Compute the delta between where we were compiled to run at
- * and where the code will actually run at.
- *
- * %ebp contains the address we are loaded at by the boot loader and %ebx
- * contains the address where we should move the kernel image temporarily
- * for safe in-place decompression.
- */
-
-#ifdef CONFIG_RELOCATABLE
- movl %ebp, %ebx
- movl BP_kernel_alignment(%esi), %eax
- decl %eax
- addl %eax, %ebx
- notl %eax
- andl %eax, %ebx
-#else
- movl $LOAD_PHYSICAL_ADDR, %ebx
-#endif
-
- /* Target address to relocate to for decompression */
- addl $z_extract_offset, %ebx
-
-/*
- * Prepare for entering 64 bit mode
- */
-
- /* Load new GDT with the 64bit segments using 32bit descriptor */
- leal gdt(%ebp), %eax
- movl %eax, gdt+2(%ebp)
- lgdt gdt(%ebp)
-
- /* Enable PAE mode */
- movl $(X86_CR4_PAE), %eax
- movl %eax, %cr4
-
- /*
- * Build early 4G boot pagetable
- */
- /* Initialize Page tables to 0 */
- leal pgtable(%ebx), %edi
- xorl %eax, %eax
- movl $((4096*6)/4), %ecx
- rep stosl
-
- /* Build Level 4 */
- leal pgtable + 0(%ebx), %edi
- leal 0x1007 (%edi), %eax
- movl %eax, 0(%edi)
-
- /* Build Level 3 */
- leal pgtable + 0x1000(%ebx), %edi
- leal 0x1007(%edi), %eax
- movl $4, %ecx
-1: movl %eax, 0x00(%edi)
- addl $0x00001000, %eax
- addl $8, %edi
- decl %ecx
- jnz 1b
-
- /* Build Level 2 */
- leal pgtable + 0x2000(%ebx), %edi
- movl $0x00000183, %eax
- movl $2048, %ecx
-1: movl %eax, 0(%edi)
- addl $0x00200000, %eax
- addl $8, %edi
- decl %ecx
- jnz 1b
-
- /* Enable the boot page tables */
- leal pgtable(%ebx), %eax
- movl %eax, %cr3
-
- /* Enable Long mode in EFER (Extended Feature Enable Register) */
- movl $MSR_EFER, %ecx
- rdmsr
- btsl $_EFER_LME, %eax
- wrmsr
-
- /*
- * Setup for the jump to 64bit mode
- *
- * When the jump is performend we will be in long mode but
- * in 32bit compatibility mode with EFER.LME = 1, CS.L = 0, CS.D = 1
- * (and in turn EFER.LMA = 1). To jump into 64bit mode we use
- * the new gdt/idt that has __KERNEL_CS with CS.L = 1.
- * We place all of the values on our mini stack so lret can
- * used to perform that far jump.
- */
- pushl $__KERNEL_CS
- leal startup_64(%ebp), %eax
- pushl %eax
-
- /* Enter paged protected Mode, activating Long Mode */
- movl $(X86_CR0_PG | X86_CR0_PE), %eax /* Enable Paging and Protected mode */
- movl %eax, %cr0
-
- /* Jump from 32bit compatibility mode into 64bit mode. */
- lret
-ENDPROC(startup_32)
-
-no_longmode:
- /* This isn't an x86-64 CPU so hang */
-1:
- hlt
- jmp 1b
-
-#include "../../kernel/verify_cpu.S"
-
- /*
- * Be careful here startup_64 needs to be at a predictable
- * address so I can export it in an ELF header. Bootloaders
- * should look at the ELF header to find this address, as
- * it may change in the future.
- */
- .code64
- .org 0x200
-ENTRY(startup_64)
- /*
- * We come here either from startup_32 or directly from a
- * 64bit bootloader. If we come here from a bootloader we depend on
- * an identity mapped page table being provied that maps our
- * entire text+data+bss and hopefully all of memory.
- */
-#ifdef CONFIG_EFI_STUB
- /*
- * The entry point for the PE/COFF executable is 0x210, so only
- * legacy boot loaders will execute this jmp.
- */
- jmp preferred_addr
-
- .org 0x210
- mov %rcx, %rdi
- mov %rdx, %rsi
- call efi_main
- movq %rax,%rsi
- cmpq $0,%rax
- jne 2f
-1:
- /* EFI init failed, so hang. */
- hlt
- jmp 1b
-2:
- call 3f
-3:
- popq %rax
- subq $3b, %rax
- subq BP_pref_address(%rsi), %rax
- add BP_code32_start(%esi), %eax
- leaq preferred_addr(%rax), %rax
- jmp *%rax
-
-preferred_addr:
-#endif
-
- /* Setup data segments. */
- xorl %eax, %eax
- movl %eax, %ds
- movl %eax, %es
- movl %eax, %ss
- movl %eax, %fs
- movl %eax, %gs
- lldt %ax
- movl $0x20, %eax
- ltr %ax
-
- /*
- * Compute the decompressed kernel start address. It is where
- * we were loaded at aligned to a 2M boundary. %rbp contains the
- * decompressed kernel start address.
- *
- * If it is a relocatable kernel then decompress and run the kernel
- * from load address aligned to 2MB addr, otherwise decompress and
- * run the kernel from LOAD_PHYSICAL_ADDR
- *
- * We cannot rely on the calculation done in 32-bit mode, since we
- * may have been invoked via the 64-bit entry point.
- */
-
- /* Start with the delta to where the kernel will run at. */
-#ifdef CONFIG_RELOCATABLE
- leaq startup_32(%rip) /* - $startup_32 */, %rbp
- movl BP_kernel_alignment(%rsi), %eax
- decl %eax
- addq %rax, %rbp
- notq %rax
- andq %rax, %rbp
-#else
- movq $LOAD_PHYSICAL_ADDR, %rbp
-#endif
-
- /* Target address to relocate to for decompression */
- leaq z_extract_offset(%rbp), %rbx
-
- /* Set up the stack */
- leaq boot_stack_end(%rbx), %rsp
-
- /* Zero EFLAGS */
- pushq $0
- popfq
-
-/*
- * Copy the compressed kernel to the end of our buffer
- * where decompression in place becomes safe.
- */
- pushq %rsi
- leaq (_bss-8)(%rip), %rsi
- leaq (_bss-8)(%rbx), %rdi
- movq $_bss /* - $startup_32 */, %rcx
- shrq $3, %rcx
- std
- rep movsq
- cld
- popq %rsi
-
-/*
- * Jump to the relocated address.
- */
- leaq relocated(%rbx), %rax
- jmp *%rax
-
- .text
-relocated:
-
-/*
- * Clear BSS (stack is currently empty)
- */
- xorl %eax, %eax
- leaq _bss(%rip), %rdi
- leaq _ebss(%rip), %rcx
- subq %rdi, %rcx
- shrq $3, %rcx
- rep stosq
-
-/*
- * Adjust our own GOT
- */
- leaq _got(%rip), %rdx
- leaq _egot(%rip), %rcx
-1:
- cmpq %rcx, %rdx
- jae 2f
- addq %rbx, (%rdx)
- addq $8, %rdx
- jmp 1b
-2:
-
-/*
- * Do the decompression, and jump to the new kernel..
- */
- pushq %rsi /* Save the real mode argument */
- movq %rsi, %rdi /* real mode address */
- leaq boot_heap(%rip), %rsi /* malloc area for uncompression */
- leaq input_data(%rip), %rdx /* input_data */
- movl $z_input_len, %ecx /* input_len */
- movq %rbp, %r8 /* output target address */
- call decompress_kernel
- popq %rsi
-
-/*
- * Jump to the decompressed kernel.
- */
- jmp *%rbp
-
- .data
-gdt:
- .word gdt_end - gdt
- .long gdt
- .word 0
- .quad 0x0000000000000000 /* NULL descriptor */
- .quad 0x00af9a000000ffff /* __KERNEL_CS */
- .quad 0x00cf92000000ffff /* __KERNEL_DS */
- .quad 0x0080890000000000 /* TS descriptor */
- .quad 0x0000000000000000 /* TS continued */
-gdt_end:
-
-/*
- * Stack and heap for uncompression
- */
- .bss
- .balign 4
-boot_heap:
- .fill BOOT_HEAP_SIZE, 1, 0
-boot_stack:
- .fill BOOT_STACK_SIZE, 1, 0
-boot_stack_end:
-
-/*
- * Space for page tables (not in .bss so not zeroed)
- */
- .section ".pgtable","a",@nobits
- .balign 4096
-pgtable:
- .fill 6*4096, 1, 0
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/misc.c b/ANDROID_3.4.5/arch/x86/boot/compressed/misc.c
deleted file mode 100644
index 7116dcba..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/misc.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- * misc.c
- *
- * This is a collection of several routines from gzip-1.0.3
- * adapted for Linux.
- *
- * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
- * puts by Nick Holloway 1993, better puts by Martin Mares 1995
- * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
- */
-
-#include "misc.h"
-
-/* WARNING!!
- * This code is compiled with -fPIC and it is relocated dynamically
- * at run time, but no relocation processing is performed.
- * This means that it is not safe to place pointers in static structures.
- */
-
-/*
- * Getting to provable safe in place decompression is hard.
- * Worst case behaviours need to be analyzed.
- * Background information:
- *
- * The file layout is:
- * magic[2]
- * method[1]
- * flags[1]
- * timestamp[4]
- * extraflags[1]
- * os[1]
- * compressed data blocks[N]
- * crc[4] orig_len[4]
- *
- * resulting in 18 bytes of non compressed data overhead.
- *
- * Files divided into blocks
- * 1 bit (last block flag)
- * 2 bits (block type)
- *
- * 1 block occurs every 32K -1 bytes or when there 50% compression
- * has been achieved. The smallest block type encoding is always used.
- *
- * stored:
- * 32 bits length in bytes.
- *
- * fixed:
- * magic fixed tree.
- * symbols.
- *
- * dynamic:
- * dynamic tree encoding.
- * symbols.
- *
- *
- * The buffer for decompression in place is the length of the
- * uncompressed data, plus a small amount extra to keep the algorithm safe.
- * The compressed data is placed at the end of the buffer. The output
- * pointer is placed at the start of the buffer and the input pointer
- * is placed where the compressed data starts. Problems will occur
- * when the output pointer overruns the input pointer.
- *
- * The output pointer can only overrun the input pointer if the input
- * pointer is moving faster than the output pointer. A condition only
- * triggered by data whose compressed form is larger than the uncompressed
- * form.
- *
- * The worst case at the block level is a growth of the compressed data
- * of 5 bytes per 32767 bytes.
- *
- * The worst case internal to a compressed block is very hard to figure.
- * The worst case can at least be boundined by having one bit that represents
- * 32764 bytes and then all of the rest of the bytes representing the very
- * very last byte.
- *
- * All of which is enough to compute an amount of extra data that is required
- * to be safe. To avoid problems at the block level allocating 5 extra bytes
- * per 32767 bytes of data is sufficient. To avoind problems internal to a
- * block adding an extra 32767 bytes (the worst case uncompressed block size)
- * is sufficient, to ensure that in the worst case the decompressed data for
- * block will stop the byte before the compressed data for a block begins.
- * To avoid problems with the compressed data's meta information an extra 18
- * bytes are needed. Leading to the formula:
- *
- * extra_bytes = (uncompressed_size >> 12) + 32768 + 18 + decompressor_size.
- *
- * Adding 8 bytes per 32K is a bit excessive but much easier to calculate.
- * Adding 32768 instead of 32767 just makes for round numbers.
- * Adding the decompressor_size is necessary as it musht live after all
- * of the data as well. Last I measured the decompressor is about 14K.
- * 10K of actual data and 4K of bss.
- *
- */
-
-/*
- * gzip declarations
- */
-#define STATIC static
-
-#undef memset
-#undef memcpy
-#define memzero(s, n) memset((s), 0, (n))
-
-
-static void error(char *m);
-
-/*
- * This is set up by the setup-routine at boot-time
- */
-struct boot_params *real_mode; /* Pointer to real-mode data */
-static int quiet;
-static int debug;
-
-void *memset(void *s, int c, size_t n);
-void *memcpy(void *dest, const void *src, size_t n);
-
-#ifdef CONFIG_X86_64
-#define memptr long
-#else
-#define memptr unsigned
-#endif
-
-static memptr free_mem_ptr;
-static memptr free_mem_end_ptr;
-
-static char *vidmem;
-static int vidport;
-static int lines, cols;
-
-#ifdef CONFIG_KERNEL_GZIP
-#include "../../../../lib/decompress_inflate.c"
-#endif
-
-#ifdef CONFIG_KERNEL_BZIP2
-#include "../../../../lib/decompress_bunzip2.c"
-#endif
-
-#ifdef CONFIG_KERNEL_LZMA
-#include "../../../../lib/decompress_unlzma.c"
-#endif
-
-#ifdef CONFIG_KERNEL_XZ
-#include "../../../../lib/decompress_unxz.c"
-#endif
-
-#ifdef CONFIG_KERNEL_LZO
-#include "../../../../lib/decompress_unlzo.c"
-#endif
-
-static void scroll(void)
-{
- int i;
-
- memcpy(vidmem, vidmem + cols * 2, (lines - 1) * cols * 2);
- for (i = (lines - 1) * cols * 2; i < lines * cols * 2; i += 2)
- vidmem[i] = ' ';
-}
-
-#define XMTRDY 0x20
-
-#define TXR 0 /* Transmit register (WRITE) */
-#define LSR 5 /* Line Status */
-static void serial_putchar(int ch)
-{
- unsigned timeout = 0xffff;
-
- while ((inb(early_serial_base + LSR) & XMTRDY) == 0 && --timeout)
- cpu_relax();
-
- outb(ch, early_serial_base + TXR);
-}
-
-void __putstr(int error, const char *s)
-{
- int x, y, pos;
- char c;
-
-#ifndef CONFIG_X86_VERBOSE_BOOTUP
- if (!error)
- return;
-#endif
- if (early_serial_base) {
- const char *str = s;
- while (*str) {
- if (*str == '\n')
- serial_putchar('\r');
- serial_putchar(*str++);
- }
- }
-
- if (real_mode->screen_info.orig_video_mode == 0 &&
- lines == 0 && cols == 0)
- return;
-
- x = real_mode->screen_info.orig_x;
- y = real_mode->screen_info.orig_y;
-
- while ((c = *s++) != '\0') {
- if (c == '\n') {
- x = 0;
- if (++y >= lines) {
- scroll();
- y--;
- }
- } else {
- vidmem[(x + cols * y) * 2] = c;
- if (++x >= cols) {
- x = 0;
- if (++y >= lines) {
- scroll();
- y--;
- }
- }
- }
- }
-
- real_mode->screen_info.orig_x = x;
- real_mode->screen_info.orig_y = y;
-
- pos = (x + cols * y) * 2; /* Update cursor position */
- outb(14, vidport);
- outb(0xff & (pos >> 9), vidport+1);
- outb(15, vidport);
- outb(0xff & (pos >> 1), vidport+1);
-}
-
-void *memset(void *s, int c, size_t n)
-{
- int i;
- char *ss = s;
-
- for (i = 0; i < n; i++)
- ss[i] = c;
- return s;
-}
-#ifdef CONFIG_X86_32
-void *memcpy(void *dest, const void *src, size_t n)
-{
- int d0, d1, d2;
- asm volatile(
- "rep ; movsl\n\t"
- "movl %4,%%ecx\n\t"
- "rep ; movsb\n\t"
- : "=&c" (d0), "=&D" (d1), "=&S" (d2)
- : "0" (n >> 2), "g" (n & 3), "1" (dest), "2" (src)
- : "memory");
-
- return dest;
-}
-#else
-void *memcpy(void *dest, const void *src, size_t n)
-{
- long d0, d1, d2;
- asm volatile(
- "rep ; movsq\n\t"
- "movq %4,%%rcx\n\t"
- "rep ; movsb\n\t"
- : "=&c" (d0), "=&D" (d1), "=&S" (d2)
- : "0" (n >> 3), "g" (n & 7), "1" (dest), "2" (src)
- : "memory");
-
- return dest;
-}
-#endif
-
-static void error(char *x)
-{
- __putstr(1, "\n\n");
- __putstr(1, x);
- __putstr(1, "\n\n -- System halted");
-
- while (1)
- asm("hlt");
-}
-
-static void parse_elf(void *output)
-{
-#ifdef CONFIG_X86_64
- Elf64_Ehdr ehdr;
- Elf64_Phdr *phdrs, *phdr;
-#else
- Elf32_Ehdr ehdr;
- Elf32_Phdr *phdrs, *phdr;
-#endif
- void *dest;
- int i;
-
- memcpy(&ehdr, output, sizeof(ehdr));
- if (ehdr.e_ident[EI_MAG0] != ELFMAG0 ||
- ehdr.e_ident[EI_MAG1] != ELFMAG1 ||
- ehdr.e_ident[EI_MAG2] != ELFMAG2 ||
- ehdr.e_ident[EI_MAG3] != ELFMAG3) {
- error("Kernel is not a valid ELF file");
- return;
- }
-
- if (!quiet)
- putstr("Parsing ELF... ");
-
- phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum);
- if (!phdrs)
- error("Failed to allocate space for phdrs");
-
- memcpy(phdrs, output + ehdr.e_phoff, sizeof(*phdrs) * ehdr.e_phnum);
-
- for (i = 0; i < ehdr.e_phnum; i++) {
- phdr = &phdrs[i];
-
- switch (phdr->p_type) {
- case PT_LOAD:
-#ifdef CONFIG_RELOCATABLE
- dest = output;
- dest += (phdr->p_paddr - LOAD_PHYSICAL_ADDR);
-#else
- dest = (void *)(phdr->p_paddr);
-#endif
- memcpy(dest,
- output + phdr->p_offset,
- phdr->p_filesz);
- break;
- default: /* Ignore other PT_* */ break;
- }
- }
-
- free(phdrs);
-}
-
-asmlinkage void decompress_kernel(void *rmode, memptr heap,
- unsigned char *input_data,
- unsigned long input_len,
- unsigned char *output)
-{
- real_mode = rmode;
-
- if (cmdline_find_option_bool("quiet"))
- quiet = 1;
- if (cmdline_find_option_bool("debug"))
- debug = 1;
-
- if (real_mode->screen_info.orig_video_mode == 7) {
- vidmem = (char *) 0xb0000;
- vidport = 0x3b4;
- } else {
- vidmem = (char *) 0xb8000;
- vidport = 0x3d4;
- }
-
- lines = real_mode->screen_info.orig_video_lines;
- cols = real_mode->screen_info.orig_video_cols;
-
- console_init();
- if (debug)
- putstr("early console in decompress_kernel\n");
-
- free_mem_ptr = heap; /* Heap */
- free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
-
- if ((unsigned long)output & (MIN_KERNEL_ALIGN - 1))
- error("Destination address inappropriately aligned");
-#ifdef CONFIG_X86_64
- if (heap > 0x3fffffffffffUL)
- error("Destination address too large");
-#else
- if (heap > ((-__PAGE_OFFSET-(128<<20)-1) & 0x7fffffff))
- error("Destination address too large");
-#endif
-#ifndef CONFIG_RELOCATABLE
- if ((unsigned long)output != LOAD_PHYSICAL_ADDR)
- error("Wrong destination address");
-#endif
-
- if (!quiet)
- putstr("\nDecompressing Linux... ");
- decompress(input_data, input_len, NULL, NULL, output, NULL, error);
- parse_elf(output);
- if (!quiet)
- putstr("done.\nBooting the kernel.\n");
- return;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/misc.h b/ANDROID_3.4.5/arch/x86/boot/compressed/misc.h
deleted file mode 100644
index 3f19c81a..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/misc.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef BOOT_COMPRESSED_MISC_H
-#define BOOT_COMPRESSED_MISC_H
-
-/*
- * we have to be careful, because no indirections are allowed here, and
- * paravirt_ops is a kind of one. As it will only run in baremetal anyway,
- * we just keep it from happening
- */
-#undef CONFIG_PARAVIRT
-#ifdef CONFIG_X86_32
-#define _ASM_X86_DESC_H 1
-#endif
-
-#include <linux/linkage.h>
-#include <linux/screen_info.h>
-#include <linux/elf.h>
-#include <linux/io.h>
-#include <asm/page.h>
-#include <asm/boot.h>
-#include <asm/bootparam.h>
-
-#define BOOT_BOOT_H
-#include "../ctype.h"
-
-/* misc.c */
-extern struct boot_params *real_mode; /* Pointer to real-mode data */
-void __putstr(int error, const char *s);
-#define putstr(__x) __putstr(0, __x)
-#define puts(__x) __putstr(0, __x)
-
-/* cmdline.c */
-int cmdline_find_option(const char *option, char *buffer, int bufsize);
-int cmdline_find_option_bool(const char *option);
-
-/* early_serial_console.c */
-extern int early_serial_base;
-void console_init(void);
-
-#endif
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/mkpiggy.c b/ANDROID_3.4.5/arch/x86/boot/compressed/mkpiggy.c
deleted file mode 100644
index 958a6414..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/mkpiggy.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* ----------------------------------------------------------------------- *
- *
- * Copyright (C) 2009 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License version
- * 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- * H. Peter Anvin <hpa@linux.intel.com>
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Compute the desired load offset from a compressed program; outputs
- * a small assembly wrapper with the appropriate symbols defined.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <inttypes.h>
-#include <tools/le_byteshift.h>
-
-int main(int argc, char *argv[])
-{
- uint32_t olen;
- long ilen;
- unsigned long offs;
- FILE *f;
-
- if (argc < 2) {
- fprintf(stderr, "Usage: %s compressed_file\n", argv[0]);
- return 1;
- }
-
- /* Get the information for the compressed kernel image first */
-
- f = fopen(argv[1], "r");
- if (!f) {
- perror(argv[1]);
- return 1;
- }
-
-
- if (fseek(f, -4L, SEEK_END)) {
- perror(argv[1]);
- }
-
- if (fread(&olen, sizeof(olen), 1, f) != 1) {
- perror(argv[1]);
- return 1;
- }
-
- ilen = ftell(f);
- olen = get_unaligned_le32(&olen);
- fclose(f);
-
- /*
- * Now we have the input (compressed) and output (uncompressed)
- * sizes, compute the necessary decompression offset...
- */
-
- offs = (olen > ilen) ? olen - ilen : 0;
- offs += olen >> 12; /* Add 8 bytes for each 32K block */
- offs += 64*1024 + 128; /* Add 64K + 128 bytes slack */
- offs = (offs+4095) & ~4095; /* Round to a 4K boundary */
-
- printf(".section \".rodata..compressed\",\"a\",@progbits\n");
- printf(".globl z_input_len\n");
- printf("z_input_len = %lu\n", ilen);
- printf(".globl z_output_len\n");
- printf("z_output_len = %lu\n", (unsigned long)olen);
- printf(".globl z_extract_offset\n");
- printf("z_extract_offset = 0x%lx\n", offs);
- /* z_extract_offset_negative allows simplification of head_32.S */
- printf(".globl z_extract_offset_negative\n");
- printf("z_extract_offset_negative = -0x%lx\n", offs);
-
- printf(".globl input_data, input_data_end\n");
- printf("input_data:\n");
- printf(".incbin \"%s\"\n", argv[1]);
- printf("input_data_end:\n");
-
- return 0;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/string.c b/ANDROID_3.4.5/arch/x86/boot/compressed/string.c
deleted file mode 100644
index ffb9c5c9..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/string.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "misc.h"
-
-int memcmp(const void *s1, const void *s2, size_t len)
-{
- u8 diff;
- asm("repe; cmpsb; setnz %0"
- : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
- return diff;
-}
-
-#include "../string.c"
diff --git a/ANDROID_3.4.5/arch/x86/boot/compressed/vmlinux.lds.S b/ANDROID_3.4.5/arch/x86/boot/compressed/vmlinux.lds.S
deleted file mode 100644
index 34d047c9..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/compressed/vmlinux.lds.S
+++ /dev/null
@@ -1,74 +0,0 @@
-#include <asm-generic/vmlinux.lds.h>
-
-OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
-
-#undef i386
-
-#include <asm/cache.h>
-#include <asm/page_types.h>
-
-#ifdef CONFIG_X86_64
-OUTPUT_ARCH(i386:x86-64)
-ENTRY(startup_64)
-#else
-OUTPUT_ARCH(i386)
-ENTRY(startup_32)
-#endif
-
-SECTIONS
-{
- /* Be careful parts of head_64.S assume startup_32 is at
- * address 0.
- */
- . = 0;
- .head.text : {
- _head = . ;
- HEAD_TEXT
- _ehead = . ;
- }
- .rodata..compressed : {
- *(.rodata..compressed)
- }
- .text : {
- _text = .; /* Text */
- *(.text)
- *(.text.*)
- _etext = . ;
- }
- .rodata : {
- _rodata = . ;
- *(.rodata) /* read-only data */
- *(.rodata.*)
- _erodata = . ;
- }
- .got : {
- _got = .;
- KEEP(*(.got.plt))
- KEEP(*(.got))
- _egot = .;
- }
- .data : {
- _data = . ;
- *(.data)
- *(.data.*)
- _edata = . ;
- }
- . = ALIGN(L1_CACHE_BYTES);
- .bss : {
- _bss = . ;
- *(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(8); /* For convenience during zeroing */
- _ebss = .;
- }
-#ifdef CONFIG_X86_64
- . = ALIGN(PAGE_SIZE);
- .pgtable : {
- _pgtable = . ;
- *(.pgtable)
- _epgtable = . ;
- }
-#endif
- _end = .;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/copy.S b/ANDROID_3.4.5/arch/x86/boot/copy.S
deleted file mode 100644
index 11f272c6..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/copy.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* ----------------------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-#include <linux/linkage.h>
-
-/*
- * Memory copy routines
- */
-
- .code16gcc
- .text
-
-GLOBAL(memcpy)
- pushw %si
- pushw %di
- movw %ax, %di
- movw %dx, %si
- pushw %cx
- shrw $2, %cx
- rep; movsl
- popw %cx
- andw $3, %cx
- rep; movsb
- popw %di
- popw %si
- ret
-ENDPROC(memcpy)
-
-GLOBAL(memset)
- pushw %di
- movw %ax, %di
- movzbl %dl, %eax
- imull $0x01010101,%eax
- pushw %cx
- shrw $2, %cx
- rep; stosl
- popw %cx
- andw $3, %cx
- rep; stosb
- popw %di
- ret
-ENDPROC(memset)
-
-GLOBAL(copy_from_fs)
- pushw %ds
- pushw %fs
- popw %ds
- call memcpy
- popw %ds
- ret
-ENDPROC(copy_from_fs)
-
-GLOBAL(copy_to_fs)
- pushw %es
- pushw %fs
- popw %es
- call memcpy
- popw %es
- ret
-ENDPROC(copy_to_fs)
-
-#if 0 /* Not currently used, but can be enabled as needed */
-GLOBAL(copy_from_gs)
- pushw %ds
- pushw %gs
- popw %ds
- call memcpy
- popw %ds
- ret
-ENDPROC(copy_from_gs)
-
-GLOBAL(copy_to_gs)
- pushw %es
- pushw %gs
- popw %es
- call memcpy
- popw %es
- ret
-ENDPROC(copy_to_gs)
-#endif
diff --git a/ANDROID_3.4.5/arch/x86/boot/cpu.c b/ANDROID_3.4.5/arch/x86/boot/cpu.c
deleted file mode 100644
index 6ec6bb6e..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/cpu.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007-2008 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * arch/x86/boot/cpu.c
- *
- * Check for obligatory CPU features and abort if the features are not
- * present.
- */
-
-#include "boot.h"
-#include "cpustr.h"
-
-static char *cpu_name(int level)
-{
- static char buf[6];
-
- if (level == 64) {
- return "x86-64";
- } else {
- if (level == 15)
- level = 6;
- sprintf(buf, "i%d86", level);
- return buf;
- }
-}
-
-int validate_cpu(void)
-{
- u32 *err_flags;
- int cpu_level, req_level;
- const unsigned char *msg_strs;
-
- check_cpu(&cpu_level, &req_level, &err_flags);
-
- if (cpu_level < req_level) {
- printf("This kernel requires an %s CPU, ",
- cpu_name(req_level));
- printf("but only detected an %s CPU.\n",
- cpu_name(cpu_level));
- return -1;
- }
-
- if (err_flags) {
- int i, j;
- puts("This kernel requires the following features "
- "not present on the CPU:\n");
-
- msg_strs = (const unsigned char *)x86_cap_strs;
-
- for (i = 0; i < NCAPINTS; i++) {
- u32 e = err_flags[i];
-
- for (j = 0; j < 32; j++) {
- if (msg_strs[0] < i ||
- (msg_strs[0] == i && msg_strs[1] < j)) {
- /* Skip to the next string */
- msg_strs += 2;
- while (*msg_strs++)
- ;
- }
- if (e & 1) {
- if (msg_strs[0] == i &&
- msg_strs[1] == j &&
- msg_strs[2])
- printf("%s ", msg_strs+2);
- else
- printf("%d:%d ", i, j);
- }
- e >>= 1;
- }
- }
- putchar('\n');
- return -1;
- } else {
- return 0;
- }
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/cpucheck.c b/ANDROID_3.4.5/arch/x86/boot/cpucheck.c
deleted file mode 100644
index 4d3ff037..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/cpucheck.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Check for obligatory CPU features and abort if the features are not
- * present. This code should be compilable as 16-, 32- or 64-bit
- * code, so be very careful with types and inline assembly.
- *
- * This code should not contain any messages; that requires an
- * additional wrapper.
- *
- * As written, this code is not safe for inclusion into the kernel
- * proper (after FPU initialization, in particular).
- */
-
-#ifdef _SETUP
-# include "boot.h"
-#endif
-#include <linux/types.h>
-#include <asm/processor-flags.h>
-#include <asm/required-features.h>
-#include <asm/msr-index.h>
-
-struct cpu_features cpu;
-static u32 cpu_vendor[3];
-static u32 err_flags[NCAPINTS];
-
-static const int req_level = CONFIG_X86_MINIMUM_CPU_FAMILY;
-
-static const u32 req_flags[NCAPINTS] =
-{
- REQUIRED_MASK0,
- REQUIRED_MASK1,
- 0, /* REQUIRED_MASK2 not implemented in this file */
- 0, /* REQUIRED_MASK3 not implemented in this file */
- REQUIRED_MASK4,
- 0, /* REQUIRED_MASK5 not implemented in this file */
- REQUIRED_MASK6,
- 0, /* REQUIRED_MASK7 not implemented in this file */
-};
-
-#define A32(a, b, c, d) (((d) << 24)+((c) << 16)+((b) << 8)+(a))
-
-static int is_amd(void)
-{
- return cpu_vendor[0] == A32('A', 'u', 't', 'h') &&
- cpu_vendor[1] == A32('e', 'n', 't', 'i') &&
- cpu_vendor[2] == A32('c', 'A', 'M', 'D');
-}
-
-static int is_centaur(void)
-{
- return cpu_vendor[0] == A32('C', 'e', 'n', 't') &&
- cpu_vendor[1] == A32('a', 'u', 'r', 'H') &&
- cpu_vendor[2] == A32('a', 'u', 'l', 's');
-}
-
-static int is_transmeta(void)
-{
- return cpu_vendor[0] == A32('G', 'e', 'n', 'u') &&
- cpu_vendor[1] == A32('i', 'n', 'e', 'T') &&
- cpu_vendor[2] == A32('M', 'x', '8', '6');
-}
-
-static int has_fpu(void)
-{
- u16 fcw = -1, fsw = -1;
- u32 cr0;
-
- asm("movl %%cr0,%0" : "=r" (cr0));
- if (cr0 & (X86_CR0_EM|X86_CR0_TS)) {
- cr0 &= ~(X86_CR0_EM|X86_CR0_TS);
- asm volatile("movl %0,%%cr0" : : "r" (cr0));
- }
-
- asm volatile("fninit ; fnstsw %0 ; fnstcw %1"
- : "+m" (fsw), "+m" (fcw));
-
- return fsw == 0 && (fcw & 0x103f) == 0x003f;
-}
-
-static int has_eflag(u32 mask)
-{
- u32 f0, f1;
-
- asm("pushfl ; "
- "pushfl ; "
- "popl %0 ; "
- "movl %0,%1 ; "
- "xorl %2,%1 ; "
- "pushl %1 ; "
- "popfl ; "
- "pushfl ; "
- "popl %1 ; "
- "popfl"
- : "=&r" (f0), "=&r" (f1)
- : "ri" (mask));
-
- return !!((f0^f1) & mask);
-}
-
-static void get_flags(void)
-{
- u32 max_intel_level, max_amd_level;
- u32 tfms;
-
- if (has_fpu())
- set_bit(X86_FEATURE_FPU, cpu.flags);
-
- if (has_eflag(X86_EFLAGS_ID)) {
- asm("cpuid"
- : "=a" (max_intel_level),
- "=b" (cpu_vendor[0]),
- "=d" (cpu_vendor[1]),
- "=c" (cpu_vendor[2])
- : "a" (0));
-
- if (max_intel_level >= 0x00000001 &&
- max_intel_level <= 0x0000ffff) {
- asm("cpuid"
- : "=a" (tfms),
- "=c" (cpu.flags[4]),
- "=d" (cpu.flags[0])
- : "a" (0x00000001)
- : "ebx");
- cpu.level = (tfms >> 8) & 15;
- cpu.model = (tfms >> 4) & 15;
- if (cpu.level >= 6)
- cpu.model += ((tfms >> 16) & 0xf) << 4;
- }
-
- asm("cpuid"
- : "=a" (max_amd_level)
- : "a" (0x80000000)
- : "ebx", "ecx", "edx");
-
- if (max_amd_level >= 0x80000001 &&
- max_amd_level <= 0x8000ffff) {
- u32 eax = 0x80000001;
- asm("cpuid"
- : "+a" (eax),
- "=c" (cpu.flags[6]),
- "=d" (cpu.flags[1])
- : : "ebx");
- }
- }
-}
-
-/* Returns a bitmask of which words we have error bits in */
-static int check_flags(void)
-{
- u32 err;
- int i;
-
- err = 0;
- for (i = 0; i < NCAPINTS; i++) {
- err_flags[i] = req_flags[i] & ~cpu.flags[i];
- if (err_flags[i])
- err |= 1 << i;
- }
-
- return err;
-}
-
-/*
- * Returns -1 on error.
- *
- * *cpu_level is set to the current CPU level; *req_level to the required
- * level. x86-64 is considered level 64 for this purpose.
- *
- * *err_flags_ptr is set to the flags error array if there are flags missing.
- */
-int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr)
-{
- int err;
-
- memset(&cpu.flags, 0, sizeof cpu.flags);
- cpu.level = 3;
-
- if (has_eflag(X86_EFLAGS_AC))
- cpu.level = 4;
-
- get_flags();
- err = check_flags();
-
- if (test_bit(X86_FEATURE_LM, cpu.flags))
- cpu.level = 64;
-
- if (err == 0x01 &&
- !(err_flags[0] &
- ~((1 << X86_FEATURE_XMM)|(1 << X86_FEATURE_XMM2))) &&
- is_amd()) {
- /* If this is an AMD and we're only missing SSE+SSE2, try to
- turn them on */
-
- u32 ecx = MSR_K7_HWCR;
- u32 eax, edx;
-
- asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
- eax &= ~(1 << 15);
- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
-
- get_flags(); /* Make sure it really did something */
- err = check_flags();
- } else if (err == 0x01 &&
- !(err_flags[0] & ~(1 << X86_FEATURE_CX8)) &&
- is_centaur() && cpu.model >= 6) {
- /* If this is a VIA C3, we might have to enable CX8
- explicitly */
-
- u32 ecx = MSR_VIA_FCR;
- u32 eax, edx;
-
- asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
- eax |= (1<<1)|(1<<7);
- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
-
- set_bit(X86_FEATURE_CX8, cpu.flags);
- err = check_flags();
- } else if (err == 0x01 && is_transmeta()) {
- /* Transmeta might have masked feature bits in word 0 */
-
- u32 ecx = 0x80860004;
- u32 eax, edx;
- u32 level = 1;
-
- asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx));
- asm("wrmsr" : : "a" (~0), "d" (edx), "c" (ecx));
- asm("cpuid"
- : "+a" (level), "=d" (cpu.flags[0])
- : : "ecx", "ebx");
- asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx));
-
- err = check_flags();
- }
-
- if (err_flags_ptr)
- *err_flags_ptr = err ? err_flags : NULL;
- if (cpu_level_ptr)
- *cpu_level_ptr = cpu.level;
- if (req_level_ptr)
- *req_level_ptr = req_level;
-
- return (cpu.level < req_level || err) ? -1 : 0;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/ctype.h b/ANDROID_3.4.5/arch/x86/boot/ctype.h
deleted file mode 100644
index 25e13403..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/ctype.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef BOOT_ISDIGIT_H
-
-#define BOOT_ISDIGIT_H
-
-static inline int isdigit(int ch)
-{
- return (ch >= '0') && (ch <= '9');
-}
-
-static inline int isxdigit(int ch)
-{
- if (isdigit(ch))
- return true;
-
- if ((ch >= 'a') && (ch <= 'f'))
- return true;
-
- return (ch >= 'A') && (ch <= 'F');
-}
-
-#endif
diff --git a/ANDROID_3.4.5/arch/x86/boot/early_serial_console.c b/ANDROID_3.4.5/arch/x86/boot/early_serial_console.c
deleted file mode 100644
index 5df2869c..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/early_serial_console.c
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "boot.h"
-
-#define DEFAULT_SERIAL_PORT 0x3f8 /* ttyS0 */
-
-#define XMTRDY 0x20
-
-#define DLAB 0x80
-
-#define TXR 0 /* Transmit register (WRITE) */
-#define RXR 0 /* Receive register (READ) */
-#define IER 1 /* Interrupt Enable */
-#define IIR 2 /* Interrupt ID */
-#define FCR 2 /* FIFO control */
-#define LCR 3 /* Line control */
-#define MCR 4 /* Modem control */
-#define LSR 5 /* Line Status */
-#define MSR 6 /* Modem Status */
-#define DLL 0 /* Divisor Latch Low */
-#define DLH 1 /* Divisor latch High */
-
-#define DEFAULT_BAUD 9600
-
-static void early_serial_init(int port, int baud)
-{
- unsigned char c;
- unsigned divisor;
-
- outb(0x3, port + LCR); /* 8n1 */
- outb(0, port + IER); /* no interrupt */
- outb(0, port + FCR); /* no fifo */
- outb(0x3, port + MCR); /* DTR + RTS */
-
- divisor = 115200 / baud;
- c = inb(port + LCR);
- outb(c | DLAB, port + LCR);
- outb(divisor & 0xff, port + DLL);
- outb((divisor >> 8) & 0xff, port + DLH);
- outb(c & ~DLAB, port + LCR);
-
- early_serial_base = port;
-}
-
-static void parse_earlyprintk(void)
-{
- int baud = DEFAULT_BAUD;
- char arg[32];
- int pos = 0;
- int port = 0;
-
- if (cmdline_find_option("earlyprintk", arg, sizeof arg) > 0) {
- char *e;
-
- if (!strncmp(arg, "serial", 6)) {
- port = DEFAULT_SERIAL_PORT;
- pos += 6;
- }
-
- if (arg[pos] == ',')
- pos++;
-
- /*
- * make sure we have
- * "serial,0x3f8,115200"
- * "serial,ttyS0,115200"
- * "ttyS0,115200"
- */
- if (pos == 7 && !strncmp(arg + pos, "0x", 2)) {
- port = simple_strtoull(arg + pos, &e, 16);
- if (port == 0 || arg + pos == e)
- port = DEFAULT_SERIAL_PORT;
- else
- pos = e - arg;
- } else if (!strncmp(arg + pos, "ttyS", 4)) {
- static const int bases[] = { 0x3f8, 0x2f8 };
- int idx = 0;
-
- if (!strncmp(arg + pos, "ttyS", 4))
- pos += 4;
-
- if (arg[pos++] == '1')
- idx = 1;
-
- port = bases[idx];
- }
-
- if (arg[pos] == ',')
- pos++;
-
- baud = simple_strtoull(arg + pos, &e, 0);
- if (baud == 0 || arg + pos == e)
- baud = DEFAULT_BAUD;
- }
-
- if (port)
- early_serial_init(port, baud);
-}
-
-#define BASE_BAUD (1843200/16)
-static unsigned int probe_baud(int port)
-{
- unsigned char lcr, dll, dlh;
- unsigned int quot;
-
- lcr = inb(port + LCR);
- outb(lcr | DLAB, port + LCR);
- dll = inb(port + DLL);
- dlh = inb(port + DLH);
- outb(lcr, port + LCR);
- quot = (dlh << 8) | dll;
-
- return BASE_BAUD / quot;
-}
-
-static void parse_console_uart8250(void)
-{
- char optstr[64], *options;
- int baud = DEFAULT_BAUD;
- int port = 0;
-
- /*
- * console=uart8250,io,0x3f8,115200n8
- * need to make sure it is last one console !
- */
- if (cmdline_find_option("console", optstr, sizeof optstr) <= 0)
- return;
-
- options = optstr;
-
- if (!strncmp(options, "uart8250,io,", 12))
- port = simple_strtoull(options + 12, &options, 0);
- else if (!strncmp(options, "uart,io,", 8))
- port = simple_strtoull(options + 8, &options, 0);
- else
- return;
-
- if (options && (options[0] == ','))
- baud = simple_strtoull(options + 1, &options, 0);
- else
- baud = probe_baud(port);
-
- if (port)
- early_serial_init(port, baud);
-}
-
-void console_init(void)
-{
- parse_earlyprintk();
-
- if (!early_serial_base)
- parse_console_uart8250();
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/edd.c b/ANDROID_3.4.5/arch/x86/boot/edd.c
deleted file mode 100644
index c501a5b4..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/edd.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Get EDD BIOS disk information
- */
-
-#include "boot.h"
-#include <linux/edd.h>
-
-#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
-
-/*
- * Read the MBR (first sector) from a specific device.
- */
-static int read_mbr(u8 devno, void *buf)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ax = 0x0201; /* Legacy Read, one sector */
- ireg.cx = 0x0001; /* Sector 0-0-1 */
- ireg.dl = devno;
- ireg.bx = (size_t)buf;
-
- intcall(0x13, &ireg, &oreg);
-
- return -(oreg.eflags & X86_EFLAGS_CF); /* 0 or -1 */
-}
-
-static u32 read_mbr_sig(u8 devno, struct edd_info *ei, u32 *mbrsig)
-{
- int sector_size;
- char *mbrbuf_ptr, *mbrbuf_end;
- u32 buf_base, mbr_base;
- extern char _end[];
- u16 mbr_magic;
-
- sector_size = ei->params.bytes_per_sector;
- if (!sector_size)
- sector_size = 512; /* Best available guess */
-
- /* Produce a naturally aligned buffer on the heap */
- buf_base = (ds() << 4) + (u32)&_end;
- mbr_base = (buf_base+sector_size-1) & ~(sector_size-1);
- mbrbuf_ptr = _end + (mbr_base-buf_base);
- mbrbuf_end = mbrbuf_ptr + sector_size;
-
- /* Make sure we actually have space on the heap... */
- if (!(boot_params.hdr.loadflags & CAN_USE_HEAP))
- return -1;
- if (mbrbuf_end > (char *)(size_t)boot_params.hdr.heap_end_ptr)
- return -1;
-
- memset(mbrbuf_ptr, 0, sector_size);
- if (read_mbr(devno, mbrbuf_ptr))
- return -1;
-
- *mbrsig = *(u32 *)&mbrbuf_ptr[EDD_MBR_SIG_OFFSET];
- mbr_magic = *(u16 *)&mbrbuf_ptr[510];
-
- /* check for valid MBR magic */
- return mbr_magic == 0xAA55 ? 0 : -1;
-}
-
-static int get_edd_info(u8 devno, struct edd_info *ei)
-{
- struct biosregs ireg, oreg;
-
- memset(ei, 0, sizeof *ei);
-
- /* Check Extensions Present */
-
- initregs(&ireg);
- ireg.ah = 0x41;
- ireg.bx = EDDMAGIC1;
- ireg.dl = devno;
- intcall(0x13, &ireg, &oreg);
-
- if (oreg.eflags & X86_EFLAGS_CF)
- return -1; /* No extended information */
-
- if (oreg.bx != EDDMAGIC2)
- return -1;
-
- ei->device = devno;
- ei->version = oreg.ah; /* EDD version number */
- ei->interface_support = oreg.cx; /* EDD functionality subsets */
-
- /* Extended Get Device Parameters */
-
- ei->params.length = sizeof(ei->params);
- ireg.ah = 0x48;
- ireg.si = (size_t)&ei->params;
- intcall(0x13, &ireg, &oreg);
-
- /* Get legacy CHS parameters */
-
- /* Ralf Brown recommends setting ES:DI to 0:0 */
- ireg.ah = 0x08;
- ireg.es = 0;
- intcall(0x13, &ireg, &oreg);
-
- if (!(oreg.eflags & X86_EFLAGS_CF)) {
- ei->legacy_max_cylinder = oreg.ch + ((oreg.cl & 0xc0) << 2);
- ei->legacy_max_head = oreg.dh;
- ei->legacy_sectors_per_track = oreg.cl & 0x3f;
- }
-
- return 0;
-}
-
-void query_edd(void)
-{
- char eddarg[8];
- int do_mbr = 1;
-#ifdef CONFIG_EDD_OFF
- int do_edd = 0;
-#else
- int do_edd = 1;
-#endif
- int be_quiet;
- int devno;
- struct edd_info ei, *edp;
- u32 *mbrptr;
-
- if (cmdline_find_option("edd", eddarg, sizeof eddarg) > 0) {
- if (!strcmp(eddarg, "skipmbr") || !strcmp(eddarg, "skip")) {
- do_edd = 1;
- do_mbr = 0;
- }
- else if (!strcmp(eddarg, "off"))
- do_edd = 0;
- else if (!strcmp(eddarg, "on"))
- do_edd = 1;
- }
-
- be_quiet = cmdline_find_option_bool("quiet");
-
- edp = boot_params.eddbuf;
- mbrptr = boot_params.edd_mbr_sig_buffer;
-
- if (!do_edd)
- return;
-
- /* Bugs in OnBoard or AddOnCards Bios may hang the EDD probe,
- * so give a hint if this happens.
- */
-
- if (!be_quiet)
- printf("Probing EDD (edd=off to disable)... ");
-
- for (devno = 0x80; devno < 0x80+EDD_MBR_SIG_MAX; devno++) {
- /*
- * Scan the BIOS-supported hard disks and query EDD
- * information...
- */
- if (!get_edd_info(devno, &ei)
- && boot_params.eddbuf_entries < EDDMAXNR) {
- memcpy(edp, &ei, sizeof ei);
- edp++;
- boot_params.eddbuf_entries++;
- }
-
- if (do_mbr && !read_mbr_sig(devno, &ei, mbrptr++))
- boot_params.edd_mbr_sig_buf_entries = devno-0x80+1;
- }
-
- if (!be_quiet)
- printf("ok\n");
-}
-
-#endif
diff --git a/ANDROID_3.4.5/arch/x86/boot/header.S b/ANDROID_3.4.5/arch/x86/boot/header.S
deleted file mode 100644
index f1bbeeb0..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/header.S
+++ /dev/null
@@ -1,478 +0,0 @@
-/*
- * header.S
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- *
- * Based on bootsect.S and setup.S
- * modified by more people than can be counted
- *
- * Rewritten as a common file by H. Peter Anvin (Apr 2007)
- *
- * BIG FAT NOTE: We're in real mode using 64k segments. Therefore segment
- * addresses must be multiplied by 16 to obtain their respective linear
- * addresses. To avoid confusion, linear addresses are written using leading
- * hex while segment addresses are written as segment:offset.
- *
- */
-
-#include <asm/segment.h>
-#include <generated/utsrelease.h>
-#include <asm/boot.h>
-#include <asm/e820.h>
-#include <asm/page_types.h>
-#include <asm/setup.h>
-#include "boot.h"
-#include "voffset.h"
-#include "zoffset.h"
-
-BOOTSEG = 0x07C0 /* original address of boot-sector */
-SYSSEG = 0x1000 /* historical load address >> 4 */
-
-#ifndef SVGA_MODE
-#define SVGA_MODE ASK_VGA
-#endif
-
-#ifndef RAMDISK
-#define RAMDISK 0
-#endif
-
-#ifndef ROOT_RDONLY
-#define ROOT_RDONLY 1
-#endif
-
- .code16
- .section ".bstext", "ax"
-
- .global bootsect_start
-bootsect_start:
-#ifdef CONFIG_EFI_STUB
- # "MZ", MS-DOS header
- .byte 0x4d
- .byte 0x5a
-#endif
-
- # Normalize the start address
- ljmp $BOOTSEG, $start2
-
-start2:
- movw %cs, %ax
- movw %ax, %ds
- movw %ax, %es
- movw %ax, %ss
- xorw %sp, %sp
- sti
- cld
-
- movw $bugger_off_msg, %si
-
-msg_loop:
- lodsb
- andb %al, %al
- jz bs_die
- movb $0xe, %ah
- movw $7, %bx
- int $0x10
- jmp msg_loop
-
-bs_die:
- # Allow the user to press a key, then reboot
- xorw %ax, %ax
- int $0x16
- int $0x19
-
- # int 0x19 should never return. In case it does anyway,
- # invoke the BIOS reset code...
- ljmp $0xf000,$0xfff0
-
-#ifdef CONFIG_EFI_STUB
- .org 0x3c
- #
- # Offset to the PE header.
- #
- .long pe_header
-#endif /* CONFIG_EFI_STUB */
-
- .section ".bsdata", "a"
-bugger_off_msg:
- .ascii "Direct booting from floppy is no longer supported.\r\n"
- .ascii "Please use a boot loader program instead.\r\n"
- .ascii "\n"
- .ascii "Remove disk and press any key to reboot . . .\r\n"
- .byte 0
-
-#ifdef CONFIG_EFI_STUB
-pe_header:
- .ascii "PE"
- .word 0
-
-coff_header:
-#ifdef CONFIG_X86_32
- .word 0x14c # i386
-#else
- .word 0x8664 # x86-64
-#endif
- .word 2 # nr_sections
- .long 0 # TimeDateStamp
- .long 0 # PointerToSymbolTable
- .long 1 # NumberOfSymbols
- .word section_table - optional_header # SizeOfOptionalHeader
-#ifdef CONFIG_X86_32
- .word 0x306 # Characteristics.
- # IMAGE_FILE_32BIT_MACHINE |
- # IMAGE_FILE_DEBUG_STRIPPED |
- # IMAGE_FILE_EXECUTABLE_IMAGE |
- # IMAGE_FILE_LINE_NUMS_STRIPPED
-#else
- .word 0x206 # Characteristics
- # IMAGE_FILE_DEBUG_STRIPPED |
- # IMAGE_FILE_EXECUTABLE_IMAGE |
- # IMAGE_FILE_LINE_NUMS_STRIPPED
-#endif
-
-optional_header:
-#ifdef CONFIG_X86_32
- .word 0x10b # PE32 format
-#else
- .word 0x20b # PE32+ format
-#endif
- .byte 0x02 # MajorLinkerVersion
- .byte 0x14 # MinorLinkerVersion
-
- # Filled in by build.c
- .long 0 # SizeOfCode
-
- .long 0 # SizeOfInitializedData
- .long 0 # SizeOfUninitializedData
-
- # Filled in by build.c
- .long 0x0000 # AddressOfEntryPoint
-
- .long 0x0000 # BaseOfCode
-#ifdef CONFIG_X86_32
- .long 0 # data
-#endif
-
-extra_header_fields:
-#ifdef CONFIG_X86_32
- .long 0 # ImageBase
-#else
- .quad 0 # ImageBase
-#endif
- .long 0x1000 # SectionAlignment
- .long 0x200 # FileAlignment
- .word 0 # MajorOperatingSystemVersion
- .word 0 # MinorOperatingSystemVersion
- .word 0 # MajorImageVersion
- .word 0 # MinorImageVersion
- .word 0 # MajorSubsystemVersion
- .word 0 # MinorSubsystemVersion
- .long 0 # Win32VersionValue
-
- #
- # The size of the bzImage is written in tools/build.c
- #
- .long 0 # SizeOfImage
-
- .long 0x200 # SizeOfHeaders
- .long 0 # CheckSum
- .word 0xa # Subsystem (EFI application)
- .word 0 # DllCharacteristics
-#ifdef CONFIG_X86_32
- .long 0 # SizeOfStackReserve
- .long 0 # SizeOfStackCommit
- .long 0 # SizeOfHeapReserve
- .long 0 # SizeOfHeapCommit
-#else
- .quad 0 # SizeOfStackReserve
- .quad 0 # SizeOfStackCommit
- .quad 0 # SizeOfHeapReserve
- .quad 0 # SizeOfHeapCommit
-#endif
- .long 0 # LoaderFlags
- .long 0x1 # NumberOfRvaAndSizes
-
- .quad 0 # ExportTable
- .quad 0 # ImportTable
- .quad 0 # ResourceTable
- .quad 0 # ExceptionTable
- .quad 0 # CertificationTable
- .quad 0 # BaseRelocationTable
-
- # Section table
-section_table:
- .ascii ".text"
- .byte 0
- .byte 0
- .byte 0
- .long 0
- .long 0x0 # startup_{32,64}
- .long 0 # Size of initialized data
- # on disk
- .long 0x0 # startup_{32,64}
- .long 0 # PointerToRelocations
- .long 0 # PointerToLineNumbers
- .word 0 # NumberOfRelocations
- .word 0 # NumberOfLineNumbers
- .long 0x60500020 # Characteristics (section flags)
-
- #
- # The EFI application loader requires a relocation section
- # because EFI applications are relocatable and not having
- # this section seems to confuse it. But since we don't need
- # the loader to fixup any relocs for us just fill it with a
- # single dummy reloc.
- #
- .ascii ".reloc"
- .byte 0
- .byte 0
- .long reloc_end - reloc_start
- .long reloc_start
- .long reloc_end - reloc_start # SizeOfRawData
- .long reloc_start # PointerToRawData
- .long 0 # PointerToRelocations
- .long 0 # PointerToLineNumbers
- .word 0 # NumberOfRelocations
- .word 0 # NumberOfLineNumbers
- .long 0x42100040 # Characteristics (section flags)
-#endif /* CONFIG_EFI_STUB */
-
- # Kernel attributes; used by setup. This is part 1 of the
- # header, from the old boot sector.
-
- .section ".header", "a"
- .globl hdr
-hdr:
-setup_sects: .byte 0 /* Filled in by build.c */
-root_flags: .word ROOT_RDONLY
-syssize: .long 0 /* Filled in by build.c */
-ram_size: .word 0 /* Obsolete */
-vid_mode: .word SVGA_MODE
-root_dev: .word 0 /* Filled in by build.c */
-boot_flag: .word 0xAA55
-
- # offset 512, entry point
-
- .globl _start
-_start:
- # Explicitly enter this as bytes, or the assembler
- # tries to generate a 3-byte jump here, which causes
- # everything else to push off to the wrong offset.
- .byte 0xeb # short (2-byte) jump
- .byte start_of_setup-1f
-1:
-
- # Part 2 of the header, from the old setup.S
-
- .ascii "HdrS" # header signature
- .word 0x020a # header version number (>= 0x0105)
- # or else old loadlin-1.5 will fail)
- .globl realmode_swtch
-realmode_swtch: .word 0, 0 # default_switch, SETUPSEG
-start_sys_seg: .word SYSSEG # obsolete and meaningless, but just
- # in case something decided to "use" it
- .word kernel_version-512 # pointing to kernel version string
- # above section of header is compatible
- # with loadlin-1.5 (header v1.5). Don't
- # change it.
-
-type_of_loader: .byte 0 # 0 means ancient bootloader, newer
- # bootloaders know to change this.
- # See Documentation/x86/boot.txt for
- # assigned ids
-
-# flags, unused bits must be zero (RFU) bit within loadflags
-loadflags:
-LOADED_HIGH = 1 # If set, the kernel is loaded high
-CAN_USE_HEAP = 0x80 # If set, the loader also has set
- # heap_end_ptr to tell how much
- # space behind setup.S can be used for
- # heap purposes.
- # Only the loader knows what is free
- .byte LOADED_HIGH
-
-setup_move_size: .word 0x8000 # size to move, when setup is not
- # loaded at 0x90000. We will move setup
- # to 0x90000 then just before jumping
- # into the kernel. However, only the
- # loader knows how much data behind
- # us also needs to be loaded.
-
-code32_start: # here loaders can put a different
- # start address for 32-bit code.
- .long 0x100000 # 0x100000 = default for big kernel
-
-ramdisk_image: .long 0 # address of loaded ramdisk image
- # Here the loader puts the 32-bit
- # address where it loaded the image.
- # This only will be read by the kernel.
-
-ramdisk_size: .long 0 # its size in bytes
-
-bootsect_kludge:
- .long 0 # obsolete
-
-heap_end_ptr: .word _end+STACK_SIZE-512
- # (Header version 0x0201 or later)
- # space from here (exclusive) down to
- # end of setup code can be used by setup
- # for local heap purposes.
-
-ext_loader_ver:
- .byte 0 # Extended boot loader version
-ext_loader_type:
- .byte 0 # Extended boot loader type
-
-cmd_line_ptr: .long 0 # (Header version 0x0202 or later)
- # If nonzero, a 32-bit pointer
- # to the kernel command line.
- # The command line should be
- # located between the start of
- # setup and the end of low
- # memory (0xa0000), or it may
- # get overwritten before it
- # gets read. If this field is
- # used, there is no longer
- # anything magical about the
- # 0x90000 segment; the setup
- # can be located anywhere in
- # low memory 0x10000 or higher.
-
-ramdisk_max: .long 0x7fffffff
- # (Header version 0x0203 or later)
- # The highest safe address for
- # the contents of an initrd
- # The current kernel allows up to 4 GB,
- # but leave it at 2 GB to avoid
- # possible bootloader bugs.
-
-kernel_alignment: .long CONFIG_PHYSICAL_ALIGN #physical addr alignment
- #required for protected mode
- #kernel
-#ifdef CONFIG_RELOCATABLE
-relocatable_kernel: .byte 1
-#else
-relocatable_kernel: .byte 0
-#endif
-min_alignment: .byte MIN_KERNEL_ALIGN_LG2 # minimum alignment
-pad3: .word 0
-
-cmdline_size: .long COMMAND_LINE_SIZE-1 #length of the command line,
- #added with boot protocol
- #version 2.06
-
-hardware_subarch: .long 0 # subarchitecture, added with 2.07
- # default to 0 for normal x86 PC
-
-hardware_subarch_data: .quad 0
-
-payload_offset: .long ZO_input_data
-payload_length: .long ZO_z_input_len
-
-setup_data: .quad 0 # 64-bit physical pointer to
- # single linked list of
- # struct setup_data
-
-pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr
-
-#define ZO_INIT_SIZE (ZO__end - ZO_startup_32 + ZO_z_extract_offset)
-#define VO_INIT_SIZE (VO__end - VO__text)
-#if ZO_INIT_SIZE > VO_INIT_SIZE
-#define INIT_SIZE ZO_INIT_SIZE
-#else
-#define INIT_SIZE VO_INIT_SIZE
-#endif
-init_size: .long INIT_SIZE # kernel initialization size
-
-# End of setup header #####################################################
-
- .section ".entrytext", "ax"
-start_of_setup:
-#ifdef SAFE_RESET_DISK_CONTROLLER
-# Reset the disk controller.
- movw $0x0000, %ax # Reset disk controller
- movb $0x80, %dl # All disks
- int $0x13
-#endif
-
-# Force %es = %ds
- movw %ds, %ax
- movw %ax, %es
- cld
-
-# Apparently some ancient versions of LILO invoked the kernel with %ss != %ds,
-# which happened to work by accident for the old code. Recalculate the stack
-# pointer if %ss is invalid. Otherwise leave it alone, LOADLIN sets up the
-# stack behind its own code, so we can't blindly put it directly past the heap.
-
- movw %ss, %dx
- cmpw %ax, %dx # %ds == %ss?
- movw %sp, %dx
- je 2f # -> assume %sp is reasonably set
-
- # Invalid %ss, make up a new stack
- movw $_end, %dx
- testb $CAN_USE_HEAP, loadflags
- jz 1f
- movw heap_end_ptr, %dx
-1: addw $STACK_SIZE, %dx
- jnc 2f
- xorw %dx, %dx # Prevent wraparound
-
-2: # Now %dx should point to the end of our stack space
- andw $~3, %dx # dword align (might as well...)
- jnz 3f
- movw $0xfffc, %dx # Make sure we're not zero
-3: movw %ax, %ss
- movzwl %dx, %esp # Clear upper half of %esp
- sti # Now we should have a working stack
-
-# We will have entered with %cs = %ds+0x20, normalize %cs so
-# it is on par with the other segments.
- pushw %ds
- pushw $6f
- lretw
-6:
-
-# Check signature at end of setup
- cmpl $0x5a5aaa55, setup_sig
- jne setup_bad
-
-# Zero the bss
- movw $__bss_start, %di
- movw $_end+3, %cx
- xorl %eax, %eax
- subw %di, %cx
- shrw $2, %cx
- rep; stosl
-
-# Jump to C code (should not return)
- calll main
-
-# Setup corrupt somehow...
-setup_bad:
- movl $setup_corrupt, %eax
- calll puts
- # Fall through...
-
- .globl die
- .type die, @function
-die:
- hlt
- jmp die
-
- .size die, .-die
-
- .section ".initdata", "a"
-setup_corrupt:
- .byte 7
- .string "No setup signature found...\n"
-
- .data
-dummy: .long 0
-
- .section .reloc
-reloc_start:
- .long dummy - reloc_start
- .long 10
- .word 0
-reloc_end:
diff --git a/ANDROID_3.4.5/arch/x86/boot/install.sh b/ANDROID_3.4.5/arch/x86/boot/install.sh
deleted file mode 100644
index d13ec1c3..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/install.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-#
-# This file is subject to the terms and conditions of the GNU General Public
-# License. See the file "COPYING" in the main directory of this archive
-# for more details.
-#
-# Copyright (C) 1995 by Linus Torvalds
-#
-# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
-#
-# "make install" script for i386 architecture
-#
-# Arguments:
-# $1 - kernel version
-# $2 - kernel image file
-# $3 - kernel map file
-# $4 - default install path (blank if root directory)
-#
-
-verify () {
- if [ ! -f "$1" ]; then
- echo "" 1>&2
- echo " *** Missing file: $1" 1>&2
- echo ' *** You need to run "make" before "make install".' 1>&2
- echo "" 1>&2
- exit 1
- fi
-}
-
-# Make sure the files actually exist
-verify "$2"
-verify "$3"
-
-# User may have a custom install script
-
-if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
-if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
-
-# Default install - same as make zlilo
-
-if [ -f $4/vmlinuz ]; then
- mv $4/vmlinuz $4/vmlinuz.old
-fi
-
-if [ -f $4/System.map ]; then
- mv $4/System.map $4/System.old
-fi
-
-cat $2 > $4/vmlinuz
-cp $3 $4/System.map
-
-if [ -x /sbin/lilo ]; then
- /sbin/lilo
-elif [ -x /etc/lilo/install ]; then
- /etc/lilo/install
-else
- sync
- echo "Cannot find LILO."
-fi
diff --git a/ANDROID_3.4.5/arch/x86/boot/main.c b/ANDROID_3.4.5/arch/x86/boot/main.c
deleted file mode 100644
index 40358c89..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/main.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Main module for the real-mode kernel code
- */
-
-#include "boot.h"
-
-struct boot_params boot_params __attribute__((aligned(16)));
-
-char *HEAP = _end;
-char *heap_end = _end; /* Default end of heap = no heap */
-
-/*
- * Copy the header into the boot parameter block. Since this
- * screws up the old-style command line protocol, adjust by
- * filling in the new-style command line pointer instead.
- */
-
-static void copy_boot_params(void)
-{
- struct old_cmdline {
- u16 cl_magic;
- u16 cl_offset;
- };
- const struct old_cmdline * const oldcmd =
- (const struct old_cmdline *)OLD_CL_ADDRESS;
-
- BUILD_BUG_ON(sizeof boot_params != 4096);
- memcpy(&boot_params.hdr, &hdr, sizeof hdr);
-
- if (!boot_params.hdr.cmd_line_ptr &&
- oldcmd->cl_magic == OLD_CL_MAGIC) {
- /* Old-style command line protocol. */
- u16 cmdline_seg;
-
- /* Figure out if the command line falls in the region
- of memory that an old kernel would have copied up
- to 0x90000... */
- if (oldcmd->cl_offset < boot_params.hdr.setup_move_size)
- cmdline_seg = ds();
- else
- cmdline_seg = 0x9000;
-
- boot_params.hdr.cmd_line_ptr =
- (cmdline_seg << 4) + oldcmd->cl_offset;
- }
-}
-
-/*
- * Set the keyboard repeat rate to maximum. Unclear why this
- * is done here; this might be possible to kill off as stale code.
- */
-static void keyboard_set_repeat(void)
-{
- struct biosregs ireg;
- initregs(&ireg);
- ireg.ax = 0x0305;
- intcall(0x16, &ireg, NULL);
-}
-
-/*
- * Get Intel SpeedStep (IST) information.
- */
-static void query_ist(void)
-{
- struct biosregs ireg, oreg;
-
- /* Some older BIOSes apparently crash on this call, so filter
- it from machines too old to have SpeedStep at all. */
- if (cpu.level < 6)
- return;
-
- initregs(&ireg);
- ireg.ax = 0xe980; /* IST Support */
- ireg.edx = 0x47534943; /* Request value */
- intcall(0x15, &ireg, &oreg);
-
- boot_params.ist_info.signature = oreg.eax;
- boot_params.ist_info.command = oreg.ebx;
- boot_params.ist_info.event = oreg.ecx;
- boot_params.ist_info.perf_level = oreg.edx;
-}
-
-/*
- * Tell the BIOS what CPU mode we intend to run in.
- */
-static void set_bios_mode(void)
-{
-#ifdef CONFIG_X86_64
- struct biosregs ireg;
-
- initregs(&ireg);
- ireg.ax = 0xec00;
- ireg.bx = 2;
- intcall(0x15, &ireg, NULL);
-#endif
-}
-
-static void init_heap(void)
-{
- char *stack_end;
-
- if (boot_params.hdr.loadflags & CAN_USE_HEAP) {
- asm("leal %P1(%%esp),%0"
- : "=r" (stack_end) : "i" (-STACK_SIZE));
-
- heap_end = (char *)
- ((size_t)boot_params.hdr.heap_end_ptr + 0x200);
- if (heap_end > stack_end)
- heap_end = stack_end;
- } else {
- /* Boot protocol 2.00 only, no heap available */
- puts("WARNING: Ancient bootloader, some functionality "
- "may be limited!\n");
- }
-}
-
-void main(void)
-{
- /* First, copy the boot header into the "zeropage" */
- copy_boot_params();
-
- /* Initialize the early-boot console */
- console_init();
- if (cmdline_find_option_bool("debug"))
- puts("early console in setup code\n");
-
- /* End of heap check */
- init_heap();
-
- /* Make sure we have all the proper CPU support */
- if (validate_cpu()) {
- puts("Unable to boot - please use a kernel appropriate "
- "for your CPU.\n");
- die();
- }
-
- /* Tell the BIOS what CPU mode we intend to run in. */
- set_bios_mode();
-
- /* Detect memory layout */
- detect_memory();
-
- /* Set keyboard repeat rate (why?) */
- keyboard_set_repeat();
-
- /* Query MCA information */
- query_mca();
-
- /* Query Intel SpeedStep (IST) information */
- query_ist();
-
- /* Query APM information */
-#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
- query_apm_bios();
-#endif
-
- /* Query EDD information */
-#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
- query_edd();
-#endif
-
- /* Set the video mode */
- set_video();
-
- /* Do the last things and invoke protected mode */
- go_to_protected_mode();
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/mca.c b/ANDROID_3.4.5/arch/x86/boot/mca.c
deleted file mode 100644
index a95a5311..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/mca.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Get the MCA system description table
- */
-
-#include "boot.h"
-
-int query_mca(void)
-{
- struct biosregs ireg, oreg;
- u16 len;
-
- initregs(&ireg);
- ireg.ah = 0xc0;
- intcall(0x15, &ireg, &oreg);
-
- if (oreg.eflags & X86_EFLAGS_CF)
- return -1; /* No MCA present */
-
- set_fs(oreg.es);
- len = rdfs16(oreg.bx);
-
- if (len > sizeof(boot_params.sys_desc_table))
- len = sizeof(boot_params.sys_desc_table);
-
- copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len);
- return 0;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/memory.c b/ANDROID_3.4.5/arch/x86/boot/memory.c
deleted file mode 100644
index db75d07c..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/memory.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Memory detection code
- */
-
-#include "boot.h"
-
-#define SMAP 0x534d4150 /* ASCII "SMAP" */
-
-static int detect_memory_e820(void)
-{
- int count = 0;
- struct biosregs ireg, oreg;
- struct e820entry *desc = boot_params.e820_map;
- static struct e820entry buf; /* static so it is zeroed */
-
- initregs(&ireg);
- ireg.ax = 0xe820;
- ireg.cx = sizeof buf;
- ireg.edx = SMAP;
- ireg.di = (size_t)&buf;
-
- /*
- * Note: at least one BIOS is known which assumes that the
- * buffer pointed to by one e820 call is the same one as
- * the previous call, and only changes modified fields. Therefore,
- * we use a temporary buffer and copy the results entry by entry.
- *
- * This routine deliberately does not try to account for
- * ACPI 3+ extended attributes. This is because there are
- * BIOSes in the field which report zero for the valid bit for
- * all ranges, and we don't currently make any use of the
- * other attribute bits. Revisit this if we see the extended
- * attribute bits deployed in a meaningful way in the future.
- */
-
- do {
- intcall(0x15, &ireg, &oreg);
- ireg.ebx = oreg.ebx; /* for next iteration... */
-
- /* BIOSes which terminate the chain with CF = 1 as opposed
- to %ebx = 0 don't always report the SMAP signature on
- the final, failing, probe. */
- if (oreg.eflags & X86_EFLAGS_CF)
- break;
-
- /* Some BIOSes stop returning SMAP in the middle of
- the search loop. We don't know exactly how the BIOS
- screwed up the map at that point, we might have a
- partial map, the full map, or complete garbage, so
- just return failure. */
- if (oreg.eax != SMAP) {
- count = 0;
- break;
- }
-
- *desc++ = buf;
- count++;
- } while (ireg.ebx && count < ARRAY_SIZE(boot_params.e820_map));
-
- return boot_params.e820_entries = count;
-}
-
-static int detect_memory_e801(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ax = 0xe801;
- intcall(0x15, &ireg, &oreg);
-
- if (oreg.eflags & X86_EFLAGS_CF)
- return -1;
-
- /* Do we really need to do this? */
- if (oreg.cx || oreg.dx) {
- oreg.ax = oreg.cx;
- oreg.bx = oreg.dx;
- }
-
- if (oreg.ax > 15*1024) {
- return -1; /* Bogus! */
- } else if (oreg.ax == 15*1024) {
- boot_params.alt_mem_k = (oreg.bx << 6) + oreg.ax;
- } else {
- /*
- * This ignores memory above 16MB if we have a memory
- * hole there. If someone actually finds a machine
- * with a memory hole at 16MB and no support for
- * 0E820h they should probably generate a fake e820
- * map.
- */
- boot_params.alt_mem_k = oreg.ax;
- }
-
- return 0;
-}
-
-static int detect_memory_88(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ah = 0x88;
- intcall(0x15, &ireg, &oreg);
-
- boot_params.screen_info.ext_mem_k = oreg.ax;
-
- return -(oreg.eflags & X86_EFLAGS_CF); /* 0 or -1 */
-}
-
-int detect_memory(void)
-{
- int err = -1;
-
- if (detect_memory_e820() > 0)
- err = 0;
-
- if (!detect_memory_e801())
- err = 0;
-
- if (!detect_memory_88())
- err = 0;
-
- return err;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/mkcpustr.c b/ANDROID_3.4.5/arch/x86/boot/mkcpustr.c
deleted file mode 100644
index 919257f5..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/mkcpustr.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* ----------------------------------------------------------------------- *
- *
- * Copyright 2008 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2 or (at your
- * option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * This is a host program to preprocess the CPU strings into a
- * compact format suitable for the setup code.
- */
-
-#include <stdio.h>
-
-#include "../kernel/cpu/capflags.c"
-
-int main(void)
-{
- int i, j;
- const char *str;
-
- printf("static const char x86_cap_strs[] =\n");
-
- for (i = 0; i < NCAPINTS; i++) {
- for (j = 0; j < 32; j++) {
- str = x86_cap_flags[i*32+j];
-
- if (i == NCAPINTS-1 && j == 31) {
- /* The last entry must be unconditional; this
- also consumes the compiler-added null
- character */
- if (!str)
- str = "";
- printf("\t\"\\x%02x\\x%02x\"\"%s\"\n",
- i, j, str);
- } else if (str) {
- printf("#if REQUIRED_MASK%d & (1 << %d)\n"
- "\t\"\\x%02x\\x%02x\"\"%s\\0\"\n"
- "#endif\n",
- i, j, i, j, str);
- }
- }
- }
- printf("\t;\n");
- return 0;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/mtools.conf.in b/ANDROID_3.4.5/arch/x86/boot/mtools.conf.in
deleted file mode 100644
index efd6d249..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/mtools.conf.in
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# mtools configuration file for "make (b)zdisk"
-#
-
-# Actual floppy drive
-drive a:
- file="/dev/fd0"
-
-# 1.44 MB floppy disk image
-drive v:
- file="@OBJ@/fdimage" cylinders=80 heads=2 sectors=18 filter
-
-# 2.88 MB floppy disk image (mostly for virtual uses)
-drive w:
- file="@OBJ@/fdimage" cylinders=80 heads=2 sectors=36 filter
-
-
diff --git a/ANDROID_3.4.5/arch/x86/boot/pm.c b/ANDROID_3.4.5/arch/x86/boot/pm.c
deleted file mode 100644
index 8062f891..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/pm.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Prepare the machine for transition to protected mode.
- */
-
-#include "boot.h"
-#include <asm/segment.h>
-
-/*
- * Invoke the realmode switch hook if present; otherwise
- * disable all interrupts.
- */
-static void realmode_switch_hook(void)
-{
- if (boot_params.hdr.realmode_swtch) {
- asm volatile("lcallw *%0"
- : : "m" (boot_params.hdr.realmode_swtch)
- : "eax", "ebx", "ecx", "edx");
- } else {
- asm volatile("cli");
- outb(0x80, 0x70); /* Disable NMI */
- io_delay();
- }
-}
-
-/*
- * Disable all interrupts at the legacy PIC.
- */
-static void mask_all_interrupts(void)
-{
- outb(0xff, 0xa1); /* Mask all interrupts on the secondary PIC */
- io_delay();
- outb(0xfb, 0x21); /* Mask all but cascade on the primary PIC */
- io_delay();
-}
-
-/*
- * Reset IGNNE# if asserted in the FPU.
- */
-static void reset_coprocessor(void)
-{
- outb(0, 0xf0);
- io_delay();
- outb(0, 0xf1);
- io_delay();
-}
-
-/*
- * Set up the GDT
- */
-
-struct gdt_ptr {
- u16 len;
- u32 ptr;
-} __attribute__((packed));
-
-static void setup_gdt(void)
-{
- /* There are machines which are known to not boot with the GDT
- being 8-byte unaligned. Intel recommends 16 byte alignment. */
- static const u64 boot_gdt[] __attribute__((aligned(16))) = {
- /* CS: code, read/execute, 4 GB, base 0 */
- [GDT_ENTRY_BOOT_CS] = GDT_ENTRY(0xc09b, 0, 0xfffff),
- /* DS: data, read/write, 4 GB, base 0 */
- [GDT_ENTRY_BOOT_DS] = GDT_ENTRY(0xc093, 0, 0xfffff),
- /* TSS: 32-bit tss, 104 bytes, base 4096 */
- /* We only have a TSS here to keep Intel VT happy;
- we don't actually use it for anything. */
- [GDT_ENTRY_BOOT_TSS] = GDT_ENTRY(0x0089, 4096, 103),
- };
- /* Xen HVM incorrectly stores a pointer to the gdt_ptr, instead
- of the gdt_ptr contents. Thus, make it static so it will
- stay in memory, at least long enough that we switch to the
- proper kernel GDT. */
- static struct gdt_ptr gdt;
-
- gdt.len = sizeof(boot_gdt)-1;
- gdt.ptr = (u32)&boot_gdt + (ds() << 4);
-
- asm volatile("lgdtl %0" : : "m" (gdt));
-}
-
-/*
- * Set up the IDT
- */
-static void setup_idt(void)
-{
- static const struct gdt_ptr null_idt = {0, 0};
- asm volatile("lidtl %0" : : "m" (null_idt));
-}
-
-/*
- * Actual invocation sequence
- */
-void go_to_protected_mode(void)
-{
- /* Hook before leaving real mode, also disables interrupts */
- realmode_switch_hook();
-
- /* Enable the A20 gate */
- if (enable_a20()) {
- puts("A20 gate not responding, unable to boot...\n");
- die();
- }
-
- /* Reset coprocessor (IGNNE#) */
- reset_coprocessor();
-
- /* Mask all interrupts in the PIC */
- mask_all_interrupts();
-
- /* Actual transition to protected mode... */
- setup_idt();
- setup_gdt();
- protected_mode_jump(boot_params.hdr.code32_start,
- (u32)&boot_params + (ds() << 4));
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/pmjump.S b/ANDROID_3.4.5/arch/x86/boot/pmjump.S
deleted file mode 100644
index 3e0edc6d..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/pmjump.S
+++ /dev/null
@@ -1,77 +0,0 @@
-/* ----------------------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * The actual transition into protected mode
- */
-
-#include <asm/boot.h>
-#include <asm/processor-flags.h>
-#include <asm/segment.h>
-#include <linux/linkage.h>
-
- .text
- .code16
-
-/*
- * void protected_mode_jump(u32 entrypoint, u32 bootparams);
- */
-GLOBAL(protected_mode_jump)
- movl %edx, %esi # Pointer to boot_params table
-
- xorl %ebx, %ebx
- movw %cs, %bx
- shll $4, %ebx
- addl %ebx, 2f
- jmp 1f # Short jump to serialize on 386/486
-1:
-
- movw $__BOOT_DS, %cx
- movw $__BOOT_TSS, %di
-
- movl %cr0, %edx
- orb $X86_CR0_PE, %dl # Protected mode
- movl %edx, %cr0
-
- # Transition to 32-bit mode
- .byte 0x66, 0xea # ljmpl opcode
-2: .long in_pm32 # offset
- .word __BOOT_CS # segment
-ENDPROC(protected_mode_jump)
-
- .code32
- .section ".text32","ax"
-GLOBAL(in_pm32)
- # Set up data segments for flat 32-bit mode
- movl %ecx, %ds
- movl %ecx, %es
- movl %ecx, %fs
- movl %ecx, %gs
- movl %ecx, %ss
- # The 32-bit code sets up its own stack, but this way we do have
- # a valid stack if some debugging hack wants to use it.
- addl %ebx, %esp
-
- # Set up TR to make Intel VT happy
- ltr %di
-
- # Clear registers to allow for future extensions to the
- # 32-bit boot protocol
- xorl %ecx, %ecx
- xorl %edx, %edx
- xorl %ebx, %ebx
- xorl %ebp, %ebp
- xorl %edi, %edi
-
- # Set up LDTR to make Intel VT happy
- lldt %cx
-
- jmpl *%eax # Jump to the 32-bit entrypoint
-ENDPROC(in_pm32)
diff --git a/ANDROID_3.4.5/arch/x86/boot/printf.c b/ANDROID_3.4.5/arch/x86/boot/printf.c
deleted file mode 100644
index cdac91ca..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/printf.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Oh, it's a waste of space, but oh-so-yummy for debugging. This
- * version of printf() does not include 64-bit support. "Live with
- * it."
- *
- */
-
-#include "boot.h"
-
-static int skip_atoi(const char **s)
-{
- int i = 0;
-
- while (isdigit(**s))
- i = i * 10 + *((*s)++) - '0';
- return i;
-}
-
-#define ZEROPAD 1 /* pad with zero */
-#define SIGN 2 /* unsigned/signed long */
-#define PLUS 4 /* show plus */
-#define SPACE 8 /* space if plus */
-#define LEFT 16 /* left justified */
-#define SMALL 32 /* Must be 32 == 0x20 */
-#define SPECIAL 64 /* 0x */
-
-#define __do_div(n, base) ({ \
-int __res; \
-__res = ((unsigned long) n) % (unsigned) base; \
-n = ((unsigned long) n) / (unsigned) base; \
-__res; })
-
-static char *number(char *str, long num, int base, int size, int precision,
- int type)
-{
- /* we are called with base 8, 10 or 16, only, thus don't need "G..." */
- static const char digits[16] = "0123456789ABCDEF"; /* "GHIJKLMNOPQRSTUVWXYZ"; */
-
- char tmp[66];
- char c, sign, locase;
- int i;
-
- /* locase = 0 or 0x20. ORing digits or letters with 'locase'
- * produces same digits or (maybe lowercased) letters */
- locase = (type & SMALL);
- if (type & LEFT)
- type &= ~ZEROPAD;
- if (base < 2 || base > 36)
- return NULL;
- c = (type & ZEROPAD) ? '0' : ' ';
- sign = 0;
- if (type & SIGN) {
- if (num < 0) {
- sign = '-';
- num = -num;
- size--;
- } else if (type & PLUS) {
- sign = '+';
- size--;
- } else if (type & SPACE) {
- sign = ' ';
- size--;
- }
- }
- if (type & SPECIAL) {
- if (base == 16)
- size -= 2;
- else if (base == 8)
- size--;
- }
- i = 0;
- if (num == 0)
- tmp[i++] = '0';
- else
- while (num != 0)
- tmp[i++] = (digits[__do_div(num, base)] | locase);
- if (i > precision)
- precision = i;
- size -= precision;
- if (!(type & (ZEROPAD + LEFT)))
- while (size-- > 0)
- *str++ = ' ';
- if (sign)
- *str++ = sign;
- if (type & SPECIAL) {
- if (base == 8)
- *str++ = '0';
- else if (base == 16) {
- *str++ = '0';
- *str++ = ('X' | locase);
- }
- }
- if (!(type & LEFT))
- while (size-- > 0)
- *str++ = c;
- while (i < precision--)
- *str++ = '0';
- while (i-- > 0)
- *str++ = tmp[i];
- while (size-- > 0)
- *str++ = ' ';
- return str;
-}
-
-int vsprintf(char *buf, const char *fmt, va_list args)
-{
- int len;
- unsigned long num;
- int i, base;
- char *str;
- const char *s;
-
- int flags; /* flags to number() */
-
- int field_width; /* width of output field */
- int precision; /* min. # of digits for integers; max
- number of chars for from string */
- int qualifier; /* 'h', 'l', or 'L' for integer fields */
-
- for (str = buf; *fmt; ++fmt) {
- if (*fmt != '%') {
- *str++ = *fmt;
- continue;
- }
-
- /* process flags */
- flags = 0;
- repeat:
- ++fmt; /* this also skips first '%' */
- switch (*fmt) {
- case '-':
- flags |= LEFT;
- goto repeat;
- case '+':
- flags |= PLUS;
- goto repeat;
- case ' ':
- flags |= SPACE;
- goto repeat;
- case '#':
- flags |= SPECIAL;
- goto repeat;
- case '0':
- flags |= ZEROPAD;
- goto repeat;
- }
-
- /* get field width */
- field_width = -1;
- if (isdigit(*fmt))
- field_width = skip_atoi(&fmt);
- else if (*fmt == '*') {
- ++fmt;
- /* it's the next argument */
- field_width = va_arg(args, int);
- if (field_width < 0) {
- field_width = -field_width;
- flags |= LEFT;
- }
- }
-
- /* get the precision */
- precision = -1;
- if (*fmt == '.') {
- ++fmt;
- if (isdigit(*fmt))
- precision = skip_atoi(&fmt);
- else if (*fmt == '*') {
- ++fmt;
- /* it's the next argument */
- precision = va_arg(args, int);
- }
- if (precision < 0)
- precision = 0;
- }
-
- /* get the conversion qualifier */
- qualifier = -1;
- if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L') {
- qualifier = *fmt;
- ++fmt;
- }
-
- /* default base */
- base = 10;
-
- switch (*fmt) {
- case 'c':
- if (!(flags & LEFT))
- while (--field_width > 0)
- *str++ = ' ';
- *str++ = (unsigned char)va_arg(args, int);
- while (--field_width > 0)
- *str++ = ' ';
- continue;
-
- case 's':
- s = va_arg(args, char *);
- len = strnlen(s, precision);
-
- if (!(flags & LEFT))
- while (len < field_width--)
- *str++ = ' ';
- for (i = 0; i < len; ++i)
- *str++ = *s++;
- while (len < field_width--)
- *str++ = ' ';
- continue;
-
- case 'p':
- if (field_width == -1) {
- field_width = 2 * sizeof(void *);
- flags |= ZEROPAD;
- }
- str = number(str,
- (unsigned long)va_arg(args, void *), 16,
- field_width, precision, flags);
- continue;
-
- case 'n':
- if (qualifier == 'l') {
- long *ip = va_arg(args, long *);
- *ip = (str - buf);
- } else {
- int *ip = va_arg(args, int *);
- *ip = (str - buf);
- }
- continue;
-
- case '%':
- *str++ = '%';
- continue;
-
- /* integer number formats - set up the flags and "break" */
- case 'o':
- base = 8;
- break;
-
- case 'x':
- flags |= SMALL;
- case 'X':
- base = 16;
- break;
-
- case 'd':
- case 'i':
- flags |= SIGN;
- case 'u':
- break;
-
- default:
- *str++ = '%';
- if (*fmt)
- *str++ = *fmt;
- else
- --fmt;
- continue;
- }
- if (qualifier == 'l')
- num = va_arg(args, unsigned long);
- else if (qualifier == 'h') {
- num = (unsigned short)va_arg(args, int);
- if (flags & SIGN)
- num = (short)num;
- } else if (flags & SIGN)
- num = va_arg(args, int);
- else
- num = va_arg(args, unsigned int);
- str = number(str, num, base, field_width, precision, flags);
- }
- *str = '\0';
- return str - buf;
-}
-
-int sprintf(char *buf, const char *fmt, ...)
-{
- va_list args;
- int i;
-
- va_start(args, fmt);
- i = vsprintf(buf, fmt, args);
- va_end(args);
- return i;
-}
-
-int printf(const char *fmt, ...)
-{
- char printf_buf[1024];
- va_list args;
- int printed;
-
- va_start(args, fmt);
- printed = vsprintf(printf_buf, fmt, args);
- va_end(args);
-
- puts(printf_buf);
-
- return printed;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/regs.c b/ANDROID_3.4.5/arch/x86/boot/regs.c
deleted file mode 100644
index 958019b1..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/regs.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -----------------------------------------------------------------------
- *
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2 or (at your
- * option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Simple helper function for initializing a register set.
- *
- * Note that this sets EFLAGS_CF in the input register set; this
- * makes it easier to catch functions which do nothing but don't
- * explicitly set CF.
- */
-
-#include "boot.h"
-
-void initregs(struct biosregs *reg)
-{
- memset(reg, 0, sizeof *reg);
- reg->eflags |= X86_EFLAGS_CF;
- reg->ds = ds();
- reg->es = ds();
- reg->fs = fs();
- reg->gs = gs();
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/setup.ld b/ANDROID_3.4.5/arch/x86/boot/setup.ld
deleted file mode 100644
index 03c06836..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/setup.ld
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * setup.ld
- *
- * Linker script for the i386 setup code
- */
-OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386)
-ENTRY(_start)
-
-SECTIONS
-{
- . = 0;
- .bstext : { *(.bstext) }
- .bsdata : { *(.bsdata) }
-
- . = 497;
- .header : { *(.header) }
- .entrytext : { *(.entrytext) }
- .inittext : { *(.inittext) }
- .initdata : { *(.initdata) }
- __end_init = .;
-
- .text : { *(.text) }
- .text32 : { *(.text32) }
-
- . = ALIGN(16);
- .rodata : { *(.rodata*) }
-
- .videocards : {
- video_cards = .;
- *(.videocards)
- video_cards_end = .;
- }
-
- . = ALIGN(16);
- .data : { *(.data*) }
-
- .signature : {
- setup_sig = .;
- LONG(0x5a5aaa55)
- }
-
-
- . = ALIGN(16);
- .bss :
- {
- __bss_start = .;
- *(.bss)
- __bss_end = .;
- }
- . = ALIGN(16);
- _end = .;
-
- /DISCARD/ : { *(.note*) }
-
- /*
- * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
- */
- . = ASSERT(_end <= 0x8000, "Setup too big!");
- . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
- /* Necessary for the very-old-loader check to work... */
- . = ASSERT(__end_init <= 5*512, "init sections too big!");
-
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/string.c b/ANDROID_3.4.5/arch/x86/boot/string.c
deleted file mode 100644
index 574dedfe..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/string.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Very basic string functions
- */
-
-#include "boot.h"
-
-int strcmp(const char *str1, const char *str2)
-{
- const unsigned char *s1 = (const unsigned char *)str1;
- const unsigned char *s2 = (const unsigned char *)str2;
- int delta = 0;
-
- while (*s1 || *s2) {
- delta = *s2 - *s1;
- if (delta)
- return delta;
- s1++;
- s2++;
- }
- return 0;
-}
-
-int strncmp(const char *cs, const char *ct, size_t count)
-{
- unsigned char c1, c2;
-
- while (count) {
- c1 = *cs++;
- c2 = *ct++;
- if (c1 != c2)
- return c1 < c2 ? -1 : 1;
- if (!c1)
- break;
- count--;
- }
- return 0;
-}
-
-size_t strnlen(const char *s, size_t maxlen)
-{
- const char *es = s;
- while (*es && maxlen) {
- es++;
- maxlen--;
- }
-
- return (es - s);
-}
-
-unsigned int atou(const char *s)
-{
- unsigned int i = 0;
- while (isdigit(*s))
- i = i * 10 + (*s++ - '0');
- return i;
-}
-
-/* Works only for digits and letters, but small and fast */
-#define TOLOWER(x) ((x) | 0x20)
-
-static unsigned int simple_guess_base(const char *cp)
-{
- if (cp[0] == '0') {
- if (TOLOWER(cp[1]) == 'x' && isxdigit(cp[2]))
- return 16;
- else
- return 8;
- } else {
- return 10;
- }
-}
-
-/**
- * simple_strtoull - convert a string to an unsigned long long
- * @cp: The start of the string
- * @endp: A pointer to the end of the parsed string will be placed here
- * @base: The number base to use
- */
-
-unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)
-{
- unsigned long long result = 0;
-
- if (!base)
- base = simple_guess_base(cp);
-
- if (base == 16 && cp[0] == '0' && TOLOWER(cp[1]) == 'x')
- cp += 2;
-
- while (isxdigit(*cp)) {
- unsigned int value;
-
- value = isdigit(*cp) ? *cp - '0' : TOLOWER(*cp) - 'a' + 10;
- if (value >= base)
- break;
- result = result * base + value;
- cp++;
- }
- if (endp)
- *endp = (char *)cp;
-
- return result;
-}
-
-/**
- * strlen - Find the length of a string
- * @s: The string to be sized
- */
-size_t strlen(const char *s)
-{
- const char *sc;
-
- for (sc = s; *sc != '\0'; ++sc)
- /* nothing */;
- return sc - s;
-}
-
-/**
- * strstr - Find the first substring in a %NUL terminated string
- * @s1: The string to be searched
- * @s2: The string to search for
- */
-char *strstr(const char *s1, const char *s2)
-{
- size_t l1, l2;
-
- l2 = strlen(s2);
- if (!l2)
- return (char *)s1;
- l1 = strlen(s1);
- while (l1 >= l2) {
- l1--;
- if (!memcmp(s1, s2, l2))
- return (char *)s1;
- s1++;
- }
- return NULL;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/tools/build.c b/ANDROID_3.4.5/arch/x86/boot/tools/build.c
deleted file mode 100644
index 24443a33..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/tools/build.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright (C) 1997 Martin Mares
- * Copyright (C) 2007 H. Peter Anvin
- */
-
-/*
- * This file builds a disk-image from two different files:
- *
- * - setup: 8086 machine code, sets up system parm
- * - system: 80386 code for actual system
- *
- * It does some checking that all files are of the correct type, and
- * just writes the result to stdout, removing headers and padding to
- * the right amount. It also writes some system data to stderr.
- */
-
-/*
- * Changes by tytso to allow root device specification
- * High loaded stuff by Hans Lermen & Werner Almesberger, Feb. 1996
- * Cross compiling fixes by Gertjan van Wingerde, July 1996
- * Rewritten by Martin Mares, April 1997
- * Substantially overhauled by H. Peter Anvin, April 2007
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <tools/le_byteshift.h>
-
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned int u32;
-
-#define DEFAULT_MAJOR_ROOT 0
-#define DEFAULT_MINOR_ROOT 0
-#define DEFAULT_ROOT_DEV (DEFAULT_MAJOR_ROOT << 8 | DEFAULT_MINOR_ROOT)
-
-/* Minimal number of setup sectors */
-#define SETUP_SECT_MIN 5
-#define SETUP_SECT_MAX 64
-
-/* This must be large enough to hold the entire setup */
-u8 buf[SETUP_SECT_MAX*512];
-int is_big_kernel;
-
-/*----------------------------------------------------------------------*/
-
-static const u32 crctab32[] = {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
- 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
- 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
- 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
- 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
- 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
- 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
- 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
- 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
- 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
- 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
- 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
- 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
- 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
- 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
- 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
- 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
- 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
- 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
- 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
- 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
- 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
- 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
- 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
- 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
- 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
- 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
- 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
- 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
- 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
- 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
- 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
- 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
- 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
- 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
- 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
- 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
- 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
- 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
- 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
- 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
- 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
- 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
- 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
- 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
- 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
- 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
- 0x2d02ef8d
-};
-
-static u32 partial_crc32_one(u8 c, u32 crc)
-{
- return crctab32[(crc ^ c) & 0xff] ^ (crc >> 8);
-}
-
-static u32 partial_crc32(const u8 *s, int len, u32 crc)
-{
- while (len--)
- crc = partial_crc32_one(*s++, crc);
- return crc;
-}
-
-static void die(const char * str, ...)
-{
- va_list args;
- va_start(args, str);
- vfprintf(stderr, str, args);
- fputc('\n', stderr);
- exit(1);
-}
-
-static void usage(void)
-{
- die("Usage: build setup system [> image]");
-}
-
-int main(int argc, char ** argv)
-{
-#ifdef CONFIG_EFI_STUB
- unsigned int file_sz, pe_header;
-#endif
- unsigned int i, sz, setup_sectors;
- int c;
- u32 sys_size;
- struct stat sb;
- FILE *file;
- int fd;
- void *kernel;
- u32 crc = 0xffffffffUL;
-
- if (argc != 3)
- usage();
-
- /* Copy the setup code */
- file = fopen(argv[1], "r");
- if (!file)
- die("Unable to open `%s': %m", argv[1]);
- c = fread(buf, 1, sizeof(buf), file);
- if (ferror(file))
- die("read-error on `setup'");
- if (c < 1024)
- die("The setup must be at least 1024 bytes");
- if (get_unaligned_le16(&buf[510]) != 0xAA55)
- die("Boot block hasn't got boot flag (0xAA55)");
- fclose(file);
-
- /* Pad unused space with zeros */
- setup_sectors = (c + 511) / 512;
- if (setup_sectors < SETUP_SECT_MIN)
- setup_sectors = SETUP_SECT_MIN;
- i = setup_sectors*512;
- memset(buf+c, 0, i-c);
-
- /* Set the default root device */
- put_unaligned_le16(DEFAULT_ROOT_DEV, &buf[508]);
-
- fprintf(stderr, "Setup is %d bytes (padded to %d bytes).\n", c, i);
-
- /* Open and stat the kernel file */
- fd = open(argv[2], O_RDONLY);
- if (fd < 0)
- die("Unable to open `%s': %m", argv[2]);
- if (fstat(fd, &sb))
- die("Unable to stat `%s': %m", argv[2]);
- sz = sb.st_size;
- fprintf (stderr, "System is %d kB\n", (sz+1023)/1024);
- kernel = mmap(NULL, sz, PROT_READ, MAP_SHARED, fd, 0);
- if (kernel == MAP_FAILED)
- die("Unable to mmap '%s': %m", argv[2]);
- /* Number of 16-byte paragraphs, including space for a 4-byte CRC */
- sys_size = (sz + 15 + 4) / 16;
-
- /* Patch the setup code with the appropriate size parameters */
- buf[0x1f1] = setup_sectors-1;
- put_unaligned_le32(sys_size, &buf[0x1f4]);
-
-#ifdef CONFIG_EFI_STUB
- file_sz = sz + i + ((sys_size * 16) - sz);
-
- pe_header = get_unaligned_le32(&buf[0x3c]);
-
- /* Size of code */
- put_unaligned_le32(file_sz, &buf[pe_header + 0x1c]);
-
- /* Size of image */
- put_unaligned_le32(file_sz, &buf[pe_header + 0x50]);
-
-#ifdef CONFIG_X86_32
- /*
- * Address of entry point.
- *
- * The EFI stub entry point is +16 bytes from the start of
- * the .text section.
- */
- put_unaligned_le32(i + 16, &buf[pe_header + 0x28]);
-
- /* .text size */
- put_unaligned_le32(file_sz, &buf[pe_header + 0xb0]);
-
- /* .text size of initialised data */
- put_unaligned_le32(file_sz, &buf[pe_header + 0xb8]);
-#else
- /*
- * Address of entry point. startup_32 is at the beginning and
- * the 64-bit entry point (startup_64) is always 512 bytes
- * after. The EFI stub entry point is 16 bytes after that, as
- * the first instruction allows legacy loaders to jump over
- * the EFI stub initialisation
- */
- put_unaligned_le32(i + 528, &buf[pe_header + 0x28]);
-
- /* .text size */
- put_unaligned_le32(file_sz, &buf[pe_header + 0xc0]);
-
- /* .text size of initialised data */
- put_unaligned_le32(file_sz, &buf[pe_header + 0xc8]);
-
-#endif /* CONFIG_X86_32 */
-#endif /* CONFIG_EFI_STUB */
-
- crc = partial_crc32(buf, i, crc);
- if (fwrite(buf, 1, i, stdout) != i)
- die("Writing setup failed");
-
- /* Copy the kernel code */
- crc = partial_crc32(kernel, sz, crc);
- if (fwrite(kernel, 1, sz, stdout) != sz)
- die("Writing kernel failed");
-
- /* Add padding leaving 4 bytes for the checksum */
- while (sz++ < (sys_size*16) - 4) {
- crc = partial_crc32_one('\0', crc);
- if (fwrite("\0", 1, 1, stdout) != 1)
- die("Writing padding failed");
- }
-
- /* Write the CRC */
- fprintf(stderr, "CRC %x\n", crc);
- put_unaligned_le32(crc, buf);
- if (fwrite(buf, 1, 4, stdout) != 4)
- die("Writing CRC failed");
-
- close(fd);
-
- /* Everything is OK */
- return 0;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/tty.c b/ANDROID_3.4.5/arch/x86/boot/tty.c
deleted file mode 100644
index def2451f..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/tty.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Very simple screen and serial I/O
- */
-
-#include "boot.h"
-
-int early_serial_base;
-
-#define XMTRDY 0x20
-
-#define TXR 0 /* Transmit register (WRITE) */
-#define LSR 5 /* Line Status */
-
-/*
- * These functions are in .inittext so they can be used to signal
- * error during initialization.
- */
-
-static void __attribute__((section(".inittext"))) serial_putchar(int ch)
-{
- unsigned timeout = 0xffff;
-
- while ((inb(early_serial_base + LSR) & XMTRDY) == 0 && --timeout)
- cpu_relax();
-
- outb(ch, early_serial_base + TXR);
-}
-
-static void __attribute__((section(".inittext"))) bios_putchar(int ch)
-{
- struct biosregs ireg;
-
- initregs(&ireg);
- ireg.bx = 0x0007;
- ireg.cx = 0x0001;
- ireg.ah = 0x0e;
- ireg.al = ch;
- intcall(0x10, &ireg, NULL);
-}
-
-void __attribute__((section(".inittext"))) putchar(int ch)
-{
- if (ch == '\n')
- putchar('\r'); /* \n -> \r\n */
-
- bios_putchar(ch);
-
- if (early_serial_base != 0)
- serial_putchar(ch);
-}
-
-void __attribute__((section(".inittext"))) puts(const char *str)
-{
- while (*str)
- putchar(*str++);
-}
-
-/*
- * Read the CMOS clock through the BIOS, and return the
- * seconds in BCD.
- */
-
-static u8 gettime(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ah = 0x02;
- intcall(0x1a, &ireg, &oreg);
-
- return oreg.dh;
-}
-
-/*
- * Read from the keyboard
- */
-int getchar(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- /* ireg.ah = 0x00; */
- intcall(0x16, &ireg, &oreg);
-
- return oreg.al;
-}
-
-static int kbd_pending(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ah = 0x01;
- intcall(0x16, &ireg, &oreg);
-
- return !(oreg.eflags & X86_EFLAGS_ZF);
-}
-
-void kbd_flush(void)
-{
- for (;;) {
- if (!kbd_pending())
- break;
- getchar();
- }
-}
-
-int getchar_timeout(void)
-{
- int cnt = 30;
- int t0, t1;
-
- t0 = gettime();
-
- while (cnt) {
- if (kbd_pending())
- return getchar();
-
- t1 = gettime();
- if (t0 != t1) {
- cnt--;
- t0 = t1;
- }
- }
-
- return 0; /* Timeout! */
-}
-
diff --git a/ANDROID_3.4.5/arch/x86/boot/version.c b/ANDROID_3.4.5/arch/x86/boot/version.c
deleted file mode 100644
index 2b15aa48..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/version.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Kernel version string
- */
-
-#include "boot.h"
-#include <generated/utsrelease.h>
-#include <generated/compile.h>
-
-const char kernel_version[] =
- UTS_RELEASE " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ") "
- UTS_VERSION;
diff --git a/ANDROID_3.4.5/arch/x86/boot/vesa.h b/ANDROID_3.4.5/arch/x86/boot/vesa.h
deleted file mode 100644
index 468e4446..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/vesa.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* ----------------------------------------------------------------------- *
- *
- * Copyright 1999-2007 H. Peter Anvin - All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, Inc., 53 Temple Place Ste 330,
- * Boston MA 02111-1307, USA; either version 2 of the License, or
- * (at your option) any later version; incorporated herein by reference.
- *
- * ----------------------------------------------------------------------- */
-
-#ifndef BOOT_VESA_H
-#define BOOT_VESA_H
-
-typedef struct {
- u16 off, seg;
-} far_ptr;
-
-/* VESA General Information table */
-struct vesa_general_info {
- u32 signature; /* 0 Magic number = "VESA" */
- u16 version; /* 4 */
- far_ptr vendor_string; /* 6 */
- u32 capabilities; /* 10 */
- far_ptr video_mode_ptr; /* 14 */
- u16 total_memory; /* 18 */
-
- u8 reserved[236]; /* 20 */
-} __attribute__ ((packed));
-
-#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
-
-struct vesa_mode_info {
- u16 mode_attr; /* 0 */
- u8 win_attr[2]; /* 2 */
- u16 win_grain; /* 4 */
- u16 win_size; /* 6 */
- u16 win_seg[2]; /* 8 */
- far_ptr win_scheme; /* 12 */
- u16 logical_scan; /* 16 */
-
- u16 h_res; /* 18 */
- u16 v_res; /* 20 */
- u8 char_width; /* 22 */
- u8 char_height; /* 23 */
- u8 memory_planes; /* 24 */
- u8 bpp; /* 25 */
- u8 banks; /* 26 */
- u8 memory_layout; /* 27 */
- u8 bank_size; /* 28 */
- u8 image_planes; /* 29 */
- u8 page_function; /* 30 */
-
- u8 rmask; /* 31 */
- u8 rpos; /* 32 */
- u8 gmask; /* 33 */
- u8 gpos; /* 34 */
- u8 bmask; /* 35 */
- u8 bpos; /* 36 */
- u8 resv_mask; /* 37 */
- u8 resv_pos; /* 38 */
- u8 dcm_info; /* 39 */
-
- u32 lfb_ptr; /* 40 Linear frame buffer address */
- u32 offscreen_ptr; /* 44 Offscreen memory address */
- u16 offscreen_size; /* 48 */
-
- u8 reserved[206]; /* 50 */
-} __attribute__ ((packed));
-
-#endif /* LIB_SYS_VESA_H */
diff --git a/ANDROID_3.4.5/arch/x86/boot/video-bios.c b/ANDROID_3.4.5/arch/x86/boot/video-bios.c
deleted file mode 100644
index 49e0c188..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/video-bios.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Standard video BIOS modes
- *
- * We have two options for this; silent and scanned.
- */
-
-#include "boot.h"
-#include "video.h"
-
-static __videocard video_bios;
-
-/* Set a conventional BIOS mode */
-static int set_bios_mode(u8 mode);
-
-static int bios_set_mode(struct mode_info *mi)
-{
- return set_bios_mode(mi->mode - VIDEO_FIRST_BIOS);
-}
-
-static int set_bios_mode(u8 mode)
-{
- struct biosregs ireg, oreg;
- u8 new_mode;
-
- initregs(&ireg);
- ireg.al = mode; /* AH=0x00 Set Video Mode */
- intcall(0x10, &ireg, NULL);
-
- ireg.ah = 0x0f; /* Get Current Video Mode */
- intcall(0x10, &ireg, &oreg);
-
- do_restore = 1; /* Assume video contents were lost */
-
- /* Not all BIOSes are clean with the top bit */
- new_mode = oreg.al & 0x7f;
-
- if (new_mode == mode)
- return 0; /* Mode change OK */
-
-#ifndef _WAKEUP
- if (new_mode != boot_params.screen_info.orig_video_mode) {
- /* Mode setting failed, but we didn't end up where we
- started. That's bad. Try to revert to the original
- video mode. */
- ireg.ax = boot_params.screen_info.orig_video_mode;
- intcall(0x10, &ireg, NULL);
- }
-#endif
- return -1;
-}
-
-static int bios_probe(void)
-{
- u8 mode;
-#ifdef _WAKEUP
- u8 saved_mode = 0x03;
-#else
- u8 saved_mode = boot_params.screen_info.orig_video_mode;
-#endif
- u16 crtc;
- struct mode_info *mi;
- int nmodes = 0;
-
- if (adapter != ADAPTER_EGA && adapter != ADAPTER_VGA)
- return 0;
-
- set_fs(0);
- crtc = vga_crtc();
-
- video_bios.modes = GET_HEAP(struct mode_info, 0);
-
- for (mode = 0x14; mode <= 0x7f; mode++) {
- if (!heap_free(sizeof(struct mode_info)))
- break;
-
- if (mode_defined(VIDEO_FIRST_BIOS+mode))
- continue;
-
- if (set_bios_mode(mode))
- continue;
-
- /* Try to verify that it's a text mode. */
-
- /* Attribute Controller: make graphics controller disabled */
- if (in_idx(0x3c0, 0x10) & 0x01)
- continue;
-
- /* Graphics Controller: verify Alpha addressing enabled */
- if (in_idx(0x3ce, 0x06) & 0x01)
- continue;
-
- /* CRTC cursor location low should be zero(?) */
- if (in_idx(crtc, 0x0f))
- continue;
-
- mi = GET_HEAP(struct mode_info, 1);
- mi->mode = VIDEO_FIRST_BIOS+mode;
- mi->depth = 0; /* text */
- mi->x = rdfs16(0x44a);
- mi->y = rdfs8(0x484)+1;
- nmodes++;
- }
-
- set_bios_mode(saved_mode);
-
- return nmodes;
-}
-
-static __videocard video_bios =
-{
- .card_name = "BIOS",
- .probe = bios_probe,
- .set_mode = bios_set_mode,
- .unsafe = 1,
- .xmode_first = VIDEO_FIRST_BIOS,
- .xmode_n = 0x80,
-};
diff --git a/ANDROID_3.4.5/arch/x86/boot/video-mode.c b/ANDROID_3.4.5/arch/x86/boot/video-mode.c
deleted file mode 100644
index 748e8d06..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/video-mode.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007-2008 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * arch/i386/boot/video-mode.c
- *
- * Set the video mode. This is separated out into a different
- * file in order to be shared with the ACPI wakeup code.
- */
-
-#include "boot.h"
-#include "video.h"
-#include "vesa.h"
-
-/*
- * Common variables
- */
-int adapter; /* 0=CGA/MDA/HGC, 1=EGA, 2=VGA+ */
-u16 video_segment;
-int force_x, force_y; /* Don't query the BIOS for cols/rows */
-
-int do_restore; /* Screen contents changed during mode flip */
-int graphic_mode; /* Graphic mode with linear frame buffer */
-
-/* Probe the video drivers and have them generate their mode lists. */
-void probe_cards(int unsafe)
-{
- struct card_info *card;
- static u8 probed[2];
-
- if (probed[unsafe])
- return;
-
- probed[unsafe] = 1;
-
- for (card = video_cards; card < video_cards_end; card++) {
- if (card->unsafe == unsafe) {
- if (card->probe)
- card->nmodes = card->probe();
- else
- card->nmodes = 0;
- }
- }
-}
-
-/* Test if a mode is defined */
-int mode_defined(u16 mode)
-{
- struct card_info *card;
- struct mode_info *mi;
- int i;
-
- for (card = video_cards; card < video_cards_end; card++) {
- mi = card->modes;
- for (i = 0; i < card->nmodes; i++, mi++) {
- if (mi->mode == mode)
- return 1;
- }
- }
-
- return 0;
-}
-
-/* Set mode (without recalc) */
-static int raw_set_mode(u16 mode, u16 *real_mode)
-{
- int nmode, i;
- struct card_info *card;
- struct mode_info *mi;
-
- /* Drop the recalc bit if set */
- mode &= ~VIDEO_RECALC;
-
- /* Scan for mode based on fixed ID, position, or resolution */
- nmode = 0;
- for (card = video_cards; card < video_cards_end; card++) {
- mi = card->modes;
- for (i = 0; i < card->nmodes; i++, mi++) {
- int visible = mi->x || mi->y;
-
- if ((mode == nmode && visible) ||
- mode == mi->mode ||
- mode == (mi->y << 8)+mi->x) {
- *real_mode = mi->mode;
- return card->set_mode(mi);
- }
-
- if (visible)
- nmode++;
- }
- }
-
- /* Nothing found? Is it an "exceptional" (unprobed) mode? */
- for (card = video_cards; card < video_cards_end; card++) {
- if (mode >= card->xmode_first &&
- mode < card->xmode_first+card->xmode_n) {
- struct mode_info mix;
- *real_mode = mix.mode = mode;
- mix.x = mix.y = 0;
- return card->set_mode(&mix);
- }
- }
-
- /* Otherwise, failure... */
- return -1;
-}
-
-/*
- * Recalculate the vertical video cutoff (hack!)
- */
-static void vga_recalc_vertical(void)
-{
- unsigned int font_size, rows;
- u16 crtc;
- u8 pt, ov;
-
- set_fs(0);
- font_size = rdfs8(0x485); /* BIOS: font size (pixels) */
- rows = force_y ? force_y : rdfs8(0x484)+1; /* Text rows */
-
- rows *= font_size; /* Visible scan lines */
- rows--; /* ... minus one */
-
- crtc = vga_crtc();
-
- pt = in_idx(crtc, 0x11);
- pt &= ~0x80; /* Unlock CR0-7 */
- out_idx(pt, crtc, 0x11);
-
- out_idx((u8)rows, crtc, 0x12); /* Lower height register */
-
- ov = in_idx(crtc, 0x07); /* Overflow register */
- ov &= 0xbd;
- ov |= (rows >> (8-1)) & 0x02;
- ov |= (rows >> (9-6)) & 0x40;
- out_idx(ov, crtc, 0x07);
-}
-
-/* Set mode (with recalc if specified) */
-int set_mode(u16 mode)
-{
- int rv;
- u16 real_mode;
-
- /* Very special mode numbers... */
- if (mode == VIDEO_CURRENT_MODE)
- return 0; /* Nothing to do... */
- else if (mode == NORMAL_VGA)
- mode = VIDEO_80x25;
- else if (mode == EXTENDED_VGA)
- mode = VIDEO_8POINT;
-
- rv = raw_set_mode(mode, &real_mode);
- if (rv)
- return rv;
-
- if (mode & VIDEO_RECALC)
- vga_recalc_vertical();
-
- /* Save the canonical mode number for the kernel, not
- an alias, size specification or menu position */
-#ifndef _WAKEUP
- boot_params.hdr.vid_mode = real_mode;
-#endif
- return 0;
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/video-vesa.c b/ANDROID_3.4.5/arch/x86/boot/video-vesa.c
deleted file mode 100644
index 11e8c6eb..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/video-vesa.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * VESA text modes
- */
-
-#include "boot.h"
-#include "video.h"
-#include "vesa.h"
-
-/* VESA information */
-static struct vesa_general_info vginfo;
-static struct vesa_mode_info vminfo;
-
-static __videocard video_vesa;
-
-#ifndef _WAKEUP
-static void vesa_store_mode_params_graphics(void);
-#else /* _WAKEUP */
-static inline void vesa_store_mode_params_graphics(void) {}
-#endif /* _WAKEUP */
-
-static int vesa_probe(void)
-{
- struct biosregs ireg, oreg;
- u16 mode;
- addr_t mode_ptr;
- struct mode_info *mi;
- int nmodes = 0;
-
- video_vesa.modes = GET_HEAP(struct mode_info, 0);
-
- initregs(&ireg);
- ireg.ax = 0x4f00;
- ireg.di = (size_t)&vginfo;
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.ax != 0x004f ||
- vginfo.signature != VESA_MAGIC ||
- vginfo.version < 0x0102)
- return 0; /* Not present */
-
- set_fs(vginfo.video_mode_ptr.seg);
- mode_ptr = vginfo.video_mode_ptr.off;
-
- while ((mode = rdfs16(mode_ptr)) != 0xffff) {
- mode_ptr += 2;
-
- if (!heap_free(sizeof(struct mode_info)))
- break; /* Heap full, can't save mode info */
-
- if (mode & ~0x1ff)
- continue;
-
- memset(&vminfo, 0, sizeof vminfo); /* Just in case... */
-
- ireg.ax = 0x4f01;
- ireg.cx = mode;
- ireg.di = (size_t)&vminfo;
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.ax != 0x004f)
- continue;
-
- if ((vminfo.mode_attr & 0x15) == 0x05) {
- /* Text Mode, TTY BIOS supported,
- supported by hardware */
- mi = GET_HEAP(struct mode_info, 1);
- mi->mode = mode + VIDEO_FIRST_VESA;
- mi->depth = 0; /* text */
- mi->x = vminfo.h_res;
- mi->y = vminfo.v_res;
- nmodes++;
- } else if ((vminfo.mode_attr & 0x99) == 0x99 &&
- (vminfo.memory_layout == 4 ||
- vminfo.memory_layout == 6) &&
- vminfo.memory_planes == 1) {
-#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
- /* Graphics mode, color, linear frame buffer
- supported. Only register the mode if
- if framebuffer is configured, however,
- otherwise the user will be left without a screen. */
- mi = GET_HEAP(struct mode_info, 1);
- mi->mode = mode + VIDEO_FIRST_VESA;
- mi->depth = vminfo.bpp;
- mi->x = vminfo.h_res;
- mi->y = vminfo.v_res;
- nmodes++;
-#endif
- }
- }
-
- return nmodes;
-}
-
-static int vesa_set_mode(struct mode_info *mode)
-{
- struct biosregs ireg, oreg;
- int is_graphic;
- u16 vesa_mode = mode->mode - VIDEO_FIRST_VESA;
-
- memset(&vminfo, 0, sizeof vminfo); /* Just in case... */
-
- initregs(&ireg);
- ireg.ax = 0x4f01;
- ireg.cx = vesa_mode;
- ireg.di = (size_t)&vminfo;
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.ax != 0x004f)
- return -1;
-
- if ((vminfo.mode_attr & 0x15) == 0x05) {
- /* It's a supported text mode */
- is_graphic = 0;
-#ifdef CONFIG_FB_BOOT_VESA_SUPPORT
- } else if ((vminfo.mode_attr & 0x99) == 0x99) {
- /* It's a graphics mode with linear frame buffer */
- is_graphic = 1;
- vesa_mode |= 0x4000; /* Request linear frame buffer */
-#endif
- } else {
- return -1; /* Invalid mode */
- }
-
-
- initregs(&ireg);
- ireg.ax = 0x4f02;
- ireg.bx = vesa_mode;
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.ax != 0x004f)
- return -1;
-
- graphic_mode = is_graphic;
- if (!is_graphic) {
- /* Text mode */
- force_x = mode->x;
- force_y = mode->y;
- do_restore = 1;
- } else {
- /* Graphics mode */
- vesa_store_mode_params_graphics();
- }
-
- return 0;
-}
-
-
-#ifndef _WAKEUP
-
-/* Switch DAC to 8-bit mode */
-static void vesa_dac_set_8bits(void)
-{
- struct biosregs ireg, oreg;
- u8 dac_size = 6;
-
- /* If possible, switch the DAC to 8-bit mode */
- if (vginfo.capabilities & 1) {
- initregs(&ireg);
- ireg.ax = 0x4f08;
- ireg.bh = 0x08;
- intcall(0x10, &ireg, &oreg);
- if (oreg.ax == 0x004f)
- dac_size = oreg.bh;
- }
-
- /* Set the color sizes to the DAC size, and offsets to 0 */
- boot_params.screen_info.red_size = dac_size;
- boot_params.screen_info.green_size = dac_size;
- boot_params.screen_info.blue_size = dac_size;
- boot_params.screen_info.rsvd_size = dac_size;
-
- boot_params.screen_info.red_pos = 0;
- boot_params.screen_info.green_pos = 0;
- boot_params.screen_info.blue_pos = 0;
- boot_params.screen_info.rsvd_pos = 0;
-}
-
-/* Save the VESA protected mode info */
-static void vesa_store_pm_info(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ax = 0x4f0a;
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.ax != 0x004f)
- return;
-
- boot_params.screen_info.vesapm_seg = oreg.es;
- boot_params.screen_info.vesapm_off = oreg.di;
-}
-
-/*
- * Save video mode parameters for graphics mode
- */
-static void vesa_store_mode_params_graphics(void)
-{
- /* Tell the kernel we're in VESA graphics mode */
- boot_params.screen_info.orig_video_isVGA = VIDEO_TYPE_VLFB;
-
- /* Mode parameters */
- boot_params.screen_info.vesa_attributes = vminfo.mode_attr;
- boot_params.screen_info.lfb_linelength = vminfo.logical_scan;
- boot_params.screen_info.lfb_width = vminfo.h_res;
- boot_params.screen_info.lfb_height = vminfo.v_res;
- boot_params.screen_info.lfb_depth = vminfo.bpp;
- boot_params.screen_info.pages = vminfo.image_planes;
- boot_params.screen_info.lfb_base = vminfo.lfb_ptr;
- memcpy(&boot_params.screen_info.red_size,
- &vminfo.rmask, 8);
-
- /* General parameters */
- boot_params.screen_info.lfb_size = vginfo.total_memory;
-
- if (vminfo.bpp <= 8)
- vesa_dac_set_8bits();
-
- vesa_store_pm_info();
-}
-
-/*
- * Save EDID information for the kernel; this is invoked, separately,
- * after mode-setting.
- */
-void vesa_store_edid(void)
-{
-#ifdef CONFIG_FIRMWARE_EDID
- struct biosregs ireg, oreg;
-
- /* Apparently used as a nonsense token... */
- memset(&boot_params.edid_info, 0x13, sizeof boot_params.edid_info);
-
- if (vginfo.version < 0x0200)
- return; /* EDID requires VBE 2.0+ */
-
- initregs(&ireg);
- ireg.ax = 0x4f15; /* VBE DDC */
- /* ireg.bx = 0x0000; */ /* Report DDC capabilities */
- /* ireg.cx = 0; */ /* Controller 0 */
- ireg.es = 0; /* ES:DI must be 0 by spec */
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.ax != 0x004f)
- return; /* No EDID */
-
- /* BH = time in seconds to transfer EDD information */
- /* BL = DDC level supported */
-
- ireg.ax = 0x4f15; /* VBE DDC */
- ireg.bx = 0x0001; /* Read EDID */
- /* ireg.cx = 0; */ /* Controller 0 */
- /* ireg.dx = 0; */ /* EDID block number */
- ireg.es = ds();
- ireg.di =(size_t)&boot_params.edid_info; /* (ES:)Pointer to block */
- intcall(0x10, &ireg, &oreg);
-#endif /* CONFIG_FIRMWARE_EDID */
-}
-
-#endif /* not _WAKEUP */
-
-static __videocard video_vesa =
-{
- .card_name = "VESA",
- .probe = vesa_probe,
- .set_mode = vesa_set_mode,
- .xmode_first = VIDEO_FIRST_VESA,
- .xmode_n = 0x200,
-};
diff --git a/ANDROID_3.4.5/arch/x86/boot/video-vga.c b/ANDROID_3.4.5/arch/x86/boot/video-vga.c
deleted file mode 100644
index 45bc9402..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/video-vga.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Common all-VGA modes
- */
-
-#include "boot.h"
-#include "video.h"
-
-static struct mode_info vga_modes[] = {
- { VIDEO_80x25, 80, 25, 0 },
- { VIDEO_8POINT, 80, 50, 0 },
- { VIDEO_80x43, 80, 43, 0 },
- { VIDEO_80x28, 80, 28, 0 },
- { VIDEO_80x30, 80, 30, 0 },
- { VIDEO_80x34, 80, 34, 0 },
- { VIDEO_80x60, 80, 60, 0 },
-};
-
-static struct mode_info ega_modes[] = {
- { VIDEO_80x25, 80, 25, 0 },
- { VIDEO_8POINT, 80, 43, 0 },
-};
-
-static struct mode_info cga_modes[] = {
- { VIDEO_80x25, 80, 25, 0 },
-};
-
-static __videocard video_vga;
-
-/* Set basic 80x25 mode */
-static u8 vga_set_basic_mode(void)
-{
- struct biosregs ireg, oreg;
- u8 mode;
-
- initregs(&ireg);
-
- /* Query current mode */
- ireg.ax = 0x0f00;
- intcall(0x10, &ireg, &oreg);
- mode = oreg.al;
-
- if (mode != 3 && mode != 7)
- mode = 3;
-
- /* Set the mode */
- ireg.ax = mode; /* AH=0: set mode */
- intcall(0x10, &ireg, NULL);
- do_restore = 1;
- return mode;
-}
-
-static void vga_set_8font(void)
-{
- /* Set 8x8 font - 80x43 on EGA, 80x50 on VGA */
- struct biosregs ireg;
-
- initregs(&ireg);
-
- /* Set 8x8 font */
- ireg.ax = 0x1112;
- /* ireg.bl = 0; */
- intcall(0x10, &ireg, NULL);
-
- /* Use alternate print screen */
- ireg.ax = 0x1200;
- ireg.bl = 0x20;
- intcall(0x10, &ireg, NULL);
-
- /* Turn off cursor emulation */
- ireg.ax = 0x1201;
- ireg.bl = 0x34;
- intcall(0x10, &ireg, NULL);
-
- /* Cursor is scan lines 6-7 */
- ireg.ax = 0x0100;
- ireg.cx = 0x0607;
- intcall(0x10, &ireg, NULL);
-}
-
-static void vga_set_14font(void)
-{
- /* Set 9x14 font - 80x28 on VGA */
- struct biosregs ireg;
-
- initregs(&ireg);
-
- /* Set 9x14 font */
- ireg.ax = 0x1111;
- /* ireg.bl = 0; */
- intcall(0x10, &ireg, NULL);
-
- /* Turn off cursor emulation */
- ireg.ax = 0x1201;
- ireg.bl = 0x34;
- intcall(0x10, &ireg, NULL);
-
- /* Cursor is scan lines 11-12 */
- ireg.ax = 0x0100;
- ireg.cx = 0x0b0c;
- intcall(0x10, &ireg, NULL);
-}
-
-static void vga_set_80x43(void)
-{
- /* Set 80x43 mode on VGA (not EGA) */
- struct biosregs ireg;
-
- initregs(&ireg);
-
- /* Set 350 scans */
- ireg.ax = 0x1201;
- ireg.bl = 0x30;
- intcall(0x10, &ireg, NULL);
-
- /* Reset video mode */
- ireg.ax = 0x0003;
- intcall(0x10, &ireg, NULL);
-
- vga_set_8font();
-}
-
-/* I/O address of the VGA CRTC */
-u16 vga_crtc(void)
-{
- return (inb(0x3cc) & 1) ? 0x3d4 : 0x3b4;
-}
-
-static void vga_set_480_scanlines(void)
-{
- u16 crtc; /* CRTC base address */
- u8 csel; /* CRTC miscellaneous output register */
-
- crtc = vga_crtc();
-
- out_idx(0x0c, crtc, 0x11); /* Vertical sync end, unlock CR0-7 */
- out_idx(0x0b, crtc, 0x06); /* Vertical total */
- out_idx(0x3e, crtc, 0x07); /* Vertical overflow */
- out_idx(0xea, crtc, 0x10); /* Vertical sync start */
- out_idx(0xdf, crtc, 0x12); /* Vertical display end */
- out_idx(0xe7, crtc, 0x15); /* Vertical blank start */
- out_idx(0x04, crtc, 0x16); /* Vertical blank end */
- csel = inb(0x3cc);
- csel &= 0x0d;
- csel |= 0xe2;
- outb(csel, 0x3c2);
-}
-
-static void vga_set_vertical_end(int lines)
-{
- u16 crtc; /* CRTC base address */
- u8 ovfw; /* CRTC overflow register */
- int end = lines-1;
-
- crtc = vga_crtc();
-
- ovfw = 0x3c | ((end >> (8-1)) & 0x02) | ((end >> (9-6)) & 0x40);
-
- out_idx(ovfw, crtc, 0x07); /* Vertical overflow */
- out_idx(end, crtc, 0x12); /* Vertical display end */
-}
-
-static void vga_set_80x30(void)
-{
- vga_set_480_scanlines();
- vga_set_vertical_end(30*16);
-}
-
-static void vga_set_80x34(void)
-{
- vga_set_480_scanlines();
- vga_set_14font();
- vga_set_vertical_end(34*14);
-}
-
-static void vga_set_80x60(void)
-{
- vga_set_480_scanlines();
- vga_set_8font();
- vga_set_vertical_end(60*8);
-}
-
-static int vga_set_mode(struct mode_info *mode)
-{
- /* Set the basic mode */
- vga_set_basic_mode();
-
- /* Override a possibly broken BIOS */
- force_x = mode->x;
- force_y = mode->y;
-
- switch (mode->mode) {
- case VIDEO_80x25:
- break;
- case VIDEO_8POINT:
- vga_set_8font();
- break;
- case VIDEO_80x43:
- vga_set_80x43();
- break;
- case VIDEO_80x28:
- vga_set_14font();
- break;
- case VIDEO_80x30:
- vga_set_80x30();
- break;
- case VIDEO_80x34:
- vga_set_80x34();
- break;
- case VIDEO_80x60:
- vga_set_80x60();
- break;
- }
-
- return 0;
-}
-
-/*
- * Note: this probe includes basic information required by all
- * systems. It should be executed first, by making sure
- * video-vga.c is listed first in the Makefile.
- */
-static int vga_probe(void)
-{
- static const char *card_name[] = {
- "CGA/MDA/HGC", "EGA", "VGA"
- };
- static struct mode_info *mode_lists[] = {
- cga_modes,
- ega_modes,
- vga_modes,
- };
- static int mode_count[] = {
- sizeof(cga_modes)/sizeof(struct mode_info),
- sizeof(ega_modes)/sizeof(struct mode_info),
- sizeof(vga_modes)/sizeof(struct mode_info),
- };
-
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
-
- ireg.ax = 0x1200;
- ireg.bl = 0x10; /* Check EGA/VGA */
- intcall(0x10, &ireg, &oreg);
-
-#ifndef _WAKEUP
- boot_params.screen_info.orig_video_ega_bx = oreg.bx;
-#endif
-
- /* If we have MDA/CGA/HGC then BL will be unchanged at 0x10 */
- if (oreg.bl != 0x10) {
- /* EGA/VGA */
- ireg.ax = 0x1a00;
- intcall(0x10, &ireg, &oreg);
-
- if (oreg.al == 0x1a) {
- adapter = ADAPTER_VGA;
-#ifndef _WAKEUP
- boot_params.screen_info.orig_video_isVGA = 1;
-#endif
- } else {
- adapter = ADAPTER_EGA;
- }
- } else {
- adapter = ADAPTER_CGA;
- }
-
- video_vga.modes = mode_lists[adapter];
- video_vga.card_name = card_name[adapter];
- return mode_count[adapter];
-}
-
-static __videocard video_vga = {
- .card_name = "VGA",
- .probe = vga_probe,
- .set_mode = vga_set_mode,
-};
diff --git a/ANDROID_3.4.5/arch/x86/boot/video.c b/ANDROID_3.4.5/arch/x86/boot/video.c
deleted file mode 100644
index 43eda284..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/video.c
+++ /dev/null
@@ -1,341 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- * Copyright 2009 Intel Corporation; author H. Peter Anvin
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Select video mode
- */
-
-#include "boot.h"
-#include "video.h"
-#include "vesa.h"
-
-static void store_cursor_position(void)
-{
- struct biosregs ireg, oreg;
-
- initregs(&ireg);
- ireg.ah = 0x03;
- intcall(0x10, &ireg, &oreg);
-
- boot_params.screen_info.orig_x = oreg.dl;
- boot_params.screen_info.orig_y = oreg.dh;
-
- if (oreg.ch & 0x20)
- boot_params.screen_info.flags |= VIDEO_FLAGS_NOCURSOR;
-
- if ((oreg.ch & 0x1f) > (oreg.cl & 0x1f))
- boot_params.screen_info.flags |= VIDEO_FLAGS_NOCURSOR;
-}
-
-static void store_video_mode(void)
-{
- struct biosregs ireg, oreg;
-
- /* N.B.: the saving of the video page here is a bit silly,
- since we pretty much assume page 0 everywhere. */
- initregs(&ireg);
- ireg.ah = 0x0f;
- intcall(0x10, &ireg, &oreg);
-
- /* Not all BIOSes are clean with respect to the top bit */
- boot_params.screen_info.orig_video_mode = oreg.al & 0x7f;
- boot_params.screen_info.orig_video_page = oreg.bh;
-}
-
-/*
- * Store the video mode parameters for later usage by the kernel.
- * This is done by asking the BIOS except for the rows/columns
- * parameters in the default 80x25 mode -- these are set directly,
- * because some very obscure BIOSes supply insane values.
- */
-static void store_mode_params(void)
-{
- u16 font_size;
- int x, y;
-
- /* For graphics mode, it is up to the mode-setting driver
- (currently only video-vesa.c) to store the parameters */
- if (graphic_mode)
- return;
-
- store_cursor_position();
- store_video_mode();
-
- if (boot_params.screen_info.orig_video_mode == 0x07) {
- /* MDA, HGC, or VGA in monochrome mode */
- video_segment = 0xb000;
- } else {
- /* CGA, EGA, VGA and so forth */
- video_segment = 0xb800;
- }
-
- set_fs(0);
- font_size = rdfs16(0x485); /* Font size, BIOS area */
- boot_params.screen_info.orig_video_points = font_size;
-
- x = rdfs16(0x44a);
- y = (adapter == ADAPTER_CGA) ? 25 : rdfs8(0x484)+1;
-
- if (force_x)
- x = force_x;
- if (force_y)
- y = force_y;
-
- boot_params.screen_info.orig_video_cols = x;
- boot_params.screen_info.orig_video_lines = y;
-}
-
-static unsigned int get_entry(void)
-{
- char entry_buf[4];
- int i, len = 0;
- int key;
- unsigned int v;
-
- do {
- key = getchar();
-
- if (key == '\b') {
- if (len > 0) {
- puts("\b \b");
- len--;
- }
- } else if ((key >= '0' && key <= '9') ||
- (key >= 'A' && key <= 'Z') ||
- (key >= 'a' && key <= 'z')) {
- if (len < sizeof entry_buf) {
- entry_buf[len++] = key;
- putchar(key);
- }
- }
- } while (key != '\r');
- putchar('\n');
-
- if (len == 0)
- return VIDEO_CURRENT_MODE; /* Default */
-
- v = 0;
- for (i = 0; i < len; i++) {
- v <<= 4;
- key = entry_buf[i] | 0x20;
- v += (key > '9') ? key-'a'+10 : key-'0';
- }
-
- return v;
-}
-
-static void display_menu(void)
-{
- struct card_info *card;
- struct mode_info *mi;
- char ch;
- int i;
- int nmodes;
- int modes_per_line;
- int col;
-
- nmodes = 0;
- for (card = video_cards; card < video_cards_end; card++)
- nmodes += card->nmodes;
-
- modes_per_line = 1;
- if (nmodes >= 20)
- modes_per_line = 3;
-
- for (col = 0; col < modes_per_line; col++)
- puts("Mode: Resolution: Type: ");
- putchar('\n');
-
- col = 0;
- ch = '0';
- for (card = video_cards; card < video_cards_end; card++) {
- mi = card->modes;
- for (i = 0; i < card->nmodes; i++, mi++) {
- char resbuf[32];
- int visible = mi->x && mi->y;
- u16 mode_id = mi->mode ? mi->mode :
- (mi->y << 8)+mi->x;
-
- if (!visible)
- continue; /* Hidden mode */
-
- if (mi->depth)
- sprintf(resbuf, "%dx%d", mi->y, mi->depth);
- else
- sprintf(resbuf, "%d", mi->y);
-
- printf("%c %03X %4dx%-7s %-6s",
- ch, mode_id, mi->x, resbuf, card->card_name);
- col++;
- if (col >= modes_per_line) {
- putchar('\n');
- col = 0;
- }
-
- if (ch == '9')
- ch = 'a';
- else if (ch == 'z' || ch == ' ')
- ch = ' '; /* Out of keys... */
- else
- ch++;
- }
- }
- if (col)
- putchar('\n');
-}
-
-#define H(x) ((x)-'a'+10)
-#define SCAN ((H('s')<<12)+(H('c')<<8)+(H('a')<<4)+H('n'))
-
-static unsigned int mode_menu(void)
-{
- int key;
- unsigned int sel;
-
- puts("Press <ENTER> to see video modes available, "
- "<SPACE> to continue, or wait 30 sec\n");
-
- kbd_flush();
- while (1) {
- key = getchar_timeout();
- if (key == ' ' || key == 0)
- return VIDEO_CURRENT_MODE; /* Default */
- if (key == '\r')
- break;
- putchar('\a'); /* Beep! */
- }
-
-
- for (;;) {
- display_menu();
-
- puts("Enter a video mode or \"scan\" to scan for "
- "additional modes: ");
- sel = get_entry();
- if (sel != SCAN)
- return sel;
-
- probe_cards(1);
- }
-}
-
-/* Save screen content to the heap */
-static struct saved_screen {
- int x, y;
- int curx, cury;
- u16 *data;
-} saved;
-
-static void save_screen(void)
-{
- /* Should be called after store_mode_params() */
- saved.x = boot_params.screen_info.orig_video_cols;
- saved.y = boot_params.screen_info.orig_video_lines;
- saved.curx = boot_params.screen_info.orig_x;
- saved.cury = boot_params.screen_info.orig_y;
-
- if (!heap_free(saved.x*saved.y*sizeof(u16)+512))
- return; /* Not enough heap to save the screen */
-
- saved.data = GET_HEAP(u16, saved.x*saved.y);
-
- set_fs(video_segment);
- copy_from_fs(saved.data, 0, saved.x*saved.y*sizeof(u16));
-}
-
-static void restore_screen(void)
-{
- /* Should be called after store_mode_params() */
- int xs = boot_params.screen_info.orig_video_cols;
- int ys = boot_params.screen_info.orig_video_lines;
- int y;
- addr_t dst = 0;
- u16 *src = saved.data;
- struct biosregs ireg;
-
- if (graphic_mode)
- return; /* Can't restore onto a graphic mode */
-
- if (!src)
- return; /* No saved screen contents */
-
- /* Restore screen contents */
-
- set_fs(video_segment);
- for (y = 0; y < ys; y++) {
- int npad;
-
- if (y < saved.y) {
- int copy = (xs < saved.x) ? xs : saved.x;
- copy_to_fs(dst, src, copy*sizeof(u16));
- dst += copy*sizeof(u16);
- src += saved.x;
- npad = (xs < saved.x) ? 0 : xs-saved.x;
- } else {
- npad = xs;
- }
-
- /* Writes "npad" blank characters to
- video_segment:dst and advances dst */
- asm volatile("pushw %%es ; "
- "movw %2,%%es ; "
- "shrw %%cx ; "
- "jnc 1f ; "
- "stosw \n\t"
- "1: rep;stosl ; "
- "popw %%es"
- : "+D" (dst), "+c" (npad)
- : "bdS" (video_segment),
- "a" (0x07200720));
- }
-
- /* Restore cursor position */
- if (saved.curx >= xs)
- saved.curx = xs-1;
- if (saved.cury >= ys)
- saved.cury = ys-1;
-
- initregs(&ireg);
- ireg.ah = 0x02; /* Set cursor position */
- ireg.dh = saved.cury;
- ireg.dl = saved.curx;
- intcall(0x10, &ireg, NULL);
-
- store_cursor_position();
-}
-
-void set_video(void)
-{
- u16 mode = boot_params.hdr.vid_mode;
-
- RESET_HEAP();
-
- store_mode_params();
- save_screen();
- probe_cards(0);
-
- for (;;) {
- if (mode == ASK_VGA)
- mode = mode_menu();
-
- if (!set_mode(mode))
- break;
-
- printf("Undefined video mode number: %x\n", mode);
- mode = ASK_VGA;
- }
- boot_params.hdr.vid_mode = mode;
- vesa_store_edid();
- store_mode_params();
-
- if (do_restore)
- restore_screen();
-}
diff --git a/ANDROID_3.4.5/arch/x86/boot/video.h b/ANDROID_3.4.5/arch/x86/boot/video.h
deleted file mode 100644
index ff339c5d..00000000
--- a/ANDROID_3.4.5/arch/x86/boot/video.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- linux-c -*- ------------------------------------------------------- *
- *
- * Copyright (C) 1991, 1992 Linus Torvalds
- * Copyright 2007 rPath, Inc. - All Rights Reserved
- *
- * This file is part of the Linux kernel, and is made available under
- * the terms of the GNU General Public License version 2.
- *
- * ----------------------------------------------------------------------- */
-
-/*
- * Header file for the real-mode video probing code
- */
-
-#ifndef BOOT_VIDEO_H
-#define BOOT_VIDEO_H
-
-#include <linux/types.h>
-
-/*
- * This code uses an extended set of video mode numbers. These include:
- * Aliases for standard modes
- * NORMAL_VGA (-1)
- * EXTENDED_VGA (-2)
- * ASK_VGA (-3)
- * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
- * of compatibility when extending the table. These are between 0x00 and 0xff.
- */
-#define VIDEO_FIRST_MENU 0x0000
-
-/* Standard BIOS video modes (BIOS number + 0x0100) */
-#define VIDEO_FIRST_BIOS 0x0100
-
-/* VESA BIOS video modes (VESA number + 0x0200) */
-#define VIDEO_FIRST_VESA 0x0200
-
-/* Video7 special modes (BIOS number + 0x0900) */
-#define VIDEO_FIRST_V7 0x0900
-
-/* Special video modes */
-#define VIDEO_FIRST_SPECIAL 0x0f00
-#define VIDEO_80x25 0x0f00
-#define VIDEO_8POINT 0x0f01
-#define VIDEO_80x43 0x0f02
-#define VIDEO_80x28 0x0f03
-#define VIDEO_CURRENT_MODE 0x0f04
-#define VIDEO_80x30 0x0f05
-#define VIDEO_80x34 0x0f06
-#define VIDEO_80x60 0x0f07
-#define VIDEO_GFX_HACK 0x0f08
-#define VIDEO_LAST_SPECIAL 0x0f09
-
-/* Video modes given by resolution */
-#define VIDEO_FIRST_RESOLUTION 0x1000
-
-/* The "recalculate timings" flag */
-#define VIDEO_RECALC 0x8000
-
-void store_screen(void);
-#define DO_STORE() store_screen()
-
-/*
- * Mode table structures
- */
-
-struct mode_info {
- u16 mode; /* Mode number (vga= style) */
- u16 x, y; /* Width, height */
- u16 depth; /* Bits per pixel, 0 for text mode */
-};
-
-struct card_info {
- const char *card_name;
- int (*set_mode)(struct mode_info *mode);
- int (*probe)(void);
- struct mode_info *modes;
- int nmodes; /* Number of probed modes so far */
- int unsafe; /* Probing is unsafe, only do after "scan" */
- u16 xmode_first; /* Unprobed modes to try to call anyway */
- u16 xmode_n; /* Size of unprobed mode range */
-};
-
-#define __videocard struct card_info __attribute__((section(".videocards")))
-extern struct card_info video_cards[], video_cards_end[];
-
-int mode_defined(u16 mode); /* video.c */
-
-/* Basic video information */
-#define ADAPTER_CGA 0 /* CGA/MDA/HGC */
-#define ADAPTER_EGA 1
-#define ADAPTER_VGA 2
-
-extern int adapter;
-extern u16 video_segment;
-extern int force_x, force_y; /* Don't query the BIOS for cols/rows */
-extern int do_restore; /* Restore screen contents */
-extern int graphic_mode; /* Graphics mode with linear frame buffer */
-
-/* Accessing VGA indexed registers */
-static inline u8 in_idx(u16 port, u8 index)
-{
- outb(index, port);
- return inb(port+1);
-}
-
-static inline void out_idx(u8 v, u16 port, u8 index)
-{
- outw(index+(v << 8), port);
-}
-
-/* Writes a value to an indexed port and then reads the port again */
-static inline u8 tst_idx(u8 v, u16 port, u8 index)
-{
- out_idx(port, index, v);
- return in_idx(port, index);
-}
-
-/* Get the I/O port of the VGA CRTC */
-u16 vga_crtc(void); /* video-vga.c */
-
-#endif /* BOOT_VIDEO_H */