Revision bbaf29c7 hw/etraxfs_ser.c
b/hw/etraxfs_ser.c | ||
---|---|---|
26 | 26 |
#include <ctype.h> |
27 | 27 |
#include "hw.h" |
28 | 28 |
|
29 |
#define RW_TR_DMA_EN 0xb0026004 |
|
30 |
#define RW_DOUT 0xb002601c |
|
31 |
#define RW_STAT_DIN 0xb0026020 |
|
32 |
#define R_STAT_DIN 0xb0026024 |
|
29 |
#define D(x) |
|
30 |
|
|
31 |
#define RW_TR_DMA_EN 0x04 |
|
32 |
#define RW_DOUT 0x1c |
|
33 |
#define RW_STAT_DIN 0x20 |
|
34 |
#define R_STAT_DIN 0x24 |
|
33 | 35 |
|
34 | 36 |
static uint32_t ser_readb (void *opaque, target_phys_addr_t addr) |
35 | 37 |
{ |
36 |
CPUState *env = opaque;
|
|
38 |
CPUState *env; |
|
37 | 39 |
uint32_t r = 0; |
38 |
printf ("%s %x pc=%x\n", __func__, addr, env->pc); |
|
40 |
|
|
41 |
env = opaque; |
|
42 |
D(printf ("%s %x pc=%x\n", __func__, addr, env->pc)); |
|
39 | 43 |
return r; |
40 | 44 |
} |
41 | 45 |
static uint32_t ser_readw (void *opaque, target_phys_addr_t addr) |
42 | 46 |
{ |
43 |
CPUState *env = opaque;
|
|
47 |
CPUState *env; |
|
44 | 48 |
uint32_t r = 0; |
45 |
printf ("%s %x pc=%x\n", __func__, addr, env->pc); |
|
49 |
env = opaque; |
|
50 |
D(printf ("%s %x pc=%x\n", __func__, addr, env->pc)); |
|
46 | 51 |
return r; |
47 | 52 |
} |
48 | 53 |
|
... | ... | |
51 | 56 |
CPUState *env = opaque; |
52 | 57 |
uint32_t r = 0; |
53 | 58 |
|
54 |
switch (addr) |
|
59 |
switch (addr & 0xfff)
|
|
55 | 60 |
{ |
56 | 61 |
case RW_TR_DMA_EN: |
57 | 62 |
break; |
... | ... | |
70 | 75 |
static void |
71 | 76 |
ser_writeb (void *opaque, target_phys_addr_t addr, uint32_t value) |
72 | 77 |
{ |
73 |
CPUState *env = opaque; |
|
74 |
printf ("%s %x %x pc=%x\n", __func__, addr, value, env->pc); |
|
78 |
CPUState *env; |
|
79 |
env = opaque; |
|
80 |
D(printf ("%s %x %x pc=%x\n", __func__, addr, value, env->pc)); |
|
75 | 81 |
} |
76 | 82 |
static void |
77 | 83 |
ser_writew (void *opaque, target_phys_addr_t addr, uint32_t value) |
78 | 84 |
{ |
79 |
CPUState *env = opaque; |
|
80 |
printf ("%s %x %x pc=%x\n", __func__, addr, value, env->pc); |
|
85 |
CPUState *env; |
|
86 |
env = opaque; |
|
87 |
D(printf ("%s %x %x pc=%x\n", __func__, addr, value, env->pc)); |
|
81 | 88 |
} |
82 | 89 |
static void |
83 | 90 |
ser_writel (void *opaque, target_phys_addr_t addr, uint32_t value) |
84 | 91 |
{ |
85 | 92 |
CPUState *env = opaque; |
86 | 93 |
|
87 |
switch (addr) |
|
94 |
switch (addr & 0xfff)
|
|
88 | 95 |
{ |
89 | 96 |
case RW_TR_DMA_EN: |
90 | 97 |
break; |
... | ... | |
119 | 126 |
|
120 | 127 |
ser_regs = cpu_register_io_memory(0, ser_read, ser_write, env); |
121 | 128 |
cpu_register_physical_memory (0xb0026000, 0x3c, ser_regs); |
129 |
cpu_register_physical_memory (0xb0028000, 0x3c, ser_regs); |
|
130 |
cpu_register_physical_memory (0xb002a000, 0x3c, ser_regs); |
|
131 |
cpu_register_physical_memory (0xb002c000, 0x3c, ser_regs); |
|
122 | 132 |
} |
Also available in: Unified diff