Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 1 | #include "qdev.h" |
| 2 | #include "qdev-addr.h" |
| 3 | #include "targphys.h" |
| 4 | |
| 5 | /* --- target physical address --- */ |
| 6 | |
| 7 | static int parse_taddr(DeviceState *dev, Property *prop, const char *str) |
| 8 | { |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 9 | target_phys_addr_t *ptr = qdev_get_prop_ptr(dev, prop); |
Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 10 | |
| 11 | *ptr = strtoull(str, NULL, 16); |
| 12 | return 0; |
| 13 | } |
| 14 | |
| 15 | static int print_taddr(DeviceState *dev, Property *prop, char *dest, size_t len) |
| 16 | { |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 17 | target_phys_addr_t *ptr = qdev_get_prop_ptr(dev, prop); |
Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 18 | return snprintf(dest, len, "0x" TARGET_FMT_plx, *ptr); |
| 19 | } |
| 20 | |
| 21 | PropertyInfo qdev_prop_taddr = { |
| 22 | .name = "taddr", |
| 23 | .type = PROP_TYPE_TADDR, |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 24 | .size = sizeof(target_phys_addr_t), |
Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 25 | .parse = parse_taddr, |
| 26 | .print = print_taddr, |
| 27 | }; |
| 28 | |
Anthony Liguori | c227f09 | 2009-10-01 16:12:16 -0500 | [diff] [blame] | 29 | void qdev_prop_set_taddr(DeviceState *dev, const char *name, target_phys_addr_t value) |
Gerd Hoffmann | ee6847d | 2009-07-15 13:43:31 +0200 | [diff] [blame] | 30 | { |
| 31 | qdev_prop_set(dev, name, &value, PROP_TYPE_TADDR); |
| 32 | } |