device: Fix spelling
Change-Id: I53a40d114aa2da76398c5b97443d4096809dcf36 Signed-off-by: Martin Roth <martin.roth@se-eng.com> Reviewed-on: http://review.coreboot.org/3730 Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
50d887d4f4
commit
63373edce0
|
@ -83,7 +83,7 @@ uint64_t uma_memory_size = 0;
|
||||||
/**
|
/**
|
||||||
* Allocate a new device structure.
|
* Allocate a new device structure.
|
||||||
*
|
*
|
||||||
* Allocte a new device structure and attach it to the device tree as a
|
* Allocate a new device structure and attach it to the device tree as a
|
||||||
* child of the parent bus.
|
* child of the parent bus.
|
||||||
*
|
*
|
||||||
* @param parent Parent bus the newly created device should be attached to.
|
* @param parent Parent bus the newly created device should be attached to.
|
||||||
|
@ -415,7 +415,7 @@ static void compute_resources(struct bus *bus, struct resource *bridge,
|
||||||
* A PCI bridge resource does not need to be a power of two size, but
|
* A PCI bridge resource does not need to be a power of two size, but
|
||||||
* it does have a minimum granularity. Round the size up to that
|
* it does have a minimum granularity. Round the size up to that
|
||||||
* minimum granularity so we know not to place something else at an
|
* minimum granularity so we know not to place something else at an
|
||||||
* address postitively decoded by the bridge.
|
* address positively decoded by the bridge.
|
||||||
*/
|
*/
|
||||||
bridge->size = round(base, bridge->gran) -
|
bridge->size = round(base, bridge->gran) -
|
||||||
round(bridge->base, bridge->align);
|
round(bridge->base, bridge->align);
|
||||||
|
@ -730,7 +730,7 @@ device_t vga_pri = 0;
|
||||||
static void set_vga_bridge_bits(void)
|
static void set_vga_bridge_bits(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* FIXME: Modify set_vga_bridge() so it is less PCI centric!
|
* FIXME: Modify set_vga_bridge() so it is less PCI-centric!
|
||||||
* This function knows too much about PCI stuff, it should be just
|
* This function knows too much about PCI stuff, it should be just
|
||||||
* an iterator/visitor.
|
* an iterator/visitor.
|
||||||
*/
|
*/
|
||||||
|
@ -835,7 +835,7 @@ void assign_resources(struct bus *bus)
|
||||||
*
|
*
|
||||||
* The parent's resources should be enabled first to avoid having enabling
|
* The parent's resources should be enabled first to avoid having enabling
|
||||||
* order problem. This is done by calling the parent's enable_resources()
|
* order problem. This is done by calling the parent's enable_resources()
|
||||||
* method before its childrens' enable_resources() methods.
|
* method before its children's enable_resources() methods.
|
||||||
*
|
*
|
||||||
* @param link The link whose devices' resources are to be enabled.
|
* @param link The link whose devices' resources are to be enabled.
|
||||||
*/
|
*/
|
||||||
|
@ -959,7 +959,7 @@ void dev_enumerate(void)
|
||||||
*
|
*
|
||||||
* Starting at the root of the device tree, travel it recursively in two
|
* Starting at the root of the device tree, travel it recursively in two
|
||||||
* passes. In the first pass, we compute and allocate resources (ranges)
|
* passes. In the first pass, we compute and allocate resources (ranges)
|
||||||
* requried by each device. In the second pass, the resources ranges are
|
* required by each device. In the second pass, the resources ranges are
|
||||||
* relocated to their final position and stored to the hardware.
|
* relocated to their final position and stored to the hardware.
|
||||||
*
|
*
|
||||||
* I/O resources grow upward. MEM resources grow downward.
|
* I/O resources grow upward. MEM resources grow downward.
|
||||||
|
@ -1025,7 +1025,7 @@ void dev_configure(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we need to adjust the resources. MEM resources need to start at
|
* Now we need to adjust the resources. MEM resources need to start at
|
||||||
* the highest address managable.
|
* the highest address manageable.
|
||||||
*/
|
*/
|
||||||
for (child = root->link_list->children; child; child = child->sibling) {
|
for (child = root->link_list->children; child; child = child->sibling) {
|
||||||
if (child->path.type != DEVICE_PATH_DOMAIN)
|
if (child->path.type != DEVICE_PATH_DOMAIN)
|
||||||
|
@ -1093,7 +1093,7 @@ void dev_enable(void)
|
||||||
* Initialize a specific device.
|
* Initialize a specific device.
|
||||||
*
|
*
|
||||||
* The parent should be initialized first to avoid having an ordering problem.
|
* The parent should be initialized first to avoid having an ordering problem.
|
||||||
* This is done by calling the parent's init() method before its childrens'
|
* This is done by calling the parent's init() method before its children's
|
||||||
* init() methods.
|
* init() methods.
|
||||||
*
|
*
|
||||||
* @param dev The device to be initialized.
|
* @param dev The device to be initialized.
|
||||||
|
|
|
@ -285,7 +285,7 @@ int path_eq(struct device_path *path1, struct device_path *path2)
|
||||||
equal = (path1->cpu_bus.id == path2->cpu_bus.id);
|
equal = (path1->cpu_bus.id == path2->cpu_bus.id);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printk(BIOS_ERR, "Uknown device type: %d\n", path1->type);
|
printk(BIOS_ERR, "Unknown device type: %d\n", path1->type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,7 +544,7 @@ const char *resource_type(struct resource *resource)
|
||||||
/**
|
/**
|
||||||
* Print the resource that was just stored.
|
* Print the resource that was just stored.
|
||||||
*
|
*
|
||||||
* @param dev The device the stored resorce lives on.
|
* @param dev The device the stored resource lives on.
|
||||||
* @param resource The resource that was just stored.
|
* @param resource The resource that was just stored.
|
||||||
* @param comment TODO
|
* @param comment TODO
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -55,7 +55,7 @@ int dimm_is_registered(enum spd_dimm_type type)
|
||||||
* @ref dimm_attr structure. The SPD data must first be read in a contiguous
|
* @ref dimm_attr structure. The SPD data must first be read in a contiguous
|
||||||
* array, and passed to this function.
|
* array, and passed to this function.
|
||||||
*
|
*
|
||||||
* @param dimm pointer to @ref dimm_attr stucture where the decoded data is to
|
* @param dimm pointer to @ref dimm_attr structure where the decoded data is to
|
||||||
* be stored
|
* be stored
|
||||||
* @param spd array of raw data previously read from the SPD.
|
* @param spd array of raw data previously read from the SPD.
|
||||||
*
|
*
|
||||||
|
@ -309,7 +309,7 @@ int spd_decode_ddr3(dimm_attr * dimm, spd_raw_data spd)
|
||||||
|
|
||||||
if (spd[63] & 0x01) {
|
if (spd[63] & 0x01) {
|
||||||
dimm->flags.pins_mirrored = 1;
|
dimm->flags.pins_mirrored = 1;
|
||||||
printram(" DIMM Rank1 Address bits mirrorred!!!\n");
|
printram(" DIMM Rank1 Address bits mirrored!!!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -336,7 +336,7 @@ static void print_ns(const char *msg, u32 val)
|
||||||
* Print info about the DIMM. Useful to use when CONFIG_DEBUG_RAM_SETUP is
|
* Print info about the DIMM. Useful to use when CONFIG_DEBUG_RAM_SETUP is
|
||||||
* selected, or for a purely informative output.
|
* selected, or for a purely informative output.
|
||||||
*
|
*
|
||||||
* @param dimm pointer to already decoded @ref dimm_attr stucture
|
* @param dimm pointer to already decoded @ref dimm_attr structure
|
||||||
*/
|
*/
|
||||||
void dram_print_spd_ddr3(const dimm_attr * dimm)
|
void dram_print_spd_ddr3(const dimm_attr * dimm)
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,7 +106,7 @@ static unsigned ht_read_freq_cap(device_t dev, unsigned pos)
|
||||||
#if CONFIG_K8_HT_FREQ_1G_SUPPORT
|
#if CONFIG_K8_HT_FREQ_1G_SUPPORT
|
||||||
|
|
||||||
#if !CONFIG_K8_REV_F_SUPPORT
|
#if !CONFIG_K8_REV_F_SUPPORT
|
||||||
/* Only e0 later suupport 1GHz HT. */
|
/* Only e0 later support 1GHz HT. */
|
||||||
if (is_cpu_pre_e0())
|
if (is_cpu_pre_e0())
|
||||||
freq_cap &= ~(1 << HT_FREQ_1000Mhz);
|
freq_cap &= ~(1 << HT_FREQ_1000Mhz);
|
||||||
#endif
|
#endif
|
||||||
|
@ -176,7 +176,7 @@ static int ht_setup_link(struct ht_link *prev, device_t dev, unsigned pos)
|
||||||
upstream_width_cap =
|
upstream_width_cap =
|
||||||
pci_read_config8(prev->dev, prev->pos + prev->config_off);
|
pci_read_config8(prev->dev, prev->pos + prev->config_off);
|
||||||
|
|
||||||
/* Calculate the highest useable frequency. */
|
/* Calculate the highest usable frequency. */
|
||||||
freq = log2(present_freq_cap & upstream_freq_cap);
|
freq = log2(present_freq_cap & upstream_freq_cap);
|
||||||
|
|
||||||
/* Calculate the highest width. */
|
/* Calculate the highest width. */
|
||||||
|
@ -436,7 +436,7 @@ unsigned int hypertransport_scan_chain(struct bus *bus, unsigned min_devfn,
|
||||||
device_t real_last_dev = NULL;
|
device_t real_last_dev = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Restore the hypertransport chain to it's unitialized state. */
|
/* Restore the hypertransport chain to it's uninitialized state. */
|
||||||
ht_collapse_early_enumeration(bus, offset_unitid);
|
ht_collapse_early_enumeration(bus, offset_unitid);
|
||||||
|
|
||||||
/* See which static device nodes I have. */
|
/* See which static device nodes I have. */
|
||||||
|
@ -571,7 +571,7 @@ unsigned int hypertransport_scan_chain(struct bus *bus, unsigned min_devfn,
|
||||||
if (next_unitid > max_unitid)
|
if (next_unitid > max_unitid)
|
||||||
max_unitid = next_unitid;
|
max_unitid = next_unitid;
|
||||||
|
|
||||||
/* Setup the hypetransport link. */
|
/* Setup the hypertransport link. */
|
||||||
bus->reset_needed |= ht_setup_link(&prev, dev, pos);
|
bus->reset_needed |= ht_setup_link(&prev, dev, pos);
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "%s [%04x/%04x] %s next_unitid: %04x\n",
|
printk(BIOS_DEBUG, "%s [%04x/%04x] %s next_unitid: %04x\n",
|
||||||
|
@ -658,7 +658,7 @@ end_of_chain:
|
||||||
* @param bus TODO
|
* @param bus TODO
|
||||||
* @param min_devfn TODO
|
* @param min_devfn TODO
|
||||||
* @param max_devfn TODO
|
* @param max_devfn TODO
|
||||||
* @param max The highest bus number assgined up to now.
|
* @param max The highest bus number assigned up to now.
|
||||||
* @return The maximum bus number found, after scanning all subordinate busses.
|
* @return The maximum bus number found, after scanning all subordinate busses.
|
||||||
*/
|
*/
|
||||||
static unsigned int hypertransport_scan_chain_x(struct bus *bus,
|
static unsigned int hypertransport_scan_chain_x(struct bus *bus,
|
||||||
|
|
|
@ -231,8 +231,8 @@ struct i386_segment_regs {
|
||||||
#define SYSMODE_PREFIX_REPNE 0x00000100
|
#define SYSMODE_PREFIX_REPNE 0x00000100
|
||||||
#define SYSMODE_PREFIX_DATA 0x00000200
|
#define SYSMODE_PREFIX_DATA 0x00000200
|
||||||
#define SYSMODE_PREFIX_ADDR 0x00000400
|
#define SYSMODE_PREFIX_ADDR 0x00000400
|
||||||
//phueper: for REP(E|NE) Instructions, we need to decide wether it should be using
|
//phueper: for REP(E|NE) Instructions, we need to decide whether it should be
|
||||||
//the 32bit ECX register as or the 16bit CX register as count register
|
//using the 32bit ECX register as or the 16bit CX register as count register
|
||||||
#define SYSMODE_32BIT_REP 0x00000800
|
#define SYSMODE_32BIT_REP 0x00000800
|
||||||
#define SYSMODE_INTR_PENDING 0x10000000
|
#define SYSMODE_INTR_PENDING 0x10000000
|
||||||
#define SYSMODE_EXTRN_INTR 0x20000000
|
#define SYSMODE_EXTRN_INTR 0x20000000
|
||||||
|
|
|
@ -59,11 +59,11 @@
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
REMARKS:
|
REMARKS:
|
||||||
Data structure containing ponters to programmed I/O functions used by the
|
Data structure containing pointers to programmed I/O functions used by the
|
||||||
emulator. This is used so that the user program can hook all programmed
|
emulator. This is used so that the user program can hook all programmed
|
||||||
I/O for the emulator to handled as necessary by the user program. By
|
I/O for the emulator to handled as necessary by the user program. By
|
||||||
default the emulator contains simple functions that do not do access the
|
default the emulator contains simple functions that do not do access the
|
||||||
hardware in any way. To allow the emualtor access the hardware, you will
|
hardware in any way. To allow the emulator access the hardware, you will
|
||||||
need to override the programmed I/O functions using the X86EMU_setupPioFuncs
|
need to override the programmed I/O functions using the X86EMU_setupPioFuncs
|
||||||
function.
|
function.
|
||||||
|
|
||||||
|
@ -89,11 +89,11 @@ typedef struct {
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
REMARKS:
|
REMARKS:
|
||||||
Data structure containing ponters to memory access functions used by the
|
Data structure containing pointers to memory access functions used by the
|
||||||
emulator. This is used so that the user program can hook all memory
|
emulator. This is used so that the user program can hook all memory
|
||||||
access functions as necessary for the emulator. By default the emulator
|
access functions as necessary for the emulator. By default the emulator
|
||||||
contains simple functions that only access the internal memory of the
|
contains simple functions that only access the internal memory of the
|
||||||
emulator. If you need specialised functions to handle access to different
|
emulator. If you need specialized functions to handle access to different
|
||||||
types of memory (ie: hardware framebuffer accesses and BIOS memory access
|
types of memory (ie: hardware framebuffer accesses and BIOS memory access
|
||||||
etc), you will need to override this using the X86EMU_setupMemFuncs
|
etc), you will need to override this using the X86EMU_setupMemFuncs
|
||||||
function.
|
function.
|
||||||
|
|
|
@ -123,7 +123,7 @@ int int1a_handler(void)
|
||||||
unsigned short func = (unsigned short)X86_EAX;
|
unsigned short func = (unsigned short)X86_EAX;
|
||||||
int retval = 1;
|
int retval = 1;
|
||||||
unsigned short devid, vendorid, devfn;
|
unsigned short devid, vendorid, devfn;
|
||||||
/* Use short to get rid of gabage in upper half of 32-bit register */
|
/* Use short to get rid of garbage in upper half of 32-bit register */
|
||||||
short devindex;
|
short devindex;
|
||||||
unsigned char bus;
|
unsigned char bus;
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
@ -137,7 +137,7 @@ int int1a_handler(void)
|
||||||
X86_EAX &= 0xffff0000; /* Clear AH / AL */
|
X86_EAX &= 0xffff0000; /* Clear AH / AL */
|
||||||
X86_EAX |= PCI_CONFIG_SPACE_TYPE1 | PCI_SPECIAL_CYCLE_TYPE1;
|
X86_EAX |= PCI_CONFIG_SPACE_TYPE1 | PCI_SPECIAL_CYCLE_TYPE1;
|
||||||
// last bus in the system. Hard code to 255 for now.
|
// last bus in the system. Hard code to 255 for now.
|
||||||
// dev_enumerate() does not seem to tell us (publically)
|
// dev_enumerate() does not seem to tell us (publicly)
|
||||||
X86_ECX = 0xff;
|
X86_ECX = 0xff;
|
||||||
X86_EDI = 0x00000000; /* protected mode entry */
|
X86_EDI = 0x00000000; /* protected mode entry */
|
||||||
retval = 1;
|
retval = 1;
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following allow us to look at the bytes of an instruction. The
|
* The following allow us to look at the bytes of an instruction. The
|
||||||
* first INCR_INSTRN_LEN, is called everytime bytes are consumed in
|
* first INCR_INSTRN_LEN, is called every time bytes are consumed in
|
||||||
* the decoding process. The SAVE_IP_CS is called initially when the
|
* the decoding process. The SAVE_IP_CS is called initially when the
|
||||||
* major opcode of the instruction is accessed.
|
* major opcode of the instruction is accessed.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
* Developer: Kendall Bennett
|
* Developer: Kendall Bennett
|
||||||
*
|
*
|
||||||
* Description: This file includes subroutines which are related to
|
* Description: This file includes subroutines which are related to
|
||||||
* instruction decoding and accessess of immediate data via IP. etc.
|
* instruction decoding and accesses of immediate data via IP. etc.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
REMARKS:
|
REMARKS:
|
||||||
Handles any pending asychronous interrupts.
|
Handles any pending asynchronous interrupts.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static void x86emu_intr_handle(void)
|
static void x86emu_intr_handle(void)
|
||||||
{
|
{
|
||||||
|
@ -77,7 +77,7 @@ next instruction.
|
||||||
void x86emu_intr_raise(
|
void x86emu_intr_raise(
|
||||||
u8 intrnum)
|
u8 intrnum)
|
||||||
{
|
{
|
||||||
printf("%s, raising exeception %x\n", __func__, intrnum);
|
printf("%s, raising exception %x\n", __func__, intrnum);
|
||||||
x86emu_dump_regs();
|
x86emu_dump_regs();
|
||||||
M.x86.intno = intrnum;
|
M.x86.intno = intrnum;
|
||||||
M.x86.intr |= INTR_SYNCH;
|
M.x86.intr |= INTR_SYNCH;
|
||||||
|
@ -243,7 +243,7 @@ no segment override. Address modes such as -3[BP] or 10[BP+SI] all refer to
|
||||||
addresses relative to SS (ie: on the stack). So, at the minimum, all
|
addresses relative to SS (ie: on the stack). So, at the minimum, all
|
||||||
decodings of addressing modes would have to set/clear a bit describing
|
decodings of addressing modes would have to set/clear a bit describing
|
||||||
whether the access is relative to DS or SS. That is the function of the
|
whether the access is relative to DS or SS. That is the function of the
|
||||||
cpu-state-varible M.x86.mode. There are several potential states:
|
cpu-state-variable M.x86.mode. There are several potential states:
|
||||||
|
|
||||||
repe prefix seen (handled elsewhere)
|
repe prefix seen (handled elsewhere)
|
||||||
repne prefix seen (ditto)
|
repne prefix seen (ditto)
|
||||||
|
@ -255,7 +255,7 @@ cpu-state-varible M.x86.mode. There are several potential states:
|
||||||
gs segment override
|
gs segment override
|
||||||
ss segment override
|
ss segment override
|
||||||
|
|
||||||
ds/ss select (in absense of override)
|
ds/ss select (in absence of override)
|
||||||
|
|
||||||
Each of the above 7 items are handled with a bit in the mode field.
|
Each of the above 7 items are handled with a bit in the mode field.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
* to the 256 byte-"opcodes" found on the 8086. The table which
|
* to the 256 byte-"opcodes" found on the 8086. The table which
|
||||||
* dispatches this is found in the files optab.[ch].
|
* dispatches this is found in the files optab.[ch].
|
||||||
*
|
*
|
||||||
* Each opcode proc has a comment preceeding it which gives it's table
|
* Each opcode proc has a comment preceding it which gives it's table
|
||||||
* address. Several opcodes are missing (undefined) in the table.
|
* address. Several opcodes are missing (undefined) in the table.
|
||||||
*
|
*
|
||||||
* Each proc includes information for decoding (DECODE_PRINTF and
|
* Each proc includes information for decoding (DECODE_PRINTF and
|
||||||
|
@ -2530,7 +2530,7 @@ static void x86emuOp_movs_byte(u8 X86EMU_UNUSED(op1))
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
count = 1;
|
count = 1;
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* move them until (E)CX is ZERO. */
|
/* move them until (E)CX is ZERO. */
|
||||||
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
||||||
M.x86.R_CX = 0;
|
M.x86.R_CX = 0;
|
||||||
|
@ -2577,7 +2577,7 @@ static void x86emuOp_movs_word(u8 X86EMU_UNUSED(op1))
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
count = 1;
|
count = 1;
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* move them until (E)CX is ZERO. */
|
/* move them until (E)CX is ZERO. */
|
||||||
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
||||||
M.x86.R_CX = 0;
|
M.x86.R_CX = 0;
|
||||||
|
@ -2773,7 +2773,7 @@ static void x86emuOp_stos_byte(u8 X86EMU_UNUSED(op1))
|
||||||
inc = 1;
|
inc = 1;
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* move them until (E)CX is ZERO. */
|
/* move them until (E)CX is ZERO. */
|
||||||
while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
|
while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
|
||||||
store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AL);
|
store_data_byte_abs(M.x86.R_ES, M.x86.R_DI, M.x86.R_AL);
|
||||||
|
@ -2820,7 +2820,7 @@ static void x86emuOp_stos_word(u8 X86EMU_UNUSED(op1))
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
count = 1;
|
count = 1;
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* move them until (E)CX is ZERO. */
|
/* move them until (E)CX is ZERO. */
|
||||||
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
||||||
M.x86.R_CX = 0;
|
M.x86.R_CX = 0;
|
||||||
|
@ -2858,7 +2858,7 @@ static void x86emuOp_lods_byte(u8 X86EMU_UNUSED(op1))
|
||||||
else
|
else
|
||||||
inc = 1;
|
inc = 1;
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* move them until (E)CX is ZERO. */
|
/* move them until (E)CX is ZERO. */
|
||||||
while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
|
while (((M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX) != 0) {
|
||||||
M.x86.R_AL = fetch_data_byte(M.x86.R_SI);
|
M.x86.R_AL = fetch_data_byte(M.x86.R_SI);
|
||||||
|
@ -2905,7 +2905,7 @@ static void x86emuOp_lods_word(u8 X86EMU_UNUSED(op1))
|
||||||
TRACE_AND_STEP();
|
TRACE_AND_STEP();
|
||||||
count = 1;
|
count = 1;
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* move them until (E)CX is ZERO. */
|
/* move them until (E)CX is ZERO. */
|
||||||
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
count = (M.x86.mode & SYSMODE_32BIT_REP) ? M.x86.R_ECX : M.x86.R_CX;
|
||||||
M.x86.R_CX = 0;
|
M.x86.R_CX = 0;
|
||||||
|
@ -4075,7 +4075,7 @@ static void x86emuOp_xlat(u8 X86EMU_UNUSED(op1))
|
||||||
END_OF_INSTR();
|
END_OF_INSTR();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* instuctions D8 .. DF are in i87_ops.c */
|
/* Instructions D8 .. DF are in i87_ops.c */
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
REMARKS:
|
REMARKS:
|
||||||
|
|
|
@ -134,7 +134,7 @@ static u32 x86emu_parity_tab[8] =
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
REMARKS:
|
REMARKS:
|
||||||
implements side efects for byte operations that don't overflow
|
implements side effects for byte operations that don't overflow
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static void set_parity_flag(u32 res)
|
static void set_parity_flag(u32 res)
|
||||||
|
@ -790,7 +790,7 @@ u8 rcl_byte(u8 d, u8 s)
|
||||||
/* OVERFLOW is set *IFF* cnt==1, then it is the
|
/* OVERFLOW is set *IFF* cnt==1, then it is the
|
||||||
xor of CF and the most significant bit. Blecck. */
|
xor of CF and the most significant bit. Blecck. */
|
||||||
/* parenthesized this expression since it appears to
|
/* parenthesized this expression since it appears to
|
||||||
be causing OF to be misset */
|
be causing OF to be missed */
|
||||||
CONDITIONAL_SET_FLAG(cnt == 1 && XOR2(cf + ((res >> 6) & 0x2)),
|
CONDITIONAL_SET_FLAG(cnt == 1 && XOR2(cf + ((res >> 6) & 0x2)),
|
||||||
F_OF);
|
F_OF);
|
||||||
|
|
||||||
|
@ -1800,7 +1800,7 @@ void test_byte(u8 d, u8 s)
|
||||||
|
|
||||||
CLEAR_FLAG(F_OF);
|
CLEAR_FLAG(F_OF);
|
||||||
set_szp_flags_8((u8)res);
|
set_szp_flags_8((u8)res);
|
||||||
/* AF == dont care */
|
/* AF == don't care */
|
||||||
CLEAR_FLAG(F_CF);
|
CLEAR_FLAG(F_CF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1816,7 +1816,7 @@ void test_word(u16 d, u16 s)
|
||||||
|
|
||||||
CLEAR_FLAG(F_OF);
|
CLEAR_FLAG(F_OF);
|
||||||
set_szp_flags_16((u16)res);
|
set_szp_flags_16((u16)res);
|
||||||
/* AF == dont care */
|
/* AF == don't care */
|
||||||
CLEAR_FLAG(F_CF);
|
CLEAR_FLAG(F_CF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1832,7 +1832,7 @@ void test_long(u32 d, u32 s)
|
||||||
|
|
||||||
CLEAR_FLAG(F_OF);
|
CLEAR_FLAG(F_OF);
|
||||||
set_szp_flags_32(res);
|
set_szp_flags_32(res);
|
||||||
/* AF == dont care */
|
/* AF == don't care */
|
||||||
CLEAR_FLAG(F_CF);
|
CLEAR_FLAG(F_CF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2311,7 +2311,7 @@ void ins(int size)
|
||||||
inc = -size;
|
inc = -size;
|
||||||
}
|
}
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* in until (E)CX is ZERO. */
|
/* in until (E)CX is ZERO. */
|
||||||
u32 count = ((M.x86.mode & SYSMODE_32BIT_REP) ?
|
u32 count = ((M.x86.mode & SYSMODE_32BIT_REP) ?
|
||||||
M.x86.R_ECX : M.x86.R_CX);
|
M.x86.R_ECX : M.x86.R_CX);
|
||||||
|
@ -2353,7 +2353,7 @@ void outs(int size)
|
||||||
inc = -size;
|
inc = -size;
|
||||||
}
|
}
|
||||||
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
if (M.x86.mode & (SYSMODE_PREFIX_REPE | SYSMODE_PREFIX_REPNE)) {
|
||||||
/* dont care whether REPE or REPNE */
|
/* don't care whether REPE or REPNE */
|
||||||
/* out until (E)CX is ZERO. */
|
/* out until (E)CX is ZERO. */
|
||||||
u32 count = ((M.x86.mode & SYSMODE_32BIT_REP) ?
|
u32 count = ((M.x86.mode & SYSMODE_32BIT_REP) ?
|
||||||
M.x86.R_ECX : M.x86.R_CX);
|
M.x86.R_ECX : M.x86.R_CX);
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
* Description: This file includes subroutines which are related to
|
* Description: This file includes subroutines which are related to
|
||||||
* programmed I/O and memory access. Included in this module
|
* programmed I/O and memory access. Included in this module
|
||||||
* are default functions with limited usefulness. For real
|
* are default functions with limited usefulness. For real
|
||||||
* uses these functions will most likely be overriden by the
|
* uses these functions will most likely be overridden by the
|
||||||
* user library.
|
* user library.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
@ -381,7 +381,7 @@ PARAMETERS:
|
||||||
int - New software interrupt to prepare for
|
int - New software interrupt to prepare for
|
||||||
|
|
||||||
REMARKS:
|
REMARKS:
|
||||||
This function is used to set up the emulator state to exceute a software
|
This function is used to set up the emulator state to execute a software
|
||||||
interrupt. This can be used by the user application code to allow an
|
interrupt. This can be used by the user application code to allow an
|
||||||
interrupt to be hooked, examined and then reflected back to the emulator
|
interrupt to be hooked, examined and then reflected back to the emulator
|
||||||
so that the code in the emulator will continue processing the software
|
so that the code in the emulator will continue processing the software
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
* Developer: Kendall Bennett
|
* Developer: Kendall Bennett
|
||||||
*
|
*
|
||||||
* Description: Header file for system specific functions. These functions
|
* Description: Header file for system specific functions. These functions
|
||||||
* are always compiled and linked in the OS depedent libraries,
|
* are always compiled and linked in the OS dependent libraries,
|
||||||
* and never in a binary portable driver.
|
* and never in a binary portable driver.
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
|
@ -219,7 +219,7 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad
|
||||||
my_wrb(0x000ffe6e, 0xcf);
|
my_wrb(0x000ffe6e, 0xcf);
|
||||||
|
|
||||||
// setup BIOS Data Area (0000:04xx, or 0040:00xx)
|
// setup BIOS Data Area (0000:04xx, or 0040:00xx)
|
||||||
// we currently 0 this area, meaning "we dont have
|
// we currently 0 this area, meaning "we don't have
|
||||||
// any hardware" :-) no serial/parallel ports, floppys, ...
|
// any hardware" :-) no serial/parallel ports, floppys, ...
|
||||||
memset(biosmem + 0x400, 0x0, 0x100);
|
memset(biosmem + 0x400, 0x0, 0x100);
|
||||||
|
|
||||||
|
@ -388,7 +388,7 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad
|
||||||
*/
|
*/
|
||||||
if ((pop_word() == 0xf4f4) && (M.x86.R_SS == STACK_SEGMENT)
|
if ((pop_word() == 0xf4f4) && (M.x86.R_SS == STACK_SEGMENT)
|
||||||
&& (M.x86.R_SP == STACK_START_OFFSET)) {
|
&& (M.x86.R_SP == STACK_START_OFFSET)) {
|
||||||
DEBUG_PRINTF("Stack is clean, initialization successfull!\n");
|
DEBUG_PRINTF("Stack is clean, initialization successful!\n");
|
||||||
} else {
|
} else {
|
||||||
printf("Stack unclean, initialization probably NOT COMPLETE!\n");
|
printf("Stack unclean, initialization probably NOT COMPLETE!\n");
|
||||||
DEBUG_PRINTF("SS:SP = %04x:%04x, expected: %04x:%04x\n",
|
DEBUG_PRINTF("SS:SP = %04x:%04x, expected: %04x:%04x\n",
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#define VBE_SEGMENT 0x3000
|
#define VBE_SEGMENT 0x3000
|
||||||
|
|
||||||
#define PMM_CONV_SEGMENT 0x4000 // 4000:xxxx is PMM conventional memory area, extended memory area
|
#define PMM_CONV_SEGMENT 0x4000 // 4000:xxxx is PMM conventional memory area, extended memory area
|
||||||
// will be anything beyound MIN_REQUIRED_MEMORY_SIZE
|
// will be anything beyond MIN_REQUIRED_MEMORY_SIZE
|
||||||
#define PNP_DATA_SEGMENT 0x5000
|
#define PNP_DATA_SEGMENT 0x5000
|
||||||
|
|
||||||
#define OPTION_ROM_CODE_SEGMENT 0xc000
|
#define OPTION_ROM_CODE_SEGMENT 0xc000
|
||||||
|
@ -38,9 +38,9 @@
|
||||||
// Address, there will only be a call to this INT and a RETF
|
// Address, there will only be a call to this INT and a RETF
|
||||||
#define PNP_INT_NUM 0xFD
|
#define PNP_INT_NUM 0xFD
|
||||||
|
|
||||||
/* array of funtion pointers to override generic interrupt handlers
|
/* array of function pointers to override generic interrupt handlers
|
||||||
* a YABEL caller can add functions to this array before calling YABEL
|
* a YABEL caller can add functions to this array before calling YABEL
|
||||||
* if a interrupt occurs, YABEL checks wether a function is set in
|
* if a interrupt occurs, YABEL checks whether a function is set in
|
||||||
* this array and only runs the generic interrupt handler code, if
|
* this array and only runs the generic interrupt handler code, if
|
||||||
* the function pointer is NULL */
|
* the function pointer is NULL */
|
||||||
typedef int (* yabel_handleIntFunc)(void);
|
typedef int (* yabel_handleIntFunc)(void);
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/* this file contains functions provided by SLOF, that the current biosemu implementation needs
|
/* this file contains functions provided by SLOF, that the current biosemu implementation needs
|
||||||
* they should go away inthe future...
|
* they should go away in the future...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
|
|
@ -60,7 +60,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
r->index;
|
r->index;
|
||||||
translate_address_array[taa_index].address = r->base;
|
translate_address_array[taa_index].address = r->base;
|
||||||
translate_address_array[taa_index].size = r->size;
|
translate_address_array[taa_index].size = r->size;
|
||||||
/* dont translate addresses... all addresses are 1:1 */
|
/* don't translate addresses... all addresses are 1:1 */
|
||||||
translate_address_array[taa_index].address_offset = 0;
|
translate_address_array[taa_index].address_offset = 0;
|
||||||
taa_index++;
|
taa_index++;
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
translate_address_array[taa_index].cfg_space_offset = 0x30;
|
translate_address_array[taa_index].cfg_space_offset = 0x30;
|
||||||
translate_address_array[taa_index].address = bios_device.img_addr;
|
translate_address_array[taa_index].address = bios_device.img_addr;
|
||||||
translate_address_array[taa_index].size = 0; /* TODO: do we need the size? */
|
translate_address_array[taa_index].size = 0; /* TODO: do we need the size? */
|
||||||
/* dont translate addresses... all addresses are 1:1 */
|
/* don't translate addresses... all addresses are 1:1 */
|
||||||
translate_address_array[taa_index].address_offset = 0;
|
translate_address_array[taa_index].address_offset = 0;
|
||||||
taa_index++;
|
taa_index++;
|
||||||
/* legacy ranges if its a VGA card... */
|
/* legacy ranges if its a VGA card... */
|
||||||
|
@ -84,7 +84,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
translate_address_array[taa_index].cfg_space_offset = 0;
|
translate_address_array[taa_index].cfg_space_offset = 0;
|
||||||
translate_address_array[taa_index].address = 0x3b0;
|
translate_address_array[taa_index].address = 0x3b0;
|
||||||
translate_address_array[taa_index].size = 0xc;
|
translate_address_array[taa_index].size = 0xc;
|
||||||
/* dont translate addresses... all addresses are 1:1 */
|
/* don't translate addresses... all addresses are 1:1 */
|
||||||
translate_address_array[taa_index].address_offset = 0;
|
translate_address_array[taa_index].address_offset = 0;
|
||||||
taa_index++;
|
taa_index++;
|
||||||
/* I/O 0x3C0-0x3DF */
|
/* I/O 0x3C0-0x3DF */
|
||||||
|
@ -94,7 +94,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
translate_address_array[taa_index].cfg_space_offset = 0;
|
translate_address_array[taa_index].cfg_space_offset = 0;
|
||||||
translate_address_array[taa_index].address = 0x3c0;
|
translate_address_array[taa_index].address = 0x3c0;
|
||||||
translate_address_array[taa_index].size = 0x20;
|
translate_address_array[taa_index].size = 0x20;
|
||||||
/* dont translate addresses... all addresses are 1:1 */
|
/* don't translate addresses... all addresses are 1:1 */
|
||||||
translate_address_array[taa_index].address_offset = 0;
|
translate_address_array[taa_index].address_offset = 0;
|
||||||
taa_index++;
|
taa_index++;
|
||||||
/* Mem 0xA0000-0xBFFFF */
|
/* Mem 0xA0000-0xBFFFF */
|
||||||
|
@ -104,7 +104,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
translate_address_array[taa_index].cfg_space_offset = 0;
|
translate_address_array[taa_index].cfg_space_offset = 0;
|
||||||
translate_address_array[taa_index].address = 0xa0000;
|
translate_address_array[taa_index].address = 0xa0000;
|
||||||
translate_address_array[taa_index].size = 0x20000;
|
translate_address_array[taa_index].size = 0x20000;
|
||||||
/* dont translate addresses... all addresses are 1:1 */
|
/* don't translate addresses... all addresses are 1:1 */
|
||||||
translate_address_array[taa_index].address_offset = 0;
|
translate_address_array[taa_index].address_offset = 0;
|
||||||
taa_index++;
|
taa_index++;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ void translate_address_dev(u64 *, phandle_t);
|
||||||
u64 get_puid(phandle_t node);
|
u64 get_puid(phandle_t node);
|
||||||
|
|
||||||
|
|
||||||
// scan all adresses assigned to the device ("assigned-addresses" and "reg")
|
// scan all addresses assigned to the device ("assigned-addresses" and "reg")
|
||||||
// store in translate_address_array for faster translation using dev_translate_address
|
// store in translate_address_array for faster translation using dev_translate_address
|
||||||
void
|
void
|
||||||
biosemu_dev_get_addr_info(void)
|
biosemu_dev_get_addr_info(void)
|
||||||
|
@ -171,7 +171,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
len = of_getprop(bios_device.phandle, "reg", buf, sizeof(buf));
|
len = of_getprop(bios_device.phandle, "reg", buf, sizeof(buf));
|
||||||
for (i = 0; i < (len / sizeof(assigned_address_t)); i++) {
|
for (i = 0; i < (len / sizeof(assigned_address_t)); i++) {
|
||||||
if ((buf[i].size == 0) || (buf[i].cfg_space_offset != 0)) {
|
if ((buf[i].size == 0) || (buf[i].cfg_space_offset != 0)) {
|
||||||
// we dont care for ranges with size 0 and
|
// we don't care for ranges with size 0 and
|
||||||
// BARs and Expansion ROM must be in assigned-addresses... so in reg
|
// BARs and Expansion ROM must be in assigned-addresses... so in reg
|
||||||
// we only look for those without config space offset set...
|
// we only look for those without config space offset set...
|
||||||
// i.e. the legacy ranges
|
// i.e. the legacy ranges
|
||||||
|
@ -211,7 +211,7 @@ biosemu_dev_get_addr_info(void)
|
||||||
|
|
||||||
// "special memory" is a hack to make some parts of memory fall through to real memory
|
// "special memory" is a hack to make some parts of memory fall through to real memory
|
||||||
// (ie. no translation). Necessary if option ROMs attempt DMA there, map registers or
|
// (ie. no translation). Necessary if option ROMs attempt DMA there, map registers or
|
||||||
// do similarily crazy things.
|
// do similarly crazy things.
|
||||||
void
|
void
|
||||||
biosemu_add_special_memory(u32 start, u32 size)
|
biosemu_add_special_memory(u32 start, u32 size)
|
||||||
{
|
{
|
||||||
|
@ -222,7 +222,7 @@ biosemu_add_special_memory(u32 start, u32 size)
|
||||||
translate_address_array[taa_index].cfg_space_offset = 0;
|
translate_address_array[taa_index].cfg_space_offset = 0;
|
||||||
translate_address_array[taa_index].address = start;
|
translate_address_array[taa_index].address = start;
|
||||||
translate_address_array[taa_index].size = size;
|
translate_address_array[taa_index].size = size;
|
||||||
/* dont translate addresses... all addresses are 1:1 */
|
/* don't translate addresses... all addresses are 1:1 */
|
||||||
translate_address_array[taa_index].address_offset = 0;
|
translate_address_array[taa_index].address_offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,7 +443,7 @@ biosemu_dev_translate_address(int type, unsigned long * addr)
|
||||||
int i = 0;
|
int i = 0;
|
||||||
translate_address_t ta;
|
translate_address_t ta;
|
||||||
#if !CONFIG_PCI_OPTION_ROM_RUN_YABEL
|
#if !CONFIG_PCI_OPTION_ROM_RUN_YABEL
|
||||||
/* we dont need this hack for coreboot... we can access legacy areas */
|
/* we don't need this hack for coreboot... we can access legacy areas */
|
||||||
//check if it is an access to legacy VGA Mem... if it is, map the address
|
//check if it is an access to legacy VGA Mem... if it is, map the address
|
||||||
//to the vmem BAR and then translate it...
|
//to the vmem BAR and then translate it...
|
||||||
// (translation info provided by Ben Herrenschmidt)
|
// (translation info provided by Ben Herrenschmidt)
|
||||||
|
|
|
@ -243,7 +243,7 @@ handleInt16(void)
|
||||||
// since we currently always read the char from the FW buffer,
|
// since we currently always read the char from the FW buffer,
|
||||||
// we misuse the ring buffer, we use it as pointer to a u64 that stores
|
// we misuse the ring buffer, we use it as pointer to a u64 that stores
|
||||||
// multi-byte keys (e.g. special keys in VT100 terminal)
|
// multi-byte keys (e.g. special keys in VT100 terminal)
|
||||||
// and as long as a key is available (not 0) we dont read further keys
|
// and as long as a key is available (not 0) we don't read further keys
|
||||||
u64 *keycode = (u64 *) (M.mem_base + 0x41e);
|
u64 *keycode = (u64 *) (M.mem_base + 0x41e);
|
||||||
s8 c;
|
s8 c;
|
||||||
// function number in AH
|
// function number in AH
|
||||||
|
@ -538,7 +538,7 @@ handleInterrupt(int intNum)
|
||||||
DEBUG_PRINTF_INTR("%s(%x)\n", __func__, intNum);
|
DEBUG_PRINTF_INTR("%s(%x)\n", __func__, intNum);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* check wether this interrupt has a function pointer set in yabel_intFuncArray and run that */
|
/* check whether this interrupt has a function pointer set in yabel_intFuncArray and run that */
|
||||||
if (yabel_intFuncArray[intNum]) {
|
if (yabel_intFuncArray[intNum]) {
|
||||||
DEBUG_PRINTF_INTR("%s(%x) intHandler overridden, calling it...\n", __func__, intNum);
|
DEBUG_PRINTF_INTR("%s(%x) intHandler overridden, calling it...\n", __func__, intNum);
|
||||||
int_handled = (*yabel_intFuncArray[intNum])();
|
int_handled = (*yabel_intFuncArray[intNum])();
|
||||||
|
|
|
@ -188,7 +188,7 @@ my_inb(X86EMU_pioAddr addr)
|
||||||
unsigned long translated_addr = addr;
|
unsigned long translated_addr = addr;
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access Device I/O (BAR or Legacy...)
|
//translation successful, access Device I/O (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_IO("%s(%x): access to Device I/O\n", __func__,
|
DEBUG_PRINTF_IO("%s(%x): access to Device I/O\n", __func__,
|
||||||
addr);
|
addr);
|
||||||
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -238,7 +238,7 @@ my_inw(X86EMU_pioAddr addr)
|
||||||
unsigned long translated_addr = addr;
|
unsigned long translated_addr = addr;
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access Device I/O (BAR or Legacy...)
|
//translation successful, access Device I/O (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_IO("%s(%x): access to Device I/O\n", __func__,
|
DEBUG_PRINTF_IO("%s(%x): access to Device I/O\n", __func__,
|
||||||
addr);
|
addr);
|
||||||
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -283,7 +283,7 @@ my_inl(X86EMU_pioAddr addr)
|
||||||
unsigned long translated_addr = addr;
|
unsigned long translated_addr = addr;
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access Device I/O (BAR or Legacy...)
|
//translation successful, access Device I/O (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_IO("%s(%x): access to Device I/O\n", __func__,
|
DEBUG_PRINTF_IO("%s(%x): access to Device I/O\n", __func__,
|
||||||
addr);
|
addr);
|
||||||
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -329,7 +329,7 @@ my_outb(X86EMU_pioAddr addr, u8 val)
|
||||||
unsigned long translated_addr = addr;
|
unsigned long translated_addr = addr;
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access Device I/O (BAR or Legacy...)
|
//translation successful, access Device I/O (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_IO("%s(%x, %x): access to Device I/O\n",
|
DEBUG_PRINTF_IO("%s(%x, %x): access to Device I/O\n",
|
||||||
__func__, addr, val);
|
__func__, addr, val);
|
||||||
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -361,7 +361,7 @@ my_outw(X86EMU_pioAddr addr, u16 val)
|
||||||
unsigned long translated_addr = addr;
|
unsigned long translated_addr = addr;
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access Device I/O (BAR or Legacy...)
|
//translation successful, access Device I/O (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_IO("%s(%x, %x): access to Device I/O\n",
|
DEBUG_PRINTF_IO("%s(%x, %x): access to Device I/O\n",
|
||||||
__func__, addr, val);
|
__func__, addr, val);
|
||||||
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -402,7 +402,7 @@ my_outl(X86EMU_pioAddr addr, u32 val)
|
||||||
unsigned long translated_addr = addr;
|
unsigned long translated_addr = addr;
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_IO, &translated_addr);
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access Device I/O (BAR or Legacy...)
|
//translation successful, access Device I/O (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_IO("%s(%x, %x): access to Device I/O\n",
|
DEBUG_PRINTF_IO("%s(%x, %x): access to Device I/O\n",
|
||||||
__func__, addr, val);
|
__func__, addr, val);
|
||||||
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_IO("%s(%04x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
|
|
@ -177,7 +177,7 @@ static inline void DEBUG_CHECK_VMEM_WRITE(u32 _addr, u32 _val) {};
|
||||||
static void
|
static void
|
||||||
update_time(u32 cur_val)
|
update_time(u32 cur_val)
|
||||||
{
|
{
|
||||||
//for convenience, we let the start of timebase be at midnight, we currently dont support
|
//for convenience, we let the start of timebase be at midnight, we currently don't support
|
||||||
//real daytime anyway...
|
//real daytime anyway...
|
||||||
u64 ticks_per_day = tb_freq * 60 * 24;
|
u64 ticks_per_day = tb_freq * 60 * 24;
|
||||||
// at 18Hz a period is ~55ms, converted to ticks (tb_freq is ticks/second)
|
// at 18Hz a period is ~55ms, converted to ticks (tb_freq is ticks/second)
|
||||||
|
@ -202,7 +202,7 @@ my_rdb(u32 addr)
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_MEM, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_MEM, &translated_addr);
|
||||||
u8 rval;
|
u8 rval;
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access VGA Memory (BAR or Legacy...)
|
//translation successful, access VGA Memory (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_MEM("%s(%08x): access to VGA Memory\n",
|
DEBUG_PRINTF_MEM("%s(%08x): access to VGA Memory\n",
|
||||||
__func__, addr);
|
__func__, addr);
|
||||||
//DEBUG_PRINTF_MEM("%s(%08x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_MEM("%s(%08x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -234,7 +234,7 @@ my_rdw(u32 addr)
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_MEM, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_MEM, &translated_addr);
|
||||||
u16 rval;
|
u16 rval;
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access VGA Memory (BAR or Legacy...)
|
//translation successful, access VGA Memory (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_MEM("%s(%08x): access to VGA Memory\n",
|
DEBUG_PRINTF_MEM("%s(%08x): access to VGA Memory\n",
|
||||||
__func__, addr);
|
__func__, addr);
|
||||||
//DEBUG_PRINTF_MEM("%s(%08x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_MEM("%s(%08x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
@ -285,7 +285,7 @@ my_rdl(u32 addr)
|
||||||
u8 translated = biosemu_dev_translate_address(IORESOURCE_MEM, &translated_addr);
|
u8 translated = biosemu_dev_translate_address(IORESOURCE_MEM, &translated_addr);
|
||||||
u32 rval;
|
u32 rval;
|
||||||
if (translated != 0) {
|
if (translated != 0) {
|
||||||
//translation successfull, access VGA Memory (BAR or Legacy...)
|
//translation successful, access VGA Memory (BAR or Legacy...)
|
||||||
DEBUG_PRINTF_MEM("%s(%x): access to VGA Memory\n",
|
DEBUG_PRINTF_MEM("%s(%x): access to VGA Memory\n",
|
||||||
__func__, addr);
|
__func__, addr);
|
||||||
//DEBUG_PRINTF_MEM("%s(%08x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
//DEBUG_PRINTF_MEM("%s(%08x): translated_addr: %llx\n", __func__, addr, translated_addr);
|
||||||
|
|
|
@ -222,7 +222,7 @@ void pmm_handleInt()
|
||||||
DEBUG_PRINTF_PMM("%s: pmmDeallocate: PMM segment offset: %x\n",
|
DEBUG_PRINTF_PMM("%s: pmmDeallocate: PMM segment offset: %x\n",
|
||||||
__func__, buffer);
|
__func__, buffer);
|
||||||
i = 0;
|
i = 0;
|
||||||
/* rval = 0 means we deallocated the buffer, so set it to 1 in case we dont find it and
|
/* rval = 0 means we deallocated the buffer, so set it to 1 in case we don't find it and
|
||||||
* thus cannot deallocate
|
* thus cannot deallocate
|
||||||
*/
|
*/
|
||||||
rval = 1;
|
rval = 1;
|
||||||
|
|
|
@ -24,9 +24,9 @@ typedef struct {
|
||||||
u8 checksum;
|
u8 checksum;
|
||||||
u32 entry_point_offset;
|
u32 entry_point_offset;
|
||||||
u8 reserved[5];
|
u8 reserved[5];
|
||||||
/* Code is not part of the speced PMM struct, however, since I cannot
|
/* Code is not part of the specced PMM struct, however, since I cannot
|
||||||
* put the handling of PMM in the virtual memory (I dont want to hack it
|
* put the handling of PMM in the virtual memory (I don't want to hack
|
||||||
* together in x86 assembly ;-)) this code array is pointed to by
|
* it together in x86 assembly ;-)) this code array is pointed to by
|
||||||
* entry_point_offset, in code there is only a INT call and a RETF,
|
* entry_point_offset, in code there is only a INT call and a RETF,
|
||||||
* thus every PMM call will issue a PMM INT (only defined in YABEL,
|
* thus every PMM call will issue a PMM INT (only defined in YABEL,
|
||||||
* see interrupt.c) and the INT Handler will do the actual PMM work.
|
* see interrupt.c) and the INT Handler will do the actual PMM work.
|
||||||
|
|
|
@ -103,7 +103,7 @@ vbe_info(vbe_info_t * info)
|
||||||
// offset 4: 16bit le containing VbeVersion
|
// offset 4: 16bit le containing VbeVersion
|
||||||
info->version = in16le(vbe_info_buffer + 4);
|
info->version = in16le(vbe_info_buffer + 4);
|
||||||
|
|
||||||
// offset 6: 32bit le containg segment:offset of OEM String in virtual Mem.
|
// offset 6: 32bit le containing segment:offset of OEM String in virtual Mem.
|
||||||
info->oem_string_ptr =
|
info->oem_string_ptr =
|
||||||
biosmem + ((in16le(vbe_info_buffer + 8) << 4) +
|
biosmem + ((in16le(vbe_info_buffer + 8) << 4) +
|
||||||
in16le(vbe_info_buffer + 6));
|
in16le(vbe_info_buffer + 6));
|
||||||
|
@ -457,7 +457,7 @@ vbe_get_info(void)
|
||||||
// as input, it must contain a screen_info_input_t with the following content:
|
// as input, it must contain a screen_info_input_t with the following content:
|
||||||
// byte[0:3] = "DDC\0" (zero-terminated signature header)
|
// byte[0:3] = "DDC\0" (zero-terminated signature header)
|
||||||
// byte[4:5] = reserved space for the return struct... just in case we ever change
|
// byte[4:5] = reserved space for the return struct... just in case we ever change
|
||||||
// the struct and dont have reserved enough memory (and let's hope the struct
|
// the struct and don't have reserved enough memory (and let's hope the struct
|
||||||
// never gets larger than 64KB)
|
// never gets larger than 64KB)
|
||||||
// byte[6] = monitor port number for DDC requests ("only" one byte... so lets hope we never have more than 255 monitors...
|
// byte[6] = monitor port number for DDC requests ("only" one byte... so lets hope we never have more than 255 monitors...
|
||||||
// byte[7:8] = max. screen width (OF may want to limit this)
|
// byte[7:8] = max. screen width (OF may want to limit this)
|
||||||
|
|
Loading…
Reference in New Issue