- remove trailing white space, trailing empty lines, C++ comments, etc.
- split cmd_boot.c (separate cmd_bdinfo.c and cmd_load.c)
* Patches by Kenneth Johansson, 25 Jun 2003:
- major rework of command structure
(work done mostly by Michal Cendrowski and Joakim Kristiansen)
125 lines
3.1 KiB
C
125 lines
3.1 KiB
C
/*
|
|
* Copyright 1999 Egbert Eich
|
|
*
|
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
* documentation for any purpose is hereby granted without fee, provided that
|
|
* the above copyright notice appear in all copies and that both that
|
|
* copyright notice and this permission notice appear in supporting
|
|
* documentation, and that the name of the authors not be used in
|
|
* advertising or publicity pertaining to distribution of the software without
|
|
* specific, written prior permission. The authors makes no representations
|
|
* about the suitability of this software for any purpose. It is provided
|
|
* "as is" without express or implied warranty.
|
|
*
|
|
* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
* EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
#include "debug.h"
|
|
#include "v86bios.h"
|
|
#include "x86emu.h"
|
|
|
|
#ifdef __alpha__
|
|
|
|
void* vram_map = 0;
|
|
int sparse_shift = 5;
|
|
|
|
#define mem_barrier() __asm__ __volatile__("mb" : : : "memory")
|
|
|
|
#define vuip volatile unsigned int *
|
|
|
|
CARD8
|
|
mem_rb(CARD32 addr)
|
|
{
|
|
unsigned long result, shift;
|
|
#if 1
|
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
|
addr -= 0xA0000;
|
|
shift = (addr & 0x3) * 8;
|
|
result = *(vuip) ((unsigned long)vram_map + (addr << sparse_shift));
|
|
result >>= shift;
|
|
return 0xffUL & result;
|
|
} else
|
|
#endif
|
|
return rdb(addr);
|
|
}
|
|
|
|
CARD16
|
|
mem_rw(CARD32 addr)
|
|
{
|
|
unsigned long result, shift;
|
|
#if 1
|
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
|
addr -= 0xA0000;
|
|
shift = (addr & 0x2) * 8;
|
|
result = *(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
|
+(1<<(sparse_shift-2)));
|
|
result >>= shift;
|
|
return 0xffffUL & result;
|
|
} else
|
|
#endif
|
|
return rdw(addr);
|
|
}
|
|
|
|
CARD32
|
|
mem_rl(CARD32 addr)
|
|
{
|
|
unsigned long result;
|
|
#if 1
|
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
|
addr -= 0xA0000;
|
|
result = *(vuip)((unsigned long)vram_map+(addr<<sparse_shift)+(3<<(sparse_shift-2)));
|
|
return result;
|
|
} else
|
|
#endif
|
|
return rdl(addr);
|
|
}
|
|
|
|
void
|
|
mem_wb(CARD32 addr, CARD8 val)
|
|
{
|
|
unsigned int b = val & 0xffU;
|
|
#if 1
|
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
|
addr -= 0xA0000;
|
|
*(vuip) ((unsigned long)vram_map + (addr << sparse_shift)) = b * 0x01010101;
|
|
mem_barrier();
|
|
} else
|
|
#endif
|
|
wrb(addr,val);
|
|
}
|
|
|
|
void
|
|
mem_ww(CARD32 addr, CARD16 val)
|
|
{
|
|
unsigned int w = val & 0xffffU;
|
|
#if 1
|
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
|
addr -= 0xA0000;
|
|
*(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
|
+(1<<(sparse_shift-2))) = w * 0x00010001;
|
|
mem_barrier();
|
|
} else
|
|
#endif
|
|
wrw(addr,val);
|
|
}
|
|
|
|
void
|
|
mem_wl(CARD32 addr, CARD32 val)
|
|
{
|
|
#if 1
|
|
if (addr >= 0xA0000 && addr <= 0xBFFFF) {
|
|
addr -= 0xA0000;
|
|
*(vuip)((unsigned long)vram_map+(addr<<sparse_shift)
|
|
+(3<<(sparse_shift-2))) = val;
|
|
mem_barrier();
|
|
} else
|
|
#endif
|
|
wrl(addr,val);
|
|
}
|
|
#endif
|