示例#1
0
文件: setup.c 项目: shlevy/grub
static void
write_rootdev (grub_device_t root_dev,
               char *boot_img, grub_uint64_t first_sector)
{
#ifdef GRUB_SETUP_BIOS
    {
        grub_uint8_t *boot_drive;
        void *kernel_sector;
        boot_drive = (grub_uint8_t *) (boot_img + GRUB_BOOT_MACHINE_BOOT_DRIVE);
        kernel_sector = (boot_img + GRUB_BOOT_MACHINE_KERNEL_SECTOR);

        /* FIXME: can this be skipped?  */
        *boot_drive = 0xFF;

        grub_set_unaligned64 (kernel_sector, grub_cpu_to_le64 (first_sector));
    }
#endif
#ifdef GRUB_SETUP_SPARC64
    {
        void *kernel_byte;
        kernel_byte = (boot_img + GRUB_BOOT_AOUT_HEADER_SIZE
        + GRUB_BOOT_MACHINE_KERNEL_BYTE);
        grub_set_unaligned64 (kernel_byte,
        grub_cpu_to_be64 (first_sector << GRUB_DISK_SECTOR_BITS));
    }
#endif
}
示例#2
0
static int
key_cmp (const struct grub_btrfs_key *a, const struct grub_btrfs_key *b)
{
  if (grub_cpu_to_le64 (a->object_id) < grub_cpu_to_le64 (b->object_id))
    return -1;
  if (grub_cpu_to_le64 (a->object_id) > grub_cpu_to_le64 (b->object_id))
    return +1;

  if (a->type < b->type)
    return -1;
  if (a->type > b->type)
    return +1;

  if (grub_cpu_to_le64 (a->offset) < grub_cpu_to_le64 (b->offset))
    return -1;
  if (grub_cpu_to_le64 (a->offset) > grub_cpu_to_le64 (b->offset))
    return +1;
  return 0;
}