In a very few cases we need to adjust the driver model root device, such as
when setting it up at initialisation. Add a macro to make this easier.
Signed-off-by: Simon Glass <sjg@chromium.org>
                dm_warn("Virtual root driver already exists!\n");
                return -EINVAL;
        }
-       INIT_LIST_HEAD(&gd->uclass_root);
+       INIT_LIST_HEAD(&DM_UCLASS_ROOT_NON_CONST);
 
-       ret = device_bind_by_name(NULL, &root_info, &gd->dm_root);
+       ret = device_bind_by_name(NULL, &root_info, &DM_ROOT_NON_CONST);
        if (ret)
                return ret;
 
 {
        int ret;
 
-       ret = lists_bind_drivers(gd->dm_root);
+       ret = lists_bind_drivers(DM_ROOT_NON_CONST);
        if (ret == -ENOENT) {
                dm_warn("Some drivers were not found\n");
                ret = 0;
 
        uc->uc_drv = uc_drv;
        INIT_LIST_HEAD(&uc->sibling_node);
        INIT_LIST_HEAD(&uc->dev_head);
-       list_add(&uc->sibling_node, &gd->uclass_root);
+       list_add(&uc->sibling_node, &DM_UCLASS_ROOT_NON_CONST);
 
        if (uc_drv->init) {
                ret = uc_drv->init(uc);
 
  */
 int device_unbind(struct udevice *dev);
 
+/* Cast away any volatile pointer */
+#define DM_ROOT_NON_CONST              (((gd_t *)gd)->dm_root)
+#define DM_UCLASS_ROOT_NON_CONST       (((gd_t *)gd)->uclass_root)
+
 #endif