Revision 1f163b14 hw/zaurus.c
b/hw/zaurus.c | ||
---|---|---|
46 | 46 |
uint16_t irr; |
47 | 47 |
uint16_t imr; |
48 | 48 |
uint16_t isr; |
49 |
uint16_t gprr; |
|
50 | 49 |
}; |
51 | 50 |
|
52 | 51 |
#define SCOOP_MCR 0x00 |
... | ... | |
99 | 98 |
case SCOOP_GPCR: |
100 | 99 |
return s->gpio_dir; |
101 | 100 |
case SCOOP_GPWR: |
102 |
return s->gpio_level; |
|
103 | 101 |
case SCOOP_GPRR: |
104 |
return s->gprr;
|
|
102 |
return s->gpio_level;
|
|
105 | 103 |
default: |
106 | 104 |
zaurus_printf("Bad register offset " REG_FMT "\n", addr); |
107 | 105 |
} |
... | ... | |
144 | 142 |
scoop_gpio_handler_update(s); |
145 | 143 |
break; |
146 | 144 |
case SCOOP_GPWR: |
145 |
case SCOOP_GPRR: /* GPRR is probably R/O in real HW */ |
|
147 | 146 |
s->gpio_level = value & s->gpio_dir; |
148 | 147 |
scoop_gpio_handler_update(s); |
149 | 148 |
break; |
150 |
case SCOOP_GPRR: |
|
151 |
s->gprr = value; |
|
152 |
break; |
|
153 | 149 |
default: |
154 | 150 |
zaurus_printf("Bad register offset " REG_FMT "\n", addr); |
155 | 151 |
} |
... | ... | |
205 | 201 |
qemu_put_be16s(f, &s->irr); |
206 | 202 |
qemu_put_be16s(f, &s->imr); |
207 | 203 |
qemu_put_be16s(f, &s->isr); |
208 |
qemu_put_be16s(f, &s->gprr); |
|
209 | 204 |
} |
210 | 205 |
|
211 | 206 |
static int scoop_load(QEMUFile *f, void *opaque, int version_id) |
212 | 207 |
{ |
208 |
uint16_t dummy; |
|
213 | 209 |
struct scoop_info_s *s = (struct scoop_info_s *) opaque; |
214 | 210 |
qemu_get_be16s(f, &s->status); |
215 | 211 |
qemu_get_be16s(f, &s->power); |
... | ... | |
222 | 218 |
qemu_get_be16s(f, &s->irr); |
223 | 219 |
qemu_get_be16s(f, &s->imr); |
224 | 220 |
qemu_get_be16s(f, &s->isr); |
225 |
qemu_get_be16s(f, &s->gprr); |
|
221 |
if (version_id < 1) |
|
222 |
qemu_get_be16s(f, &dummy); |
|
226 | 223 |
|
227 | 224 |
return 0; |
228 | 225 |
} |
... | ... | |
243 | 240 |
iomemtype = cpu_register_io_memory(0, scoop_readfn, |
244 | 241 |
scoop_writefn, s); |
245 | 242 |
cpu_register_physical_memory(s->target_base, 0x1000, iomemtype); |
246 |
register_savevm("scoop", instance, 0, scoop_save, scoop_load, s);
|
|
243 |
register_savevm("scoop", instance, 1, scoop_save, scoop_load, s);
|
|
247 | 244 |
|
248 | 245 |
return s; |
249 | 246 |
} |
Also available in: Unified diff