]> git.sur5r.net Git - u-boot/commitdiff
x86: Remove unused real mode code
authorSimon Glass <sjg@chromium.org>
Thu, 14 Feb 2013 17:38:30 +0000 (17:38 +0000)
committerSimon Glass <sjg@chromium.org>
Fri, 15 Feb 2013 04:19:03 +0000 (20:19 -0800)
This code is pretty old and we want to support only 32-bit systems now.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Graeme Russ <graeme.russ@gmail.com>
12 files changed:
README
arch/x86/include/asm/realmode.h [deleted file]
arch/x86/lib/Makefile
arch/x86/lib/bios.S [deleted file]
arch/x86/lib/bios.h
arch/x86/lib/bios_pci.S [deleted file]
arch/x86/lib/bios_setup.c [deleted file]
arch/x86/lib/realmode.c [deleted file]
arch/x86/lib/realmode_switch.S [deleted file]
arch/x86/lib/video.c
arch/x86/lib/video_bios.c [deleted file]
arch/x86/lib/zimage.c

diff --git a/README b/README
index 6106e0d2aaec77ea3f36f613dde691e25f9f6bfa..d8cb3940d4f04810dcc6fe88a5f03f0b0cd5d8a8 100644 (file)
--- a/README
+++ b/README
@@ -3820,11 +3820,6 @@ Low Level (hardware related) configuration options:
                If defined, the x86 reset vector code is included. This is not
                needed when U-Boot is running from Coreboot.
 
-- CONFIG_X86_NO_REAL_MODE
-               If defined, x86 real mode code is omitted. This assumes a
-               32-bit environment where such code is not needed. You will
-               need to do this when U-Boot is running from Coreboot.
-
 
 Freescale QE/FMAN Firmware Support:
 -----------------------------------
diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h
deleted file mode 100644 (file)
index 0f12a89..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef __ASM_REALMODE_H_
-#define __ASM_REALMODE_H_
-#include <asm/ptrace.h>
-
-extern ulong __realmode_start;
-extern ulong __realmode_size;
-extern char realmode_enter;
-
-int bios_setup(void);
-int enter_realmode(u16 seg, u16 off, struct pt_regs *in, struct pt_regs *out);
-int enter_realmode_int(u8 lvl, struct pt_regs *in, struct pt_regs *out);
-
-#endif
index 0a52cc896c6b9c36b920f7d3fc91fdd3a2c17603..9b24dc5fdf025eac7e727c84ee6eb998124c26a4 100644 (file)
@@ -25,16 +25,6 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(ARCH).o
 
