root / hw / mac_dbdma.c @ 2c277908
History | View | Annotate | Download (3.1 kB)
1 |
/*
|
---|---|
2 |
* PowerMac descriptor-based DMA emulation
|
3 |
*
|
4 |
* Copyright (c) 2005-2007 Fabrice Bellard
|
5 |
* Copyright (c) 2007 Jocelyn Mayer
|
6 |
*
|
7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
8 |
* of this software and associated documentation files (the "Software"), to deal
|
9 |
* in the Software without restriction, including without limitation the rights
|
10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11 |
* copies of the Software, and to permit persons to whom the Software is
|
12 |
* furnished to do so, subject to the following conditions:
|
13 |
*
|
14 |
* The above copyright notice and this permission notice shall be included in
|
15 |
* all copies or substantial portions of the Software.
|
16 |
*
|
17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
20 |
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21 |
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22 |
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23 |
* THE SOFTWARE.
|
24 |
*/
|
25 |
#include "hw.h" |
26 |
#include "ppc_mac.h" |
27 |
|
28 |
/* debug DBDMA */
|
29 |
//#define DEBUG_DBDMA
|
30 |
|
31 |
#ifdef DEBUG_DBDMA
|
32 |
#define DBDMA_DPRINTF(fmt, args...) \
|
33 |
do { printf("DBDMA: " fmt , ##args); } while (0) |
34 |
#else
|
35 |
#define DBDMA_DPRINTF(fmt, args...)
|
36 |
#endif
|
37 |
|
38 |
/* DBDMA: currently no op - should suffice right now */
|
39 |
|
40 |
static void dbdma_writeb (void *opaque, |
41 |
target_phys_addr_t addr, uint32_t value) |
42 |
{ |
43 |
DBDMA_DPRINTF("writeb 0x" TARGET_FMT_plx " <= 0x%08x\n", addr, value); |
44 |
} |
45 |
|
46 |
static void dbdma_writew (void *opaque, |
47 |
target_phys_addr_t addr, uint32_t value) |
48 |
{ |
49 |
DBDMA_DPRINTF("writew 0x" TARGET_FMT_plx " <= 0x%08x\n", addr, value); |
50 |
} |
51 |
|
52 |
static void dbdma_writel (void *opaque, |
53 |
target_phys_addr_t addr, uint32_t value) |
54 |
{ |
55 |
DBDMA_DPRINTF("writel 0x" TARGET_FMT_plx " <= 0x%08x\n", addr, value); |
56 |
} |
57 |
|
58 |
static uint32_t dbdma_readb (void *opaque, target_phys_addr_t addr) |
59 |
{ |
60 |
DBDMA_DPRINTF("readb 0x" TARGET_FMT_plx " => 0\n", addr); |
61 |
|
62 |
return 0; |
63 |
} |
64 |
|
65 |
static uint32_t dbdma_readw (void *opaque, target_phys_addr_t addr) |
66 |
{ |
67 |
DBDMA_DPRINTF("readw 0x" TARGET_FMT_plx " => 0\n", addr); |
68 |
|
69 |
return 0; |
70 |
} |
71 |
|
72 |
static uint32_t dbdma_readl (void *opaque, target_phys_addr_t addr) |
73 |
{ |
74 |
DBDMA_DPRINTF("readl 0x" TARGET_FMT_plx " => 0\n", addr); |
75 |
|
76 |
return 0; |
77 |
} |
78 |
|
79 |
static CPUWriteMemoryFunc *dbdma_write[] = {
|
80 |
&dbdma_writeb, |
81 |
&dbdma_writew, |
82 |
&dbdma_writel, |
83 |
}; |
84 |
|
85 |
static CPUReadMemoryFunc *dbdma_read[] = {
|
86 |
&dbdma_readb, |
87 |
&dbdma_readw, |
88 |
&dbdma_readl, |
89 |
}; |
90 |
|
91 |
static void dbdma_save(QEMUFile *f, void *opaque) |
92 |
{ |
93 |
} |
94 |
|
95 |
static int dbdma_load(QEMUFile *f, void *opaque, int version_id) |
96 |
{ |
97 |
if (version_id != 1) |
98 |
return -EINVAL;
|
99 |
|
100 |
return 0; |
101 |
} |
102 |
|
103 |
static void dbdma_reset(void *opaque) |
104 |
{ |
105 |
} |
106 |
|
107 |
void dbdma_init (int *dbdma_mem_index) |
108 |
{ |
109 |
*dbdma_mem_index = cpu_register_io_memory(0, dbdma_read, dbdma_write, NULL); |
110 |
register_savevm("dbdma", -1, 1, dbdma_save, dbdma_load, NULL); |
111 |
qemu_register_reset(dbdma_reset, NULL);
|
112 |
dbdma_reset(NULL);
|
113 |
} |