mirror of https://github.com/xqemu/xqemu.git
parallel: convert to memory API
Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
c601785091
commit
63858cd992
|
@ -274,7 +274,8 @@ static void mips_jazz_init(MemoryRegion *address_space,
|
||||||
|
|
||||||
/* Parallel port */
|
/* Parallel port */
|
||||||
if (parallel_hds[0])
|
if (parallel_hds[0])
|
||||||
parallel_mm_init(0x80008000, 0, rc4030[0], parallel_hds[0]);
|
parallel_mm_init(address_space, 0x80008000, 0, rc4030[0],
|
||||||
|
parallel_hds[0]);
|
||||||
|
|
||||||
/* Sound card */
|
/* Sound card */
|
||||||
/* FIXME: missing Jazz sound at 0x8000c000, rc4030[2] */
|
/* FIXME: missing Jazz sound at 0x8000c000, rc4030[2] */
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
#define PARA_CTR_SIGNAL (PARA_CTR_SELECT|PARA_CTR_INIT|PARA_CTR_AUTOLF|PARA_CTR_STROBE)
|
#define PARA_CTR_SIGNAL (PARA_CTR_SELECT|PARA_CTR_INIT|PARA_CTR_AUTOLF|PARA_CTR_STROBE)
|
||||||
|
|
||||||
typedef struct ParallelState {
|
typedef struct ParallelState {
|
||||||
|
MemoryRegion iomem;
|
||||||
uint8_t dataw;
|
uint8_t dataw;
|
||||||
uint8_t datar;
|
uint8_t datar;
|
||||||
uint8_t status;
|
uint8_t status;
|
||||||
|
@ -555,24 +556,20 @@ static void parallel_mm_writel (void *opaque,
|
||||||
parallel_ioport_write_sw(s, addr >> s->it_shift, value);
|
parallel_ioport_write_sw(s, addr >> s->it_shift, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CPUReadMemoryFunc * const parallel_mm_read_sw[] = {
|
static const MemoryRegionOps parallel_mm_ops = {
|
||||||
¶llel_mm_readb,
|
.old_mmio = {
|
||||||
¶llel_mm_readw,
|
.read = { parallel_mm_readb, parallel_mm_readw, parallel_mm_readl },
|
||||||
¶llel_mm_readl,
|
.write = { parallel_mm_writeb, parallel_mm_writew, parallel_mm_writel },
|
||||||
};
|
},
|
||||||
|
.endianness = DEVICE_NATIVE_ENDIAN,
|
||||||
static CPUWriteMemoryFunc * const parallel_mm_write_sw[] = {
|
|
||||||
¶llel_mm_writeb,
|
|
||||||
¶llel_mm_writew,
|
|
||||||
¶llel_mm_writel,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* If fd is zero, it means that the parallel device uses the console */
|
/* If fd is zero, it means that the parallel device uses the console */
|
||||||
bool parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq,
|
bool parallel_mm_init(MemoryRegion *address_space,
|
||||||
|
target_phys_addr_t base, int it_shift, qemu_irq irq,
|
||||||
CharDriverState *chr)
|
CharDriverState *chr)
|
||||||
{
|
{
|
||||||
ParallelState *s;
|
ParallelState *s;
|
||||||
int io_sw;
|
|
||||||
|
|
||||||
s = g_malloc0(sizeof(ParallelState));
|
s = g_malloc0(sizeof(ParallelState));
|
||||||
s->irq = irq;
|
s->irq = irq;
|
||||||
|
@ -580,9 +577,9 @@ bool parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq,
|
||||||
s->it_shift = it_shift;
|
s->it_shift = it_shift;
|
||||||
qemu_register_reset(parallel_reset, s);
|
qemu_register_reset(parallel_reset, s);
|
||||||
|
|
||||||
io_sw = cpu_register_io_memory(parallel_mm_read_sw, parallel_mm_write_sw,
|
memory_region_init_io(&s->iomem, ¶llel_mm_ops, s,
|
||||||
s, DEVICE_NATIVE_ENDIAN);
|
"parallel", 8 << it_shift);
|
||||||
cpu_register_physical_memory(base, 8 << it_shift, io_sw);
|
memory_region_add_subregion(address_space, base, &s->iomem);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
hw/pc.h
3
hw/pc.h
|
@ -55,7 +55,8 @@ static inline bool parallel_init(int index, CharDriverState *chr)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool parallel_mm_init(target_phys_addr_t base, int it_shift, qemu_irq irq,
|
bool parallel_mm_init(MemoryRegion *address_space,
|
||||||
|
target_phys_addr_t base, int it_shift, qemu_irq irq,
|
||||||
CharDriverState *chr);
|
CharDriverState *chr);
|
||||||
|
|
||||||
/* i8259.c */
|
/* i8259.c */
|
||||||
|
|
Loading…
Reference in New Issue