int idx, level;
blkptr_t *bp_array = dn->dn.dn_blkptr;
int epbs = dn->dn.dn_indblkshift - SPA_BLKPTRSHIFT;
- blkptr_t *bp, *tmpbuf = 0;
+ blkptr_t *bp;
+ void *tmpbuf = 0;
grub_zfs_endian_t endian;
grub_err_t err = GRUB_ERR_NONE;
break;
}
grub_dprintf ("zfs", "endian = %d\n", endian);
- err = zio_read (bp, endian, (void **) &tmpbuf, 0, data);
+ err = zio_read (bp, endian, &tmpbuf, 0, data);
endian = (grub_zfs_to_cpu64 (bp->blk_prop, endian) >> 63) & 1;
if (err)
break;
fzap_lookup (dnode_end_t * zap_dnode, zap_phys_t * zap,
char *name, grub_uint64_t * value, struct grub_zfs_data *data)
{
- zap_leaf_phys_t *l;
+ void *l;
grub_uint64_t hash, idx, blkid;
int blksft = zfs_log2 (grub_zfs_to_cpu16 (zap_dnode->dn.dn_datablkszsec,
zap_dnode->endian) << DNODE_SHIFT);
/* Get the leaf block */
if ((1U << blksft) < sizeof (zap_leaf_phys_t))
return grub_error (GRUB_ERR_BAD_FS, "ZAP leaf is too small");
- err = dmu_read (zap_dnode, blkid, (void **) &l, &leafendian, data);
+ err = dmu_read (zap_dnode, blkid, &l, &leafendian, data);
if (err)
return err;
struct grub_zfs_data *data)
{
zap_leaf_phys_t *l;
+ void *l_in;
grub_uint64_t idx, blkid;
grub_uint16_t chunk;
int blksft = zfs_log2 (grub_zfs_to_cpu16 (zap_dnode->dn.dn_datablkszsec,
{
blkid = ((grub_uint64_t *) zap)[idx + (1 << (blksft - 3 - 1))];
- err = dmu_read (zap_dnode, blkid, (void **) &l, &endian, data);
+ err = dmu_read (zap_dnode, blkid, &l_in, &endian, data);
+ l = l_in;
if (err)
{
grub_errno = GRUB_ERR_NONE;
grub_uint64_t blkid, blksz; /* the block id this object dnode is in */
int epbs; /* shift of number of dnodes in a block */
int idx; /* index within a block */
- dnode_phys_t *dnbuf;
+ void *dnbuf;
grub_err_t err;
grub_zfs_endian_t endian;
grub_dprintf ("zfs", "endian = %d, blkid=%llx\n", mdn->endian,
(unsigned long long) blkid);
- err = dmu_read (mdn, blkid, (void **) &dnbuf, &endian, data);
+ err = dmu_read (mdn, blkid, &dnbuf, &endian, data);
if (err)
return err;
grub_dprintf ("zfs", "alive\n");
data->dnode_endian = endian;
}
- grub_memmove (&(buf->dn), &dnbuf[idx], DNODE_SIZE);
+ grub_memmove (&(buf->dn), (dnode_phys_t *) dnbuf + idx, DNODE_SIZE);
buf->endian = endian;
if (type && buf->dn.dn_type != type)
return grub_error(GRUB_ERR_BAD_FS, "incorrect dnode type");
static grub_err_t
make_mdn (dnode_end_t * mdn, struct grub_zfs_data *data)
{
- objset_phys_t *osp;
+ void *osp;
blkptr_t *bp;
grub_size_t ospsize;
grub_err_t err;
grub_dprintf ("zfs", "endian = %d\n", mdn->endian);
bp = &(((dsl_dataset_phys_t *) DN_BONUS (&mdn->dn))->ds_bp);
- err = zio_read (bp, mdn->endian, (void **) &osp, &ospsize, data);
+ err = zio_read (bp, mdn->endian, &osp, &ospsize, data);
if (err)
return err;
if (ospsize < OBJSET_PHYS_SIZE_V14)
}
mdn->endian = (grub_zfs_to_cpu64 (bp->blk_prop, mdn->endian)>>63) & 1;
- grub_memmove ((char *) &(mdn->dn), (char *) &osp->os_meta_dnode, DNODE_SIZE);
+ grub_memmove ((char *) &(mdn->dn),
+ (char *) &((objset_phys_t *) osp)->os_meta_dnode, DNODE_SIZE);
grub_free (osp);
return GRUB_ERR_NONE;
}
int label = 0;
uberblock_phys_t *ub_array, *ubbest = NULL;
vdev_boot_header_t *bh;
- objset_phys_t *osp = 0;
+ void *osp = 0;
grub_size_t ospsize;
grub_err_t err;
int vdevnum;
? LITTLE_ENDIAN : BIG_ENDIAN);
err = zio_read (&ubbest->ubp_uberblock.ub_rootbp,
ub_endian,
- (void **) &osp, &ospsize, data);
+ &osp, &ospsize, data);
if (err)
{
grub_dprintf ("zfs", "couldn't zio_read\n");
continue;
#endif
/* Got the MOS. Save it at the memory addr MOS. */
- grub_memmove (&(data->mos.dn), &osp->os_meta_dnode, DNODE_SIZE);
+ grub_memmove (&(data->mos.dn), &((objset_phys_t *) osp)->os_meta_dnode,
+ DNODE_SIZE);
data->mos.endian = (grub_zfs_to_cpu64 (ubbest->ubp_uberblock.ub_rootbp.blk_prop, ub_endian) >> 63) & 1;
grub_memmove (&(data->current_uberblock),
&ubbest->ubp_uberblock, sizeof (uberblock_t));
*/
if (data->dnode.dn.dn_bonustype == DMU_OT_SA)
{
- sa_hdr_phys_t *sahdrp;
+ void *sahdrp;
int hdrsize;
if (data->dnode.dn.dn_bonuslen != 0)
{
blkptr_t *bp = &data->dnode.dn.dn_spill;
- err = zio_read (bp, data->dnode.endian, (void **) &sahdrp, NULL, data);
+ err = zio_read (bp, data->dnode.endian, &sahdrp, NULL, data);
if (err)
return err;
}
return grub_error (GRUB_ERR_BAD_FS, "filesystem is corrupt");
}
- hdrsize = SA_HDR_SIZE (sahdrp);
+ hdrsize = SA_HDR_SIZE (((sa_hdr_phys_t *) sahdrp));
file->size = *(grub_uint64_t *) ((char *) sahdrp + hdrsize + SA_SIZE_OFFSET);
}
else
read = 0;
while (length)
{
+ void *t;
/*
* Find requested blkid and the offset within that block.
*/
grub_free (data->file_buf);
data->file_buf = 0;
- err = dmu_read (&(data->dnode), blkid, (void **) &(data->file_buf),
+ err = dmu_read (&(data->dnode), blkid, &t,
0, data);
+ data->file_buf = t;
if (err)
return -1;
grub_xnu_boot (void)
{
struct grub_xnu_boot_params *bootparams;
+ void *bp_in;
grub_addr_t bootparams_target;
grub_err_t err;
grub_efi_uintn_t memory_map_size = 0;
- grub_efi_memory_descriptor_t *memory_map;
+ void *memory_map;
grub_addr_t memory_map_target;
grub_efi_uintn_t map_key = 0;
grub_efi_uintn_t descriptor_size = 0;
/* Relocate the boot parameters to heap. */
err = grub_xnu_heap_malloc (sizeof (*bootparams),
- (void **) &bootparams, &bootparams_target);
+ &bp_in, &bootparams_target);
if (err)
return err;
+ bootparams = bp_in;
/* Set video. */
err = grub_xnu_set_video (bootparams);
memory map growth. */
memory_map_size += 20 * descriptor_size;
err = grub_xnu_heap_malloc (memory_map_size,
- (void **) &memory_map, &memory_map_target);
+ &memory_map, &memory_map_target);
if (err)
return err;
grub_xnu_arg1 = bootparams_target;
grub_autoefi_set_virtual_address_map (memory_map_size, descriptor_size,
- descriptor_version,memory_map);
+ descriptor_version, memory_map);
state.eip = grub_xnu_entry_point;
state.eax = grub_xnu_arg1;
grub_macho_t macho;
grub_uint32_t startcode, endcode;
int i;
- char *ptr, *loadaddr;
+ char *ptr;
+ void *loadaddr;
grub_addr_t loadaddr_target;
if (argc < 1)
if (!grub_xnu_relocator)
return grub_errno;
grub_xnu_heap_target_start = startcode;
- err = grub_xnu_heap_malloc (endcode - startcode, (void **) &loadaddr,
+ err = grub_xnu_heap_malloc (endcode - startcode, &loadaddr,
&loadaddr_target);
if (err)
}
/* Load kernel. */
- err = grub_macho_load32 (macho, loadaddr - startcode, GRUB_MACHO_NOBSS);
+ err = grub_macho_load32 (macho, (char *) loadaddr - startcode,
+ GRUB_MACHO_NOBSS);
if (err)
{
grub_macho_close (macho);
grub_macho_t macho;
grub_uint64_t startcode, endcode;
int i;
- char *ptr, *loadaddr;
+ char *ptr;
+ void *loadaddr;
grub_addr_t loadaddr_target;
if (argc < 1)
if (!grub_xnu_relocator)
return grub_errno;
grub_xnu_heap_target_start = startcode;
- err = grub_xnu_heap_malloc (endcode - startcode, (void **) &loadaddr,
+ err = grub_xnu_heap_malloc (endcode - startcode, &loadaddr,
&loadaddr_target);
if (err)
}
/* Load kernel. */
- err = grub_macho_load64 (macho, loadaddr - startcode, GRUB_MACHO_NOBSS);
+ err = grub_macho_load64 (macho, (char *) loadaddr - startcode,
+ GRUB_MACHO_NOBSS);
if (err)
{
grub_macho_close (macho);
grub_file_t infoplist;
struct grub_xnu_extheader *exthead;
int neededspace = sizeof (*exthead);
- grub_uint8_t *buf, *buf0;
+ grub_uint8_t *buf;
+ void *buf0;
grub_addr_t buf_target;
grub_size_t infoplistsize = 0, machosize = 0;
char *name, *nameend;
err = grub_xnu_align_heap (GRUB_XNU_PAGESIZE);
if (err)
return err;
- err = grub_xnu_heap_malloc (neededspace, (void **) &buf0, &buf_target);
+ err = grub_xnu_heap_malloc (neededspace, &buf0, &buf_target);
if (err)
return err;
buf = buf0;
/* Load the binary. */
if (macho)
{
- exthead->binaryaddr = buf_target + (buf - buf0);
+ exthead->binaryaddr = buf_target + (buf - (grub_uint8_t *) buf0);
exthead->binarysize = machosize;
if (grub_xnu_is_64bit)
err = grub_macho_readfile64 (macho, buf);
/* Load the plist. */
if (infoplist)
{
- exthead->infoplistaddr = buf_target + (buf - buf0);
+ exthead->infoplistaddr = buf_target + (buf - (grub_uint8_t *) buf0);
exthead->infoplistsize = infoplistsize + 1;
if (grub_file_read (infoplist, buf, infoplistsize)
!= (grub_ssize_t) (infoplistsize))
}
grub_errno = GRUB_ERR_NONE;
- exthead->nameaddr = (buf - buf0) + buf_target;
+ exthead->nameaddr = (buf - (grub_uint8_t *) buf0) + buf_target;
exthead->namesize = namelen + 1;
grub_memcpy (buf, name, namelen);
buf[namelen] = 0;