-ifeq ($(CONFIG_X86_NO_REAL_MODE),)
-SOBJS-$(CONFIG_SYS_PC_BIOS)    += bios.o
-SOBJS-$(CONFIG_SYS_PCI_BIOS)   += bios_pci.o
-COBJS-y        += realmode.o
-SOBJS-y        += realmode_switch.o
-
-COBJS-$(CONFIG_SYS_PC_BIOS)    += bios_setup.o
-COBJS-$(CONFIG_VIDEO_VGA)      += video_bios.o
-endif
-
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cmd_boot.o
diff --git a/arch/x86/lib/bios.S b/arch/x86/lib/bios.S
deleted file mode 100644 (file)
index 239aaa9..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
- * Based on msbios.c from rolo 1.6:
- *----------------------------------------------------------------------
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions GmbH
- * Klein-Winternheim, Germany
- *----------------------------------------------------------------------
- */
-
-#include "bios.h"
-
-/*
- * During it's initialization phase, before switching to protected
- * mode, the Linux Kernel makes a few BIOS calls. This won't work
- * if the board does not have a BIOS.
- *
- * This is a very minimalisic BIOS that supplies just enough
- * functionality to keep the Linux Kernel happy. It is NOT
- * a general purpose replacement for a real BIOS !!
- */
-
-.section .bios, "ax"
-.code16
-.org 0
-       /* a call to f000:0 should warmboot */
-       jmp     realmode_reset
-
-.globl rm_int00
-.hidden rm_int00
-.type rm_int00, @function
-rm_int00:
-       pushw   $0
-       jmp     any_interrupt16
-.globl rm_int01
-.hidden rm_int01
-.type rm_int01, @function
-rm_int01:
-       pushw   $1
-       jmp     any_interrupt16
-.globl rm_int02
-.hidden rm_int02
-.type rm_int02, @function
-rm_int02:
-       pushw   $2
-       jmp     any_interrupt16
-.globl rm_int03
-.hidden rm_int03
-.type rm_int03, @function
-rm_int03:
-       pushw   $3
-       jmp     any_interrupt16
-.globl rm_int04
-.hidden rm_int04
-.type rm_int04, @function
-rm_int04:
-       pushw   $4
-       jmp     any_interrupt16
-.globl rm_int05
-.hidden rm_int05
-.type rm_int05, @function
-rm_int05:
-       pushw   $5
-       jmp     any_interrupt16
-.globl rm_int06
-.hidden rm_int06
-.type rm_int06, @function
-rm_int06:
-       pushw   $6
-       jmp     any_interrupt16
-.globl rm_int07
-.hidden rm_int07
-.type rm_int07, @function
-rm_int07:
-       pushw   $7
-       jmp     any_interrupt16
-.globl rm_int08
-.hidden rm_int08
-.type rm_int08, @function
-rm_int08:
-       pushw   $8
-       jmp     any_interrupt16
-.globl rm_int09
-.hidden rm_int09
-.type rm_int09, @function
-rm_int09:
-       pushw   $9
-       jmp     any_interrupt16
-.globl rm_int0a
-.hidden rm_int0a
-.type rm_int0a, @function
-rm_int0a:
-       pushw   $10
-       jmp     any_interrupt16
-.globl rm_int0b
-.hidden rm_int0b
-.type rm_int0b, @function
-rm_int0b:
-       pushw   $11
-       jmp     any_interrupt16
-.globl rm_int0c
-.hidden rm_int0c
-.type rm_int0c, @function
-rm_int0c:
-       pushw   $12
-       jmp     any_interrupt16
-.globl rm_int0d
-.hidden rm_int0d
-.type rm_int0d, @function
-rm_int0d:
-       pushw   $13
-       jmp     any_interrupt16
-.globl rm_int0e
-.hidden rm_int0e
-.type rm_int0e, @function
-rm_int0e:
-       pushw   $14
-       jmp     any_interrupt16
-.globl rm_int0f
-.hidden rm_int0f
-.type rm_int0f, @function
-rm_int0f:
-       pushw   $15
-       jmp     any_interrupt16
-.globl rm_int10
-.hidden rm_int10
-.type rm_int10, @function
-rm_int10:
-       pushw   $16
-       jmp     any_interrupt16
-.globl rm_int11
-.hidden rm_int11
-.type rm_int11, @function
-rm_int11:
-       pushw   $17
-       jmp     any_interrupt16
-.globl rm_int12
-.hidden rm_int12
-.type rm_int12, @function
-rm_int12:
-       pushw   $18
-       jmp     any_interrupt16
-.globl rm_int13
-.hidden rm_int13
-.type rm_int13, @function
-rm_int13:
-       pushw   $19
-       jmp     any_interrupt16
-.globl rm_int14
-.hidden rm_int14
-.type rm_int14, @function
-rm_int14:
-       pushw   $20
-       jmp     any_interrupt16
-.globl rm_int15
-.hidden rm_int15
-.type rm_int15, @function
-rm_int15:
-       pushw   $21
-       jmp     any_interrupt16
-.globl rm_int16
-.hidden rm_int16
-.type rm_int16, @function
-rm_int16:
-       pushw   $22
-       jmp     any_interrupt16
-.globl rm_int17
-.hidden rm_int17
-.type rm_int17, @function
-rm_int17:
-       pushw   $23
-       jmp     any_interrupt16
-.globl rm_int18
-.hidden rm_int18
-.type rm_int18, @function
-rm_int18:
-       pushw   $24
-       jmp     any_interrupt16
-.globl rm_int19
-.hidden rm_int19
-.type rm_int19, @function
-rm_int19:
-       pushw   $25
-       jmp     any_interrupt16
-.globl rm_int1a
-.hidden rm_int1a
-.type rm_int1a, @function
-rm_int1a:
-       pushw   $26
-       jmp     any_interrupt16
-.globl rm_int1b
-.hidden rm_int1b
-.type rm_int1b, @function
-rm_int1b:
-       pushw   $27
-       jmp     any_interrupt16
-.globl rm_int1c
-.hidden rm_int1c
-.type rm_int1c, @function
-rm_int1c:
-       pushw   $28
-       jmp     any_interrupt16
-.globl rm_int1d
-.hidden rm_int1d
-.type rm_int1d, @function
-rm_int1d:
-       pushw   $29
-       jmp     any_interrupt16
-.globl rm_int1e
-.hidden rm_int1e
-.type rm_int1e, @function
-rm_int1e:
-       pushw   $30
-       jmp     any_interrupt16
-.globl rm_int1f
-.hidden rm_int1f
-.type rm_int1f, @function
-rm_int1f:
-       pushw   $31
-       jmp     any_interrupt16
-.globl rm_def_int
-.hidden rm_def_int
-.type rm_def_int, @function
-rm_def_int:
-       iret
-
-       /*
-        * All interrupt jumptable entries jump to here after pushing the
-        * interrupt vector number onto the stack.
-        */
-any_interrupt16:
-       MAKE_BIOS_STACK
-
-gs     movw    OFFS_VECTOR(%bp), %ax
-       cmpw    $0x10, %ax
-       je      Lint_10h
-       cmpw    $0x11, %ax
-       je      Lint_11h
-       cmpw    $0x12, %ax
-       je      Lint_12h
-       cmpw    $0x13, %ax
-       je      Lint_13h
-       cmpw    $0x15, %ax
-       je      Lint_15h
-       cmpw    $0x16, %ax
-       je      Lint_16h
-       cmpw    $0x1a, %ax
-       je      Lint_1ah
-       movw    $0xffff, %ax
-       jmp     Lout
-Lint_10h:
-       /* VGA BIOS services */
-       call    bios_10h
-       jmp     Lout
-Lint_11h:
-       call    bios_11h
-       jmp     Lout
-Lint_12h:
-       call    bios_12h
-       jmp     Lout
-Lint_13h:
-       /* BIOS disk services */
-       call    bios_13h
-       jmp     Lout
-Lint_15h:
-       /* Misc. BIOS services */
-       call    bios_15h
-       jmp     Lout
-Lint_16h:
-       /* keyboard services */
-       call    bios_16h
-       jmp     Lout
-Lint_1ah:
-       /* PCI bios */
-       call    bios_1ah
-       jmp     Lout
-Lout:
-       cmpw    $0, %ax
-       je      Lhandeled
-
-       /*
-        * Insert code for unhandeled INTs here.
-        *
-        * ROLO prints a message to the console we could do that but then
-        * we're in 16bit mode so we'll have to get back into 32bit mode
-        * to use the console I/O routines (if we do this we should make
-        * int 0x10 and int 0x16 work as well)
-        */
-Lhandeled:
-       RESTORE_CALLERS_STACK
-
-       /* dump vector number */
-       addw    $2,%sp
-
-       /* return from interrupt */
-       iret
-
-/*
- ************************************************************
- * BIOS        interrupt 10h -- VGA services
- ************************************************************
- */
-bios_10h:
-gs     movw    OFFS_AX(%bp), %ax
-       shrw    $8, %ax
-       cmpw    $0x3, %ax
-       je      Lcur_pos
-       cmpw    $0xf, %ax
-       je      Lvid_state
-       cmpw    $0x12, %ax
-       je      Lvid_cfg
-       movw    $0xffff, %ax
-       ret
-Lcur_pos:
-       /* Read Cursor Position and Size */
-gs     movw    $0, OFFS_CX(%bp)
-gs     movw    $0, OFFS_DX(%bp)
-       xorw    %ax, %ax
-       ret
-Lvid_state:
-       /* Get Video State - 80 columns, 80x25, 16 colors */
-gs     movw    $(80 << 8|0x03), OFFS_AX(%bp)
-gs     movw    $0, OFFS_BX(%bp)
-       xorw    %ax, %ax
-       ret
-Lvid_cfg:
-       /* Video Subsystem Configuration (EGA/VGA) - indicate CGA/MDA/HGA */
-gs     movw    $0x10, OFFS_BX(%bp)
-       xorw    %ax, %ax
-       ret
-
-/*
- ************************************************************
- * BIOS interrupt 11h -- Equipment determination
- ************************************************************
- */
-
-bios_11h:
-cs     movw    bios_equipment, %ax
-gs     movw    %ax, OFFS_AX(%bp)
-       xorw    %ax, %ax
-       ret
-
-/*
- ************************************************************
- * BIOS        interrupt 12h -- Get Memory Size
- ************************************************************
- */
-bios_12h:
-cs     movw    ram_in_64kb_chunks, %ax
-       cmpw    $0xa, %ax
-       ja      b12_more_than_640k
-       shlw    $6, %ax
-       jmp     b12_return
-b12_more_than_640k:
-       movw    $0x280, %ax
-b12_return:
-       /* return number of kilobytes in ax */
-gs     movw    %ax, OFFS_AX(%bp)
-
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* clear carry -- function succeeded */
-       andw    $0xfffe, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-
-       xorw    %ax, %ax
-       ret
-
-/*
- ************************************************************
- * BIOS interrupt 13h -- Disk services
- ************************************************************
- */
-bios_13h:
-gs     movw    OFFS_AX(%bp), %ax
-       shrw    $8, %ax
-       cmpw    $0x15, %ax
-       je      Lfunc_15h
-       movw    $0xffff, %ax
-       ret
-Lfunc_15h:
-gs     movw    OFFS_AX(%bp), %ax
-
-       /* return AH=0->drive not present */
-       andw    $0x00ff, %ax
-gs     movw    %ax, OFFS_AX(%bp)
-       xorw    %ax, %ax
-       ret
-
-/*
- ***********************************************************
- * BIOS interrupt 15h -- Miscellaneous services
- ***********************************************************
- */
-bios_15h:
-gs     movw    OFFS_AX(%bp), %ax
-       shrw    $8, %ax
-       cmpw    $0xc0, %ax
-       je      Lfunc_c0h
-       cmpw    $0xe8, %ax
-       je      Lfunc_e8h
-       cmpw    $0x88, %ax
-       je      Lfunc_88h
-       movw    $0xffff, %ax
-       ret
-
-Lfunc_c0h:
-       /* Return System Configuration Parameters (PS2 only) */
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* return carry -- function not supported */
-       orw     $1, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-       xorw    %ax, %ax
-       ret
-
-Lfunc_e8h:
-gs     movw    OFFS_AX(%bp), %ax
-       andw    $0xff, %ax
-       cmpw    $1, %ax
-       je      Lfunc_e801h
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* return carry -- function not supported */
-       orw     $1, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-       xorw    %ax, %ax
-       ret
-
-Lfunc_e801h:
-       /* Get memory size for >64M Configurations */
-cs     movw    ram_in_64kb_chunks, %ax
-       cmpw    $0x100, %ax
-       ja      e801_more_than_16mb
-
-       /* multiply by 64 */
-       shlw    $6, %ax
-
-       /* 1st meg does not count */
-       subw    $0x400, %ax
-
-       /* return memory size between 1M and 16M in 1kb chunks in AX and CX */
-gs     movw    %ax, OFFS_AX(%bp)
-gs     movw    %ax, OFFS_CX(%bp)
-
-       /* set BX and DX to 0*/
-gs     movw    $0, OFFS_BX(%bp)
-gs     movw    $0, OFFS_DX(%bp)
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* clear carry -- function succeeded */
-       andw    $0xfffe, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-       xorw    %ax, %ax
-       ret
-
-e801_more_than_16mb:
-       /* subtract 16MB */
-       subw    $0x100, %ax
-
-       /* return 0x3c00 (16MB-1MB) in AX and CX */
-gs     movw    $0x3c00, OFFS_AX(%bp)
-gs     movw    $0x3c00, OFFS_CX(%bp)
-
-       /* set BX and DX to number of 64kb chunks above 16MB */
-gs     movw    %ax, OFFS_BX(%bp)
-gs     movw    %ax, OFFS_DX(%bp)
-
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* clear carry -- function succeeded */
-       andw    $0xfffe, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-       xorw    %ax, %ax
-       ret
-
-Lfunc_88h:
-cs     movw    ram_in_64kb_chunks, %ax
-       cmpw    $0x100, %ax
-       jna     b88_not_more_than16
-       movw    $0x100, %ax
-b88_not_more_than16:
-       shlw    $6, %ax
-
-       /* 1st meg does not count */
-       subw    $0x400, %ax
-
-       /* return number of kilobytes between 16MB and 16MB in ax */
-gs     movw    %ax, OFFS_AX(%bp)
-
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* clear carry -- function succeeded */
-       andw    $0xfffe, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-
-       xorw    %ax, %ax
-       ret
-
-/*
- ************************************************************
- * BIOS interrupt 16h -- keyboard services
- ************************************************************
- */
-bios_16h:
-gs     movw    OFFS_AX(%bp), %ax
-       shrw    $8, %ax
-       cmpw    $0x03, %ax
-       je      Lfunc_03h
-       movw    $0xffff, %ax
-       ret
-Lfunc_03h:
-       /* do nothing -- function not supported */
-       xorw    %ax, %ax
-       ret
-
-/*
- ************************************************************
- * BIOS interrupt 1ah -- PCI bios
- ************************************************************
- */
-bios_1ah:
-gs     movw    OFFS_AX(%bp), %ax
-       cmpb    $0xb1, %ah
-       je      Lfunc_b1h
-       movw    $0xffff, %ax
-       ret
-Lfunc_b1h:
-       call    realmode_pci_bios
-
-       /* do nothing -- function not supported */
-       xorw    %ax, %ax
-       ret
-
-
-.globl ram_in_64kb_chunks
-.hidden ram_in_64kb_chunks
-.type ram_in_64kb_chunks, @function
-ram_in_64kb_chunks:
-       .word   0
-
-.globl bios_equipment
-.hidden bios_equipment
-.type bios_equipment, @function
-bios_equipment:
-       .word   0
index a220983df134f6b50090d2701710a0ee942ff30b..96509b066e7f507861d3bbf65596b3a7f929a556 100644 (file)
@@ -145,9 +145,6 @@ extern void *rm_int1e;
 extern void *rm_int1f;
 extern void *rm_def_int;
 
