Revision: linuxbios@linuxbios.org--devel/freebios--devel--2.0--patch-38
Creator: Li-Ta Lo <ollie@lanl.gov> emulator update x96emu update from Paulo git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1954 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
@@ -363,7 +363,6 @@ void compute_allocate_resource(
|
||||
|
||||
|
||||
}
|
||||
|
||||
#if CONFIG_CONSOLE_VGA == 1
|
||||
device_t vga_pri = 0;
|
||||
static void allocate_vga_resource(void)
|
||||
@@ -378,13 +377,14 @@ static void allocate_vga_resource(void)
|
||||
vga = 0;
|
||||
vga_onboard = 0;
|
||||
for (dev = all_devices; dev; dev = dev->next) {
|
||||
if (!dev->enabled) continue;
|
||||
if ( !dev->enabled ) continue;
|
||||
if (((dev->class >> 16) == PCI_BASE_CLASS_DISPLAY) &&
|
||||
((dev->class >> 8) != PCI_CLASS_DISPLAY_OTHER)) {
|
||||
if (!vga) {
|
||||
if (dev->on_mainboard) {
|
||||
vga_onboard = dev;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
vga = dev;
|
||||
}
|
||||
}
|
||||
@@ -397,8 +397,7 @@ static void allocate_vga_resource(void)
|
||||
vga = vga_onboard;
|
||||
}
|
||||
|
||||
if (vga) {
|
||||
// vga is first add on card or the only onboard vga
|
||||
if (vga) { // vga is first add on card or the only onboard vga
|
||||
printk_debug("Allocating VGA resource %s\n", dev_path(vga));
|
||||
vga->command |= (PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
|
||||
vga_pri = vga;
|
||||
@@ -412,6 +411,7 @@ static void allocate_vga_resource(void)
|
||||
bus = (bus == bus->dev->bus)? 0 : bus->dev->bus;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@@ -161,7 +161,6 @@ void do_int(int num)
|
||||
* BIOS. Most of this information was pulled from
|
||||
* dosemu.
|
||||
*/
|
||||
#if 0
|
||||
void setup_int_vect(void)
|
||||
{
|
||||
int i;
|
||||
@@ -223,7 +222,6 @@ int setup_system_bios(void *base_addr)
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
void reset_int_vect(void)
|
||||
{
|
||||
@@ -327,8 +325,6 @@ void run_bios(struct device * dev, unsigned long addr)
|
||||
|
||||
// X86EMU_trace_on();
|
||||
|
||||
printk_info("entering emulator\n");
|
||||
|
||||
X86EMU_exec();
|
||||
#endif
|
||||
}
|
||||
|
@@ -225,7 +225,6 @@ void X86EMU_dump_memory (u16 seg, u16 off, u32 amt)
|
||||
|
||||
void x86emu_single_step (void)
|
||||
{
|
||||
#if 0
|
||||
char s[1024];
|
||||
int ps[10];
|
||||
int ntok;
|
||||
@@ -314,7 +313,6 @@ void x86emu_single_step (void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int X86EMU_trace_on(void)
|
||||
@@ -329,7 +327,6 @@ int X86EMU_trace_off(void)
|
||||
|
||||
static int parse_line (char *s, int *ps, int *n)
|
||||
{
|
||||
#if 0
|
||||
int cmd;
|
||||
|
||||
*n = 0;
|
||||
@@ -355,7 +352,6 @@ static int parse_line (char *s, int *ps, int *n)
|
||||
sscanf(s,"%x",&ps[*n]);
|
||||
*n += 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* DEBUG */
|
||||
|
@@ -77,8 +77,6 @@ next instruction.
|
||||
void x86emu_intr_raise(
|
||||
u8 intrnum)
|
||||
{
|
||||
printk("%s, rasing execption %x\n", __func__, intrnum);
|
||||
x86emu_dump_regs();
|
||||
M.x86.intno = intrnum;
|
||||
M.x86.intr |= INTR_SYNCH;
|
||||
}
|
||||
|
@@ -70,7 +70,7 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "x86emu/x86emui.h"
|
||||
#include "x86emui.h"
|
||||
|
||||
/*----------------------------- Implementation ----------------------------*/
|
||||
|
||||
@@ -219,8 +219,7 @@ void x86emuOp_genop_byte_RM_R(u8 op1)
|
||||
DECODE_PRINTF("\n");
|
||||
TRACE_AND_STEP();
|
||||
destval = genop_byte_operation[op1](destval, *srcreg);
|
||||
if (op1 != 7)
|
||||
store_data_byte(destoffset, destval);
|
||||
store_data_byte(destoffset, destval);
|
||||
}
|
||||
else
|
||||
{ /* register to register */
|
||||
@@ -263,8 +262,7 @@ void x86emuOp_genop_word_RM_R(u8 op1)
|
||||
DECODE_PRINTF("\n");
|
||||
TRACE_AND_STEP();
|
||||
destval = genop_long_operation[op1](destval, *srcreg);
|
||||
if (op1 != 7)
|
||||
store_data_long(destoffset, destval);
|
||||
store_data_long(destoffset, destval);
|
||||
} else {
|
||||
u16 destval;
|
||||
u16 *srcreg;
|
||||
@@ -275,12 +273,11 @@ void x86emuOp_genop_word_RM_R(u8 op1)
|
||||
DECODE_PRINTF("\n");
|
||||
TRACE_AND_STEP();
|
||||
destval = genop_word_operation[op1](destval, *srcreg);
|
||||
if (op1 != 7)
|
||||
store_data_word(destoffset, destval);
|
||||
store_data_word(destoffset, destval);
|
||||
}
|
||||
} else { /* register to register */
|
||||
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
||||
u32 *destreg, *srcreg;
|
||||
u32 *destreg,*srcreg;
|
||||
|
||||
destreg = DECODE_RM_LONG_REGISTER(rl);
|
||||
DECODE_PRINTF(",");
|
||||
@@ -289,7 +286,7 @@ void x86emuOp_genop_word_RM_R(u8 op1)
|
||||
TRACE_AND_STEP();
|
||||
*destreg = genop_long_operation[op1](*destreg, *srcreg);
|
||||
} else {
|
||||
u16 *destreg, *srcreg;
|
||||
u16 *destreg,*srcreg;
|
||||
|
||||
destreg = DECODE_RM_WORD_REGISTER(rl);
|
||||
DECODE_PRINTF(",");
|
||||
@@ -1335,7 +1332,9 @@ void x86emuOp_opc80_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
|
||||
imm = fetch_byte_imm();
|
||||
DECODE_PRINTF2("%x\n", imm);
|
||||
TRACE_AND_STEP();
|
||||
*destreg = (*genop_byte_operation[rh]) (*destreg, imm);
|
||||
destval = (*genop_byte_operation[rh]) (*destreg, imm);
|
||||
if (rh != 7)
|
||||
*destreg = destval;
|
||||
}
|
||||
DECODE_CLEAR_SEGOVR();
|
||||
END_OF_INSTR();
|
||||
@@ -1424,23 +1423,29 @@ void x86emuOp_opc81_word_RM_IMM(u8 X86EMU_UNUSED(op1))
|
||||
}
|
||||
} else { /* register to register */
|
||||
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
||||
u32 *destreg, imm;
|
||||
u32 *destreg;
|
||||
u32 destval,imm;
|
||||
|
||||
destreg = DECODE_RM_LONG_REGISTER(rl);
|
||||
DECODE_PRINTF(",");
|
||||
imm = fetch_long_imm();
|
||||
DECODE_PRINTF2("%x\n", imm);
|
||||
TRACE_AND_STEP();
|
||||
*destreg = (*genop_long_operation[rh]) (*destreg, imm);
|
||||
destval = (*genop_long_operation[rh]) (*destreg, imm);
|
||||
if (rh != 7)
|
||||
*destreg = destval;
|
||||
} else {
|
||||
u16 *destreg, imm;
|
||||
u16 *destreg;
|
||||
u16 destval,imm;
|
||||
|
||||
destreg = DECODE_RM_WORD_REGISTER(rl);
|
||||
DECODE_PRINTF(",");
|
||||
imm = fetch_word_imm();
|
||||
DECODE_PRINTF2("%x\n", imm);
|
||||
TRACE_AND_STEP();
|
||||
*destreg = (*genop_word_operation[rh]) (*destreg, imm);
|
||||
destval = (*genop_word_operation[rh]) (*destreg, imm);
|
||||
if (rh != 7)
|
||||
*destreg = destval;
|
||||
}
|
||||
}
|
||||
DECODE_CLEAR_SEGOVR();
|
||||
@@ -1518,7 +1523,9 @@ void x86emuOp_opc82_byte_RM_IMM(u8 X86EMU_UNUSED(op1))
|
||||
imm = fetch_byte_imm();
|
||||
DECODE_PRINTF2(",%x\n", imm);
|
||||
TRACE_AND_STEP();
|
||||
*destreg = (*genop_byte_operation[rh]) (*destreg, imm);
|
||||
destval = (*genop_byte_operation[rh]) (*destreg, imm);
|
||||
if (rh != 7)
|
||||
*destreg = destval;
|
||||
}
|
||||
DECODE_CLEAR_SEGOVR();
|
||||
END_OF_INSTR();
|
||||
@@ -1604,21 +1611,27 @@ void x86emuOp_opc83_word_RM_IMM(u8 X86EMU_UNUSED(op1))
|
||||
}
|
||||
} else { /* register to register */
|
||||
if (M.x86.mode & SYSMODE_PREFIX_DATA) {
|
||||
u32 *destreg, imm;
|
||||
u32 *destreg;
|
||||
u32 destval,imm;
|
||||
|
||||
destreg = DECODE_RM_LONG_REGISTER(rl);
|
||||
imm = (s8) fetch_byte_imm();
|
||||
DECODE_PRINTF2(",%x\n", imm);
|
||||
TRACE_AND_STEP();
|
||||
*destreg = (*genop_long_operation[rh]) (*destreg, imm);
|
||||
destval = (*genop_long_operation[rh]) (*destreg, imm);
|
||||
if (rh != 7)
|
||||
*destreg = destval;
|
||||
} else {
|
||||
u16 *destreg, imm;
|
||||
u16 *destreg;
|
||||
u16 destval,imm;
|
||||
|
||||
destreg = DECODE_RM_WORD_REGISTER(rl);
|
||||
imm = (s8) fetch_byte_imm();
|
||||
DECODE_PRINTF2(",%x\n", imm);
|
||||
TRACE_AND_STEP();
|
||||
*destreg = (*genop_word_operation[rh]) (*destreg, imm);
|
||||
destval = (*genop_word_operation[rh]) (*destreg, imm);
|
||||
if (rh != 7)
|
||||
*destreg = destval;
|
||||
}
|
||||
}
|
||||
DECODE_CLEAR_SEGOVR();
|
||||
|
@@ -61,7 +61,7 @@ void x86emuOp2_illegal_op(
|
||||
END_OF_INSTR();
|
||||
}
|
||||
|
||||
#define xorl(a,b) (((a) && !(b)) || (!(a) && (b)))
|
||||
#define xorl(a,b) ((a) && !(b)) || (!(a) && (b))
|
||||
|
||||
/****************************************************************************
|
||||
REMARKS:
|
||||
|
@@ -1921,7 +1921,7 @@ Implements the IMUL instruction and side effects.
|
||||
void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s)
|
||||
{
|
||||
#ifdef __HAS_LONG_LONG__
|
||||
s64 res = (s64)d * (s64)s;
|
||||
s64 res = (s32)d * (s32)s;
|
||||
|
||||
*res_lo = (u32)res;
|
||||
*res_hi = (u32)(res >> 32);
|
||||
|
@@ -53,7 +53,7 @@ struct rom_header * pci_rom_probe(struct device *dev)
|
||||
if (dev->class != ((rom_data->class_hi << 8) | rom_data->class_lo)) {
|
||||
printk_err("Class Code mismatch ROM %08x, dev %08x\n",
|
||||
(rom_data->class_hi << 8) | rom_data->class_lo, dev->class);
|
||||
//return NULL;
|
||||
// return NULL;
|
||||
}
|
||||
|
||||
return rom_header;
|
||||
@@ -62,8 +62,8 @@ struct rom_header * pci_rom_probe(struct device *dev)
|
||||
static void *pci_ram_image_start = PCI_RAM_IMAGE_START;
|
||||
|
||||
#if CONFIG_CONSOLE_VGA == 1
|
||||
int vga_inited = 0; // used by vga_console.c
|
||||
extern device_t vga_pri; // the primary vga device, defined in device.c
|
||||
int vga_inited = 0; // it will be used by vga_console
|
||||
extern device_t vga_pri; // The only VGA
|
||||
#endif
|
||||
|
||||
struct rom_header *pci_rom_load(struct device *dev, struct rom_header *rom_header)
|
||||
|
Reference in New Issue
Block a user