5 /* --- target physical address --- */
7 static int parse_taddr(DeviceState
*dev
, Property
*prop
, const char *str
)
9 target_phys_addr_t
*ptr
= qdev_get_prop_ptr(dev
, prop
);
11 *ptr
= strtoull(str
, NULL
, 16);
15 static int print_taddr(DeviceState
*dev
, Property
*prop
, char *dest
, size_t len
)
17 target_phys_addr_t
*ptr
= qdev_get_prop_ptr(dev
, prop
);
18 return snprintf(dest
, len
, "0x" TARGET_FMT_plx
, *ptr
);
21 static void get_taddr(DeviceState
*dev
, Visitor
*v
, void *opaque
,
22 const char *name
, Error
**errp
)
24 Property
*prop
= opaque
;
25 target_phys_addr_t
*ptr
= qdev_get_prop_ptr(dev
, prop
);
29 visit_type_int(v
, &value
, name
, errp
);
32 static void set_taddr(DeviceState
*dev
, Visitor
*v
, void *opaque
,
33 const char *name
, Error
**errp
)
35 Property
*prop
= opaque
;
36 target_phys_addr_t
*ptr
= qdev_get_prop_ptr(dev
, prop
);
37 Error
*local_err
= NULL
;
40 if (dev
->state
!= DEV_STATE_CREATED
) {
41 error_set(errp
, QERR_PERMISSION_DENIED
);
45 visit_type_int(v
, &value
, name
, &local_err
);
47 error_propagate(errp
, local_err
);
50 if ((uint64_t)value
<= (uint64_t) ~(target_phys_addr_t
)0) {
53 error_set(errp
, QERR_PROPERTY_VALUE_OUT_OF_RANGE
,
54 dev
->id
?:"", name
, value
, (uint64_t) 0,
55 (uint64_t) ~(target_phys_addr_t
)0);
60 PropertyInfo qdev_prop_taddr
= {
62 .type
= PROP_TYPE_TADDR
,
63 .size
= sizeof(target_phys_addr_t
),
70 void qdev_prop_set_taddr(DeviceState
*dev
, const char *name
, target_phys_addr_t value
)
72 qdev_prop_set(dev
, name
, &value
, PROP_TYPE_TADDR
);