-extern void *realmode_reset;
-extern void *realmode_pci_bios_call_entry;
-
 #define RELOC_16_LONG(seg, off) (*(u32 *)(seg << 4 | (u32)&off))
 #define RELOC_16_WORD(seg, off) (*(u16 *)(seg << 4 | (u32)&off))
 #define RELOC_16_BYTE(seg, off) (*(u8 *)(seg << 4 | (u32)&off))
diff --git a/arch/x86/lib/bios_pci.S b/arch/x86/lib/bios_pci.S
deleted file mode 100644 (file)
index 47c478b..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
- * x86 realmode assembly implementation of a PCI BIOS
- * for platforms that use one PCI hose and configuration
- * access type 1. (The common case for low-end PC's)
- */
-
-#include "bios.h"
-
-#define PCI_BIOS_DEBUG
-
-.section .bios, "ax"
-.code16
-.globl realmode_pci_bios_call_entry
-.hidden realmode_pci_bios_call_entry
-.type realmode_pci_bios_call_entry, @function
-realmode_pci_bios_call_entry:
-       MAKE_BIOS_STACK
-       call realmode_pci_bios
-       RESTORE_CALLERS_STACK
-       ret
-
-
-.globl realmode_pci_bios
-realmode_pci_bios:
-gs     movw    OFFS_AX(%bp), %ax
-       cmpb    $1, %al
-       je      pci_bios_present
-       cmpb    $2, %al
-       je      pci_bios_find_device
-       cmpb    $3, %al
-       je      pci_bios_find_class
-       cmpb    $6, %al
-       je      pci_bios_generate_special_cycle
-       cmpb    $8, %al
-       je      pci_bios_read_cfg_byte
-       cmpb    $9, %al
-       je      pci_bios_read_cfg_word
-       cmpb    $10, %al
-       je      pci_bios_read_cfg_dword
-       cmpb    $11, %al
-       je      pci_bios_write_cfg_byte
-       cmpb    $12, %al
-       je      pci_bios_write_cfg_word
-       cmpb    $13, %al
-       je      pci_bios_write_cfg_dword
-       cmpb    $14, %al
-       je      pci_bios_get_irq_routing
-       cmpb    $15, %al
-       je      pci_bios_set_irq
-       jmp     unknown_function
-
-/*****************************************************************************/
-
-pci_bios_present:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_present
-#endif
-       movl    $0x20494350, %eax
-gs     movl    %eax, OFFS_EDX(%bp)
-
-       /* We support cfg type 1 version 2.10 */
-       movb    $0x01, %al
-gs     movb    %al, OFFS_AL(%bp)
-       movw    $0x0210, %ax
-gs     movw    %ax, OFFS_BX(%bp)
-
-       /* last bus number */
-cs     movb    pci_last_bus, %al
-gs     movb    %al, OFFS_CL(%bp)
-       jmp     clear_carry
-
-/*****************************************************************************/
-
-/* device 0-31, function 0-7 */
-pci_bios_find_device:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_find_device
-#endif
-gs     movw    OFFS_CX(%bp), %di
-       shll    $16, %edi
-gs     movw    OFFS_DX(%bp), %di
-       /* edi now holds device in upper 16 bits and vendor in lower 16 bits */
-
-gs     movw    OFFS_SI(%bp), %si
-
-       /* start at bus 0 dev 0 function 0 */
-       xorw    %bx, %bx
-pfd_loop:
-       /* dword 0 is vendor/device */
-       xorw    %ax, %ax
-       call    __pci_bios_select_register
-       movw    $0xcfc, %dx
-       inl     %dx, %eax
-
-       /* our device ? */
-       cmpl    %edi, %eax
-       je      pfd_found_one
-pfd_next_dev:
-       /* check for multi function devices */
-       movw    %bx, %ax
-       andw    $3, %ax
-       jnz     pfd_function_not_zero
-       movw    $0x000c, %ax
-       call    __pci_bios_select_register
-       movw    $0xcfe, %dx
-       inb     %dx, %al
-       andb    $0x80, %al
-       jz      pfd_not_multi_function
-pfd_function_not_zero:
-       /* next function, overflows in to device number, then bus number */
-       incw    %bx
-       jmp     pfd_check_bus
-
-pfd_not_multi_function:
-       /* remove function bits */
-       andw    $0xfff8, %bx
-
-       /* next device, overflows in to bus number */
-       addw    $0x0008, %bx
-pfd_check_bus:
-cs     movb    pci_last_bus, %ah
-       cmpb    %ah, %bh
-       ja      pfd_not_found
-       jmp     pfd_loop
-pfd_found_one:
-       decw    %si
-       js      pfd_done
-       jmp     pfd_next_dev
-
-pfd_done:
-gs     movw    %bx, OFFS_BX(%bp)
-       jmp     clear_carry
-
-pfd_not_found:
-       /* device not found */
-       movb    $0x86, %ah
-       jmp     set_carry
-
-/*****************************************************************************/
-
-pci_bios_find_class:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_find_class
-#endif
-gs     movl    OFFS_ECX(%bp), %edi
-
-       /* edi now holds class-code in lower 24 bits */
-       andl    $0x00ffffff, %edi
-gs     movw    OFFS_SI(%bp), %si
-
-       /* start at bus 0 dev 0 function 0 */
-       xorw    %bx, %bx
-pfc_loop:
-       /* dword 8 is class-code high 24bits */
-       movw    $8, %ax
-       call    __pci_bios_select_register
-       movw    $0xcfc, %dx
-       inl     %dx, %eax
-       shrl    $8, %eax
-       andl    $0x00ffffff, %eax
-
-       /* our device ? */
-       cmpl    %edi, %eax
-       je      pfc_found_one
-pfc_next_dev:
-       /* check for multi function devices */
-       andw    $3, %bx
-       jnz     pfc_function_not_zero
-       movw    $0x000c, %ax
-       call    __pci_bios_select_register
-       movw    $0xcfe, %dx
-       inb     %dx, %al
-       andb    $0x80, %al
-       jz      pfc_not_multi_function
-pfc_function_not_zero:
-       /* next function, overflows in to device number, then bus number */
-       incw    %bx
-       jmp     pfc_check_bus
-
-pfc_not_multi_function:
-       /* remove function bits */
-       andw    $0xfff8, %bx
-
-       /* next device, overflows in to bus number */
-       addw    $0x0008, %bx
-pfc_check_bus:
-cs     movb    pci_last_bus, %ah
-       cmpb    %ah, %bh
-       ja      pfc_not_found
-       jmp     pfc_loop
-pfc_found_one:
-       decw    %si
-       js      pfc_done
-       jmp     pfc_next_dev
-
-pfc_done:
-gs     movw    %bx, OFFS_BX(%bp)
-       jmp     clear_carry
-
-pfc_not_found:
-       /* device not found */
-       movb    $0x86, %ah
-       jmp     set_carry
-
-/*****************************************************************************/
-
-pci_bios_generate_special_cycle:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_generate_special_cycle
-#endif
-       /* function not supported */
-       movb    $0x81, %ah
-       jmp     set_carry
-
-/*****************************************************************************/
-
-pci_bios_read_cfg_byte:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_read_cfg_byte
-#endif
-       call    pci_bios_select_register
-gs     movw    OFFS_DI(%bp), %dx
-       andw    $3, %dx
-       addw    $0xcfc, %dx
-       inb     %dx, %al
-gs     movb    %al, OFFS_CL(%bp)
-       jmp     clear_carry
-
-/*****************************************************************************/
-
-pci_bios_read_cfg_word:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_read_cfg_word
-#endif
-       call    pci_bios_select_register
-gs     movw    OFFS_DI(%bp), %dx
-       andw    $2, %dx
-       addw    $0xcfc, %dx
-       inw     %dx, %ax
-gs     movw    %ax, OFFS_CX(%bp)
-       jmp     clear_carry
-
-
-/*****************************************************************************/
-
-pci_bios_read_cfg_dword:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_read_cfg_dword
-#endif
-       call    pci_bios_select_register
-       movw    $0xcfc, %dx
-       inl     %dx, %eax
-gs     movl    %eax, OFFS_ECX(%bp)
-       jmp     clear_carry
-
-/*****************************************************************************/
-
-pci_bios_write_cfg_byte:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_write_cfg_byte
-#endif
-       call    pci_bios_select_register
-gs     movw    OFFS_DI(%bp), %dx
-gs     movb    OFFS_CL(%bp), %al
-       andw    $3, %dx
-       addw    $0xcfc, %dx
-       outb    %al, %dx
-       jmp     clear_carry
-
-/*****************************************************************************/
-
-pci_bios_write_cfg_word:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_write_cfg_word
-#endif
-       call    pci_bios_select_register
-gs     movw    OFFS_DI(%bp), %dx
-gs     movw    OFFS_CX(%bp), %ax
-       andw    $2, %dx
-       addw    $0xcfc, %dx
-       outw    %ax, %dx
-       jmp     clear_carry
-
-/*****************************************************************************/
-
-pci_bios_write_cfg_dword:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_write_cfg_dword
-#endif
-       call    pci_bios_select_register
-gs     movl    OFFS_ECX(%bp), %eax
-       movw    $0xcfc, %dx
-       outl    %eax, %dx
-       jmp     clear_carry
-
-/*****************************************************************************/
-
-pci_bios_get_irq_routing:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_get_irq_routing
-#endif
-       /* function not supported */
-       movb    $0x81, %ah
-       jmp     set_carry
-
-/*****************************************************************************/
-
-pci_bios_set_irq:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_set_irq
-#endif
-       /* function not supported */
-       movb    $0x81, %ah
-       jmp     set_carry
-
-/*****************************************************************************/
-
-unknown_function:
-#ifdef PCI_BIOS_DEBUG
-cs     incl    num_pci_bios_unknown_function
-#endif
-       /* function not supported */
-       movb    $0x81, %ah
-       jmp     set_carry
-
-/*****************************************************************************/
-
-pci_bios_select_register:
-gs     movw    OFFS_BX(%bp), %bx
-gs     movw    OFFS_DI(%bp), %ax
-/* destroys eax, dx */
-__pci_bios_select_register:
-       /* BX holds device id, AX holds register index */
-       pushl   %ebx
-       andl    $0xfc, %eax
-       andl    $0xffff, %ebx
-       shll    $8, %ebx
-       orl     %ebx, %eax
-       orl     $0x80000000, %eax
-       movw    $0xcf8, %dx
-       outl    %eax, %dx
-       popl    %ebx
-       ret
-
-
-clear_carry:
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* clear carry -- function succeeded */
-       andw    $0xfffe, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-       xorw    %ax, %ax
-gs     movb    %ah, OFFS_AH(%bp)
-       ret
-
-set_carry:
-gs     movb    %ah, OFFS_AH(%bp)
-gs     movw    OFFS_FLAGS(%bp), %ax
-
-       /* return carry -- function not supported */
-       orw     $1, %ax
-gs     movw    %ax, OFFS_FLAGS(%bp)
-       movw    $-1, %ax
-       ret
-
-/*****************************************************************************/
-
-.globl pci_last_bus
-pci_last_bus:
-       .byte   0
-
-#ifdef PCI_BIOS_DEBUG
-.globl num_pci_bios_present
-num_pci_bios_present:
-       .long   0
-
-.globl num_pci_bios_find_device
-num_pci_bios_find_device:
-       .long   0
-
-.globl num_pci_bios_find_class
-num_pci_bios_find_class:
-       .long   0
-
-.globl num_pci_bios_generate_special_cycle
-num_pci_bios_generate_special_cycle:
-       .long 0
-
-.globl num_pci_bios_read_cfg_byte
-num_pci_bios_read_cfg_byte:
-       .long   0
-
-.globl num_pci_bios_read_cfg_word
-num_pci_bios_read_cfg_word:
-       .long   0
-
-.globl num_pci_bios_read_cfg_dword
-num_pci_bios_read_cfg_dword:
-       .long   0
-
-.globl num_pci_bios_write_cfg_byte
-num_pci_bios_write_cfg_byte:
-       .long   0
-
-.globl num_pci_bios_write_cfg_word
-num_pci_bios_write_cfg_word:
-       .long   0
-
-.globl num_pci_bios_write_cfg_dword
-num_pci_bios_write_cfg_dword:
-       .long   0
-
-.globl num_pci_bios_get_irq_routing
-num_pci_bios_get_irq_routing:
-       .long   0
-
-.globl num_pci_bios_set_irq
-num_pci_bios_set_irq:
-       .long   0
-
-.globl num_pci_bios_unknown_function
-num_pci_bios_unknown_function:
-       .long   0
-#endif
diff --git a/arch/x86/lib/bios_setup.c b/arch/x86/lib/bios_setup.c
deleted file mode 100644 (file)
index 265f7d6..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
- * Partly based on msbios.c from rolo 1.6:
- *----------------------------------------------------------------------
- * (C) Copyright 2000
- * Sysgo Real-Time Solutions GmbH
- * Klein-Winternheim, Germany
- *----------------------------------------------------------------------
- */
-
-#include <common.h>
-#include <pci.h>
-#include <asm/realmode.h>
-#include <asm/io.h>
-#include "bios.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define NUMVECTS       256
-
-static int set_jmp_vector(int entry_point, void *target)
-{
-       if (entry_point & ~0xffff)
-               return -1;
-
-       if (((u32)target - 0xf0000) & ~0xffff)
-               return -1;
-
-       printf("set_jmp_vector: 0xf000:%04x -> %p\n",
-                       entry_point, target);
-
-       /* jmp opcode */
-       writeb(0xea, 0xf0000 + entry_point);
-
-       /* offset */
-       writew(((u32)target-0xf0000), 0xf0000 + entry_point + 1);
-
-       /* segment */
-       writew(0xf000, 0xf0000 + entry_point + 3);
-
-       return 0;
-}
-
-/* Install an interrupt vector */
-static void setvector(int vector, u16 segment, void *handler)
-{
-       u16 *ptr = (u16 *)(vector * 4);
-       ptr[0] = ((u32)handler - (segment << 4)) & 0xffff;
-       ptr[1] = segment;
-
-#if 0
-       printf("setvector: int%02x -> %04x:%04x\n",
-                       vector, ptr[1], ptr[0]);
-#endif
-}
-
-int bios_setup(void)
-{
-       /* The BIOS section is not relocated and still in the ROM. */
-       ulong bios_start = (ulong)&__bios_start;
-       ulong bios_size = (ulong)&__bios_size;
-
-       static int done;
-       int vector;
-#ifdef CONFIG_PCI
-       struct pci_controller *pri_hose;
-#endif
-       if (done)
-               return 0;
-
-       done = 1;
-
-       if (bios_size > 65536) {
-               printf("BIOS too large (%ld bytes, max is 65536)\n",
-                               bios_size);
-               return -1;
-       }
-
-       memcpy(BIOS_BASE, (void *)bios_start, bios_size);
-
-       /* clear bda */
-       memset(BIOS_DATA, 0, BIOS_DATA_SIZE);
-
-       /* enter some values to the bda */
-       writew(0x3f8, BIOS_DATA);   /* com1 addr */
-       writew(0x2f8, BIOS_DATA+2); /* com2 addr */
-       writew(0x3e8, BIOS_DATA+4); /* com3 addr */
-       writew(0x2e8, BIOS_DATA+6); /* com4 addr */
-       writew(0x278, BIOS_DATA+8); /* lpt1 addr */
-       /*
-        * The kernel wants to read the base memory size
-        * from 40:13. Put a zero there to avoid an error message
-        */
-       writew(0, BIOS_DATA+0x13);  /* base memory size */
-
-
-       /* setup realmode interrupt vectors */
-       for (vector = 0; vector < NUMVECTS; vector++)
-               setvector(vector, BIOS_CS, &rm_def_int);
-
-       setvector(0x00, BIOS_CS, &rm_int00);
-       setvector(0x01, BIOS_CS, &rm_int01);
-       setvector(0x02, BIOS_CS, &rm_int02);
-       setvector(0x03, BIOS_CS, &rm_int03);
-       setvector(0x04, BIOS_CS, &rm_int04);
-       setvector(0x05, BIOS_CS, &rm_int05);
-       setvector(0x06, BIOS_CS, &rm_int06);
-       setvector(0x07, BIOS_CS, &rm_int07);
-       setvector(0x08, BIOS_CS, &rm_int08);
-       setvector(0x09, BIOS_CS, &rm_int09);
-       setvector(0x0a, BIOS_CS, &rm_int0a);
-       setvector(0x0b, BIOS_CS, &rm_int0b);
-       setvector(0x0c, BIOS_CS, &rm_int0c);
-       setvector(0x0d, BIOS_CS, &rm_int0d);
-       setvector(0x0e, BIOS_CS, &rm_int0e);
-       setvector(0x0f, BIOS_CS, &rm_int0f);
-       setvector(0x10, BIOS_CS, &rm_int10);
-       setvector(0x11, BIOS_CS, &rm_int11);
-       setvector(0x12, BIOS_CS, &rm_int12);
-       setvector(0x13, BIOS_CS, &rm_int13);
-       setvector(0x14, BIOS_CS, &rm_int14);
-       setvector(0x15, BIOS_CS, &rm_int15);
-       setvector(0x16, BIOS_CS, &rm_int16);
-       setvector(0x17, BIOS_CS, &rm_int17);
-       setvector(0x18, BIOS_CS, &rm_int18);
-       setvector(0x19, BIOS_CS, &rm_int19);
-       setvector(0x1a, BIOS_CS, &rm_int1a);
-       setvector(0x1b, BIOS_CS, &rm_int1b);
-       setvector(0x1c, BIOS_CS, &rm_int1c);
-       setvector(0x1d, BIOS_CS, &rm_int1d);
-       setvector(0x1e, BIOS_CS, &rm_int1e);
-       setvector(0x1f, BIOS_CS, &rm_int1f);
-
-       set_jmp_vector(0xfff0, &realmode_reset);
-       set_jmp_vector(0xfe6e, &realmode_pci_bios_call_entry);
-
-       /* fill in data area */
-       RELOC_16_WORD(0xf000, ram_in_64kb_chunks) = gd->ram_size >> 16;
-       RELOC_16_WORD(0xf000, bios_equipment) = 0; /* FixMe */
-
-       /* If we assume only one PCI hose, this PCI hose
-        * will own PCI bus #0, and the last PCI bus of
-        * that PCI hose will be the last PCI bus in the
-        * system.
-        * (This, ofcause break on multi hose systems,
-        *  but our PCI BIOS only support one hose anyway)
-        */
-#ifdef CONFIG_PCI
-       pri_hose = pci_bus_to_hose(0);
-       if (NULL != pri_hose) {
-               /* fill in last pci bus number for use by the realmode
-                * PCI BIOS */
-               RELOC_16_BYTE(0xf000, pci_last_bus) = pri_hose->last_busno;
-       }
-#endif
-       return 0;
-}
diff --git a/arch/x86/lib/realmode.c b/arch/x86/lib/realmode.c
deleted file mode 100644 (file)
index 75511b2..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/ptrace.h>
-#include <asm/realmode.h>
-
-#define REALMODE_MAILBOX ((char *)0xe00)
-
-int realmode_setup(void)
-{
-       /* The realmode section is not relocated and still in the ROM. */
-       ulong realmode_start = (ulong)&__realmode_start;
-       ulong realmode_size = (ulong)&__realmode_size;
-
-       /* copy the realmode switch code */
-       if (realmode_size > (REALMODE_MAILBOX - (char *)REALMODE_BASE)) {
-               printf("realmode switch too large (%ld bytes, max is %d)\n",
-                      realmode_size,
-                      (int)(REALMODE_MAILBOX - (char *)REALMODE_BASE));
-               return -1;
-       }
-
-       memcpy((char *)REALMODE_BASE, (void *)realmode_start, realmode_size);
-       asm("wbinvd\n");
-
-       return 0;
-}
-
-int enter_realmode(u16 seg, u16 off, struct pt_regs *in, struct pt_regs *out)
-{
-
-       /* setup out thin bios emulation */
-       if (bios_setup())
-               return -1;
-
-       if (realmode_setup())
-               return -1;
-
-       in->eip = off;
-       in->xcs = seg;
-       if ((in->esp & 0xffff) < 4)
-               printf("Warning: entering realmode with sp < 4 will fail\n");
-
-       memcpy(REALMODE_MAILBOX, in, sizeof(struct pt_regs));
-       asm("wbinvd\n");
-
-       __asm__ volatile (
-                "lcall $0x20,%0\n" : : "i" (&realmode_enter));
-
-       asm("wbinvd\n");
-       memcpy(out, REALMODE_MAILBOX, sizeof(struct pt_regs));
-
-       return out->eax;
-}
-
-/*
- * This code is supposed to access a realmode interrupt
- * it does currently not work for me
- */
-int enter_realmode_int(u8 lvl, struct pt_regs *in, struct pt_regs *out)
-{
-       /* place two instructions at 0x700 */
-       writeb(0xcd, 0x700);  /* int $lvl */
-       writeb(lvl, 0x701);
-       writeb(0xcb, 0x702);  /* lret */
-       asm("wbinvd\n");
-
-       enter_realmode(0x00, 0x700, in, out);
-
-       return out->eflags & 0x00000001;
-}
diff --git a/arch/x86/lib/realmode_switch.S b/arch/x86/lib/realmode_switch.S
deleted file mode 100644 (file)
index c4c4c43..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, daniel@omicron.se
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/* 32bit -> 16bit -> 32bit mode switch code */
-
-/*
- * Stack frame at 0xe00
- *     e00 ebx;
- *     e04 ecx;
- *     e08 edx;
- *     e0c esi;
- *     e10 edi;
- *     e14 ebp;
- *     e18 eax;
- *     e1c ds;
- *     e20 es;
- *     e24 fs;
- *     e28 gs;
- *     e2c orig_eax;
- *     e30 eip;
- *     e34 cs;
- *     e38 eflags;
- *     e3c esp;
- *     e40 ss;
- */
-
-#define a32            .byte 0x67;     /* address size prefix 32 */
-#define o32            .byte 0x66;     /* operand size prefix 32 */
-
-.section .realmode, "ax"
-.code16
-
-       /* 16bit protected mode code here */
-.globl realmode_enter
-realmode_enter:
-o32    pusha
-o32    pushf
-       cli
-       sidt    saved_idt
-       sgdt    saved_gdt
-       movl    %esp, %eax
-       movl    %eax, saved_protected_mode_esp
-
-       movl    $0x10, %eax
-       movl    %eax, %esp
-       movw    $0x28, %ax
-       movw    %ax, %ds
-       movw    %ax, %es
-       movw    %ax, %fs
-       movw    %ax, %gs
-
-       lidt    realmode_idt_ptr
-       /* Go back into real mode by clearing PE to 0 */
-       movl    %cr0, %eax
-       andl    $0x7ffffffe, %eax
-       movl    %eax, %cr0
-
-       /* switch to real mode */
-       ljmp    $0x0,$do_realmode
-
-do_realmode:
-       /* realmode code from here */
-       movw    %cs,%ax
-       movw    %ax,%ds
-       movw    %ax,%es
-       movw    %ax,%fs
-       movw    %ax,%gs
-
-       /* create a temporary stack */
-       movw    $0xc0, %ax
-       movw    %ax, %ss
-       movw    $0x200, %ax
-       movw    %ax, %sp
-
-       popl    %ebx
-       popl    %ecx
-       popl    %edx
-       popl    %esi
-       popl    %edi
-       popl    %ebp
-       popl    %eax
-       movl    %eax, temp_eax
-       popl    %eax
-       movw    %ax, %ds
-       popl    %eax
-       movw    %ax, %es
-       popl    %eax
-       movw    %ax, %fs
-       popl    %eax
-       movw    %ax, %gs
-       popl    %eax                            /* orig_eax */
-       popl    %eax
-cs     movw    %ax, temp_ip
-       popl    %eax
-cs     movw    %ax, temp_cs
-o32    popf
-       popl    %eax
-       popw    %ss
-       movl    %eax, %esp
-cs     movl    temp_eax, %eax
-
-       /* self-modifying code, better flush the cache */
-       wbinvd
-
-       .byte   0x9a                            /* lcall */
-temp_ip:
-       .word   0                               /* new ip */
-temp_cs:
-       .word   0                               /* new cs */
-
-realmode_ret:
-       /* save eax, esp and ss */
-cs     movl    %eax, saved_eax
-       movl    %esp, %eax
-cs     movl    %eax, saved_esp
-       movw    %ss, %ax
-cs     movw    %ax, saved_ss
-
-       /*
-        * restore the stack, note that we set sp to 0x244;
-        * pt_regs is 0x44 bytes long and we push the structure
-        * backwards on to the stack, bottom first
-        */
-       movw    $0xc0, %ax
-       movw    %ax, %ss
-       movw    $0x244, %ax
-       movw    %ax, %sp
-
-       xorl    %eax,%eax
-cs     movw    saved_ss, %ax
-       pushl   %eax
-cs     movl    saved_esp, %eax
-       pushl   %eax
-o32    pushf
-       xorl    %eax,%eax
-cs     movw    temp_cs, %ax
-       pushl   %eax
-cs     movw    temp_ip, %ax
-       pushl   %eax
-       pushl   $0
-       movw    %gs, %ax
-       pushl   %eax
-       movw    %fs, %ax
-       pushl   %eax
-       movw    %es, %ax
-       pushl   %eax
-       movw    %ds, %ax
-       pushl   %eax
-       movl    saved_eax, %eax
-       pushl   %eax
-       pushl   %ebp
-       pushl   %edi
-       pushl   %esi
-       pushl   %edx
-       pushl   %ecx
-       pushl   %ebx
-
-o32 cs lidt    saved_idt
-o32 cs lgdt    saved_gdt
-
-       /* Go back into protected mode reset PE to 1 */
-       movl    %cr0, %eax
-       orl     $1,%eax
-       movl    %eax, %cr0
-
-       /* flush prefetch queue */
-       jmp     next_line
-next_line:
-       movw    $return_ptr, %ax
-       movw    %ax,%bp
-o32 cs ljmp    *(%bp)
-
-.code32
-protected_mode:
-       /* Reload segment registers */
-       movl    $0x18, %eax
-       movw    %ax, %fs
-       movw    %ax, %ds
-       movw    %ax, %gs
-       movw    %ax, %es
-       movw    %ax, %ss
-       movl    saved_protected_mode_esp, %eax
-       movl    %eax, %esp
-       popf
-       popa
-       ret
-
-temp_eax:
-       .long   0
-
-saved_ss:
-       .word   0
-saved_esp:
-       .long   0
-saved_eax:
-       .long   0
-
-realmode_idt_ptr:
-       .word   0x400
-       .word   0x0, 0x0
-
-saved_gdt:
-       .word   0, 0, 0, 0
-saved_idt:
-       .word   0, 0, 0, 0
-
-saved_protected_mode_esp:
-       .long   0
-
-return_ptr:
-       .long   protected_mode
-       .word   0x10
index 20e2416ae16f31f3ae8e441b8ec7b640e3dc00c4..81824f314457f859a6f1aebfed6ef6ab61941edc 100644 (file)
@@ -26,7 +26,6 @@
 #include <stdio_dev.h>
 #include <i8042.h>
 #include <asm/ptrace.h>
-#include <asm/realmode.h>
 #include <asm/io.h>
 #include <asm/pci.h>
 
@@ -222,10 +221,5 @@ int video_init(void)
 
 int drv_video_init(void)
 {
-#ifndef CONFIG_X86_NO_REAL_MODE
-       if (video_bios_init())
-               return 1;
-#endif
-
        return video_init();
 }
diff --git a/arch/x86/lib/video_bios.c b/arch/x86/lib/video_bios.c
deleted file mode 100644 (file)
index 1e06759..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * (C) Copyright 2002
- * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * 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; either version 2 of
- * the License, or (at your option) any later version.
- *
- * 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., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <pci.h>
-#include <malloc.h>
-#include <asm/ptrace.h>
-#include <asm/realmode.h>
-#include <asm/io.h>
-#include <asm/pci.h>
-#include "bios.h"
-
-#undef PCI_BIOS_DEBUG
-#undef VGA_BIOS_DEBUG
-
-#ifdef VGA_BIOS_DEBUG
-#define        PRINTF(fmt, args...)    printf(fmt, ##args)
-#else
-#define PRINTF(fmt, args...)
-#endif
-
-#define PCI_CLASS_VIDEO                        3
-#define PCI_CLASS_VIDEO_STD            0
-#define PCI_CLASS_VIDEO_PROG_IF_VGA    0
-
-DEFINE_PCI_DEVICE_TABLE(supported) = {
-       {PCI_VIDEO_VENDOR_ID, PCI_VIDEO_DEVICE_ID},
-       {}
-};
-
-static u32 probe_pci_video(void)
-{
-       struct pci_controller *hose;
-       pci_dev_t devbusfn = pci_find_devices(supported, 0);
-
-       if ((devbusfn != -1)) {
-               u32 old;
-               u32 addr;
-
-               /* PCI video device detected */
-               printf("Found PCI VGA device at %02x.%02x.%x\n",
-                      PCI_BUS(devbusfn),
-                      PCI_DEV(devbusfn),
-                      PCI_FUNC(devbusfn));
-
-               /* Enable I/O decoding as well, PCI viudeo boards
-                * support I/O accesses, but they provide no
-                * bar register for this since the ports are fixed.
-                */
-               pci_write_config_word(devbusfn,
-                                     PCI_COMMAND,
-                                     PCI_COMMAND_MEMORY |
-                                     PCI_COMMAND_IO |
-                                     PCI_COMMAND_MASTER);
-
-               /* Test the ROM decoder, do the device support a rom? */
-               pci_read_config_dword(devbusfn, PCI_ROM_ADDRESS, &old);
-               pci_write_config_dword(devbusfn, PCI_ROM_ADDRESS,
-                                      (u32)PCI_ROM_ADDRESS_MASK);
-               pci_read_config_dword(devbusfn, PCI_ROM_ADDRESS, &addr);
-               pci_write_config_dword(devbusfn, PCI_ROM_ADDRESS, old);
-
-               if (!addr) {
-                       printf("PCI VGA have no ROM?\n");
-                       return 0;
-               }
-
-               /* device have a rom */
-               if (pci_shadow_rom(devbusfn, (void *)0xc0000)) {
-                       printf("Shadowing of PCI VGA BIOS failed\n");
-                       return 0;
-               }
-
-               /* Now enable lagacy VGA port access */
-               hose = pci_bus_to_hose(PCI_BUS(devbusfn));
-               if (pci_enable_legacy_video_ports(hose)) {
-                       printf("PCI VGA enable failed\n");
-                       return 0;
-               }
-
-
-               /* return the pci device info, that we'll need later */
-               return PCI_BUS(devbusfn) << 8 |
-                       PCI_DEV(devbusfn) << 3 | (PCI_FUNC(devbusfn) & 7);
-       }
-
-       return 0;
-}
-
-static int probe_isa_video(void)
-{
-       u32 ptr;
-       char *buf;
-
-       ptr = isa_map_rom(0xc0000, 0x8000);
-
-       if (!ptr)
-               return -1;
-
-       buf = malloc(0x8000);
-       if (!buf) {
-               isa_unmap_rom(ptr);
-               return -1;
-       }
-
-       if (readw(ptr) != 0xaa55) {
-               free(buf);
-               isa_unmap_rom(ptr);
-               return -1;
-       }
-
-       /* shadow the rom */
-       memcpy(buf, (void *)ptr, 0x8000);
-       isa_unmap_rom(ptr);
-       memcpy((void *)0xc0000, buf, 0x8000);
-
-       free(buf);
-
-       return 0;
-}
-
-int video_bios_init(void)
-{
-       struct pt_regs regs;
-       int size;
-       int i;
-       u8 sum;
-
-       /* clear the video bios area in case we warmbooted */
-       memset((void *)0xc0000, 0, 0x8000);
-       memset(&regs, 0, sizeof(struct pt_regs));
-
-       if (probe_isa_video())
-               /* No ISA board found, try the PCI bus */
-               regs.eax = probe_pci_video();
-
-       /* Did we succeed in mapping any video bios */
-       if (readw(0xc0000) == 0xaa55) {
-               PRINTF("Found video bios signature\n");
-               size = readb(0xc0002) * 512;
-               PRINTF("size %d\n", size);
-               sum = 0;
-
-               for (i = 0; i < size; i++)
-                       sum += readb(0xc0000 + i);
-
-               PRINTF("Checksum is %sOK\n", sum ? "NOT " : "");
-
-               if (sum)
-                       return 1;
-
-               /*
-                * Some video bioses (ATI Mach64) seem to think that
-                * the original int 10 handler is always at
-                * 0xf000:0xf065 , place an iret instruction there
-                */
-               writeb(0xcf, 0xff065);
-
-               regs.esp = 0x8000;
-               regs.xss = 0x2000;
-               enter_realmode(0xc000, 3, &regs, &regs);
-
-               PRINTF("INT 0x10 vector after:  %04x:%04x\n",
-                      readw(0x42), readw(0x40));
-               PRINTF("BIOS returned %scarry\n",
-                      regs.eflags & 0x00000001 ? "" : "NOT ");
-#ifdef PCI_BIOS_DEBUG
-               print_bios_bios_stat();
-#endif
-               return regs.eflags & 0x00000001;
-
-       }
-
-       return 1;
-
-}
index 46af391f29f2a82baebd91acf6e55d638dc7524b..4e9e1f77e5ac35bda83ff2fe8b23c0e9970c9859 100644 (file)
@@ -33,7 +33,6 @@
 #include <asm/io.h>
 #include <asm/ptrace.h>
 #include <asm/zimage.h>
-#include <asm/realmode.h>
 #include <asm/byteorder.h>
 #include <asm/bootparam.h>
 #ifdef CONFIG_SYS_COREBOOT
@@ -175,16 +174,9 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size,
        else
                *load_address = (void *)ZIMAGE_LOAD_ADDR;
 
-#if (defined CONFIG_ZBOOT_32 || defined CONFIG_X86_NO_REAL_MODE)
        printf("Building boot_params at 0x%8.8lx\n", (ulong)setup_base);
        memset(setup_base, 0, sizeof(*setup_base));
        setup_base->hdr = params->hdr;
-#else
-       /* load setup */
-       printf("Moving Real-Mode Code to 0x%8.8lx (%d bytes)\n",
-              (ulong)setup_base, setup_size);
-       memmove(setup_base, image, setup_size);
-#endif
 
        if (bootproto >= 0x0204)
                kernel_size = hdr->syssize * 16;
@@ -241,10 +233,8 @@ int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
        struct setup_header *hdr = &setup_base->hdr;
        int bootproto = get_boot_protocol(hdr);
 
-#if (defined CONFIG_ZBOOT_32 || defined CONFIG_X86_NO_REAL_MODE)
        setup_base->e820_entries = install_e820_map(
                ARRAY_SIZE(setup_base->e820_map), setup_base->e820_map);
-#endif
 
        if (bootproto == 0x0100) {
                setup_base->screen_info.cl_magic = COMMAND_LINE_MAGIC;
@@ -300,7 +290,6 @@ void boot_zimage(void *setup_base, void *load_address)
 #ifdef CONFIG_SYS_COREBOOT
        timestamp_add_now(TS_U_BOOT_START_KERNEL);
 #endif
-#if defined CONFIG_ZBOOT_32
        /*
         * Set %ebx, %ebp, and %edi to 0, %esi to point to the boot_params
         * structure, and then jump to the kernel. We assume that %cs is
@@ -317,18 +306,6 @@ void boot_zimage(void *setup_base, void *load_address)
           "b"(0), "D"(0)
        :  "%ebp"
        );
-#else
-       struct pt_regs regs;
-
-       memset(&regs, 0, sizeof(struct pt_regs));
-       regs.xds = (u32)setup_base >> 4;
-       regs.xes = regs.xds;
-       regs.xss = regs.xds;
-       regs.esp = 0x9000;
-       regs.eflags = 0;
-       enter_realmode(((u32)setup_base + SETUP_START_OFFSET) >> 4, 0,
-                      &regs, &regs);
-#endif
 }
 
 void setup_pcat_compatibility(void)