Revision 819385c5 hw/ppc.c
b/hw/ppc.c | ||
---|---|---|
283 | 283 |
/* NVRAM helpers */ |
284 | 284 |
void NVRAM_set_byte (m48t59_t *nvram, uint32_t addr, uint8_t value) |
285 | 285 |
{ |
286 |
m48t59_set_addr(nvram, addr); |
|
287 |
m48t59_write(nvram, value); |
|
286 |
m48t59_write(nvram, addr, value); |
|
288 | 287 |
} |
289 | 288 |
|
290 | 289 |
uint8_t NVRAM_get_byte (m48t59_t *nvram, uint32_t addr) |
291 | 290 |
{ |
292 |
m48t59_set_addr(nvram, addr); |
|
293 |
return m48t59_read(nvram); |
|
291 |
return m48t59_read(nvram, addr); |
|
294 | 292 |
} |
295 | 293 |
|
296 | 294 |
void NVRAM_set_word (m48t59_t *nvram, uint32_t addr, uint16_t value) |
297 | 295 |
{ |
298 |
m48t59_set_addr(nvram, addr); |
|
299 |
m48t59_write(nvram, value >> 8); |
|
300 |
m48t59_set_addr(nvram, addr + 1); |
|
301 |
m48t59_write(nvram, value & 0xFF); |
|
296 |
m48t59_write(nvram, addr, value >> 8); |
|
297 |
m48t59_write(nvram, addr + 1, value & 0xFF); |
|
302 | 298 |
} |
303 | 299 |
|
304 | 300 |
uint16_t NVRAM_get_word (m48t59_t *nvram, uint32_t addr) |
305 | 301 |
{ |
306 | 302 |
uint16_t tmp; |
307 | 303 |
|
308 |
m48t59_set_addr(nvram, addr); |
|
309 |
tmp = m48t59_read(nvram) << 8; |
|
310 |
m48t59_set_addr(nvram, addr + 1); |
|
311 |
tmp |= m48t59_read(nvram); |
|
312 |
|
|
304 |
tmp = m48t59_read(nvram, addr) << 8; |
|
305 |
tmp |= m48t59_read(nvram, addr + 1); |
|
313 | 306 |
return tmp; |
314 | 307 |
} |
315 | 308 |
|
316 | 309 |
void NVRAM_set_lword (m48t59_t *nvram, uint32_t addr, uint32_t value) |
317 | 310 |
{ |
318 |
m48t59_set_addr(nvram, addr); |
|
319 |
m48t59_write(nvram, value >> 24); |
|
320 |
m48t59_set_addr(nvram, addr + 1); |
|
321 |
m48t59_write(nvram, (value >> 16) & 0xFF); |
|
322 |
m48t59_set_addr(nvram, addr + 2); |
|
323 |
m48t59_write(nvram, (value >> 8) & 0xFF); |
|
324 |
m48t59_set_addr(nvram, addr + 3); |
|
325 |
m48t59_write(nvram, value & 0xFF); |
|
311 |
m48t59_write(nvram, addr, value >> 24); |
|
312 |
m48t59_write(nvram, addr + 1, (value >> 16) & 0xFF); |
|
313 |
m48t59_write(nvram, addr + 2, (value >> 8) & 0xFF); |
|
314 |
m48t59_write(nvram, addr + 3, value & 0xFF); |
|
326 | 315 |
} |
327 | 316 |
|
328 | 317 |
uint32_t NVRAM_get_lword (m48t59_t *nvram, uint32_t addr) |
329 | 318 |
{ |
330 | 319 |
uint32_t tmp; |
331 | 320 |
|
332 |
m48t59_set_addr(nvram, addr); |
|
333 |
tmp = m48t59_read(nvram) << 24; |
|
334 |
m48t59_set_addr(nvram, addr + 1); |
|
335 |
tmp |= m48t59_read(nvram) << 16; |
|
336 |
m48t59_set_addr(nvram, addr + 2); |
|
337 |
tmp |= m48t59_read(nvram) << 8; |
|
338 |
m48t59_set_addr(nvram, addr + 3); |
|
339 |
tmp |= m48t59_read(nvram); |
|
340 |
|
|
321 |
tmp = m48t59_read(nvram, addr) << 24; |
|
322 |
tmp |= m48t59_read(nvram, addr + 1) << 16; |
|
323 |
tmp |= m48t59_read(nvram, addr + 2) << 8; |
|
324 |
tmp |= m48t59_read(nvram, addr + 3); |
|
341 | 325 |
return tmp; |
342 | 326 |
} |
343 | 327 |
|
... | ... | |
347 | 331 |
int i; |
348 | 332 |
|
349 | 333 |
for (i = 0; i < max && str[i] != '\0'; i++) { |
350 |
m48t59_set_addr(nvram, addr + i); |
|
351 |
m48t59_write(nvram, str[i]); |
|
334 |
m48t59_write(nvram, addr + i, str[i]); |
|
352 | 335 |
} |
353 |
m48t59_set_addr(nvram, addr + max - 1); |
|
354 |
m48t59_write(nvram, '\0'); |
|
336 |
m48t59_write(nvram, addr + max - 1, '\0'); |
|
355 | 337 |
} |
356 | 338 |
|
357 | 339 |
int NVRAM_get_string (m48t59_t *nvram, uint8_t *dst, uint16_t addr, int max) |
Also available in: Unified diff