-/*
+/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2012 Free Software Foundation, Inc.
*
return tmr;
}
-static void
+static void
increment_timer (grub_efi_event_t event __attribute__ ((unused)),
void *context __attribute__ ((unused)))
{
#pragma GCC diagnostic ignored "-Wcast-align"
/*
- * Unified function for both REL and RELA
+ * Unified function for both REL and RELA
*/
grub_err_t
grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
grub_uint32_t val;
offset >>= 12;
-
+
val = ((offset & 3) << 29) | (((offset >> 2) & 0x7ffff) << 5);
-
+
*place &= insmask;
*place |= grub_cpu_to_le32 (val) & ~insmask;
}
cmd->flags = 0;
cmd->prio = prio;
-
+
for (p = &grub_command_list, q = *p; q; p = &(q->next), q = q->next)
{
int r;
{
table_header = (grub_linuxbios_table_header_t) (grub_addr_t)
*(grub_uint64_t *) (table_item + 1);
- goto signature_found;
+ goto signature_found;
}
if (hook (table_item, hook_data))
return 1;
if (grub_net_open && grub_errno == GRUB_ERR_UNKNOWN_DEVICE)
{
grub_errno = GRUB_ERR_NONE;
- dev->net = grub_net_open (name);
+ dev->net = grub_net_open (name);
}
if (dev->net)
tmp_buf = grub_malloc (num << disk->log_sector_size);
if (!tmp_buf)
return grub_errno;
-
+
if ((disk->dev->disk_read) (disk, transform_sector (disk, aligned_sector),
num, tmp_buf))
{
buf);
if (err)
return err;
-
+
for (i = 0; i < agglomerate; i ++)
grub_disk_cache_store (disk->dev->id, disk->id,
sector + (i << GRUB_DISK_CACHE_BITS),
sector += agglomerate << GRUB_DISK_CACHE_BITS;
size -= agglomerate << (GRUB_DISK_CACHE_BITS + GRUB_DISK_SECTOR_BITS);
- buf = (char *) buf
+ buf = (char *) buf
+ (agglomerate << (GRUB_DISK_CACHE_BITS + GRUB_DISK_SECTOR_BITS));
}
s = grub_dl_find_section (e, ".modname");
if (!s)
return grub_error (GRUB_ERR_BAD_MODULE, "no module name found");
-
+
mod->name = grub_strdup ((char *) e + s->sh_offset);
if (! mod->name)
return grub_errno;
r = grub_efi_system_table->runtime_services;
- status = efi_call_5 (r->set_variable, var16, guid,
+ status = efi_call_5 (r->set_variable, var16, guid,
(GRUB_EFI_VARIABLE_NON_VOLATILE
| GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS
| GRUB_EFI_VARIABLE_RUNTIME_ACCESS),
grub_efidisk_init ();
}
-void (*grub_efi_net_config) (grub_efi_handle_t hnd,
+void (*grub_efi_net_config) (grub_efi_handle_t hnd,
char **device,
char **path);
addr = grub_efi_allocate_pages_real (start, pages,
GRUB_EFI_ALLOCATE_ADDRESS,
- GRUB_EFI_LOADER_CODE);
+ GRUB_EFI_LOADER_CODE);
if (! addr)
grub_fatal ("cannot allocate conventional memory %p with %u pages",
(void *) ((grub_addr_t) start),
map[drive].device = grub_canonicalize_file_name (p);
if (! map[drive].device)
map[drive].device = xstrdup (p);
-
+
if (!map[drive].drive)
{
char c;
return grub_errno;
}
- data->f = f;
+ data->f = f;
file->data = data;
main (int argc, char *argv[])
{
struct arguments arguments =
- {
+ {
.dev_map = DEFAULT_DEVICE_MAP,
.hold = 0,
.mem_disk = 0,
#if !defined (GRUB_MKFONT) && !defined (GRUB_BUILD)
char *
xasprintf (const char *fmt, ...)
-{
+{
va_list ap;
char *result;
-
+
va_start (ap, fmt);
result = grub_xvasprintf (fmt, ap);
va_end (ap);
if (!result)
grub_util_error ("%s", _("out of memory"));
-
+
return result;
}
#endif
grub_util_error (_("cannot open `%s': %s"), path, strerror (errno));
fseeko (f, 0, SEEK_END);
-
+
sz = ftello (f);
if (sz < 0)
grub_util_error (_("cannot open `%s': %s"), path, strerror (errno));
if (! var)
{
grub_err_t err;
-
+
err = grub_env_set (name, "");
if (err)
return err;
var = grub_env_find (name);
- }
+ }
var->global = 1;
return GRUB_ERR_NONE;
N_("attempt to seek outside of the file"));
return -1;
}
-
+
old = file->offset;
file->offset = offset;
-
+
return old;
}
if (modend && begin < modend)
begin = modend;
-
+
if (end <= begin)
return 0;
in 1KB parts, and upper 16 bits are above 16MB in 64KB parts. If error, return zero.
BIOS call "INT 15H, AH=E801H" to get EISA memory map,
AX = memory between 1M and 16M in 1K parts.
- BX = memory above 16M in 64K parts.
+ BX = memory above 16M in 64K parts.
*/
-
+
static inline grub_uint32_t
grub_get_eisa_mmap (void)
{
/* place address (+4) in ES:DI */
regs.es = ((grub_addr_t) &entry->addr) >> 4;
regs.edi = ((grub_addr_t) &entry->addr) & 0xf;
-
+
/* set continuation value */
regs.ebx = cont;
regs.eax = 0xe820;
grub_bios_interrupt (0x15, ®s);
- /* write length of buffer (zero if error) into ADDR */
+ /* write length of buffer (zero if error) into ADDR */
if ((regs.flags & GRUB_CPU_INT_FLAGS_CARRY) || regs.eax != 0x534d4150
|| regs.ecx < 0x14 || regs.ecx > 0x400)
entry->size = 0;
if (class == GRUB_PCI_CLASS_SUBCLASS_USB)
return 0;
-
+
addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
grub_pci_write (addr, cmd);
+ 4 * resources[i].bar + 4);
grub_pci_write (addr, 0);
}
- }
+ }
}
grub_pci_iterate (enable_cards, NULL);
}
case 0:
val = grub_le_to_cpu32 (grub_get_unaligned32 (((grub_uint8_t *)
(addr & MASK3) + 2)));
- val = (((((val & MASK20) + value) & MASK20) << 2)
+ val = (((((val & MASK20) + value) & MASK20) << 2)
| (val & ~(MASK20 << 2)));
grub_set_unaligned32 (((grub_uint8_t *) (addr & MASK3) + 2),
grub_cpu_to_le32 (val));
/* [MIB] ld8 r1=[r15] */
0x11, 0x08, 0x00, 0x1e, 0x18, 0x10,
/* mov b6=r16 */
- 0x60, 0x80, 0x04, 0x80, 0x03, 0x00,
+ 0x60, 0x80, 0x04, 0x80, 0x03, 0x00,
/* br.few b6;; */
- 0x60, 0x00, 0x80, 0x00
+ 0x60, 0x00, 0x80, 0x00
};
#else
static const grub_uint8_t jump[0x20] =
args.pos_lo = pos;
#else
args.pos_hi = (grub_ieee1275_cell_t) (pos >> (8 * GRUB_IEEE1275_CELL_SIZEOF));
- args.pos_lo = (grub_ieee1275_cell_t)
+ args.pos_lo = (grub_ieee1275_cell_t)
(pos & ((1ULL << (8 * GRUB_IEEE1275_CELL_SIZEOF)) - 1));
#endif
/* Claim some available memory in the first /memory node. */
#ifdef __sparc__
-static void
+static void
grub_claim_heap (void)
{
grub_mm_init_region ((void *) (grub_modules_get_end ()
return 0;
}
-static void
+static void
grub_claim_heap (void)
{
unsigned long total = 0;
void
grub_machine_init (void)
{
- grub_modbase = ALIGN_UP((grub_addr_t) _end
+ grub_modbase = ALIGN_UP((grub_addr_t) _end
+ GRUB_KERNEL_MACHINE_MOD_GAP,
GRUB_KERNEL_MACHINE_MOD_ALIGN);
grub_ieee1275_init ();
if (comma)
{
char *filepath = comma + 1;
-
+
/* Make sure filepath has leading backslash. */
if (filepath[0] != '\\')
ret = grub_xasprintf ("\\%s", filepath);
if (device)
{
char *prefix_set;
-
+
prefix_set = grub_xasprintf ("(%s)%s", device, path ? : "");
if (prefix_set)
{
grub_register_exported_symbols ();
#ifdef GRUB_LINKER_HAVE_INIT
grub_arch_dl_init_linker ();
-#endif
+#endif
grub_load_modules ();
grub_boot_time ("After loading embedded modules.");
#endif
/* Handle partner lo16 relocation. Lower part is
- treated as signed. Hence add 0x8000 to compensate.
+ treated as signed. Hence add 0x8000 to compensate.
*/
value = (*(grub_uint16_t *) addr << 16)
+ sym_value + 0x8000;
value = raw << 2;
value += sym_value;
raw = (value >> 2) & 0x3ffffff;
-
- *(grub_uint32_t *) addr =
+
+ *(grub_uint32_t *) addr =
raw | ((*(grub_uint32_t *) addr) & 0xfc000000);
}
break;
return GRUB_ERR_NONE;
}
-void
+void
grub_arch_dl_init_linker (void)
{
grub_dl_register_symbol ("__gnu_local_gp", &__gnu_local_gp_dummy, 0, 0);
*((volatile grub_uint32_t *) (GRUB_MACHINE_PCI_CONTROLLER_HEADER
+ GRUB_PCI_REG_CACHELINE)) = 0xff;
- *((volatile grub_uint32_t *) (GRUB_MACHINE_PCI_CONTROLLER_HEADER
+ *((volatile grub_uint32_t *) (GRUB_MACHINE_PCI_CONTROLLER_HEADER
+ GRUB_PCI_REG_ADDRESS_REG0))
= 0x80000000 | GRUB_PCI_ADDR_MEM_TYPE_64 | GRUB_PCI_ADDR_MEM_PREFETCH;
- *((volatile grub_uint32_t *) (GRUB_MACHINE_PCI_CONTROLLER_HEADER
+ *((volatile grub_uint32_t *) (GRUB_MACHINE_PCI_CONTROLLER_HEADER
+ GRUB_PCI_REG_ADDRESS_REG1)) = 0;
grub_pci_iterate (set_card, NULL);
else
totalmem = ((spd.ddr2.num_of_ranks
& GRUB_SMBUS_SPD_MEMORY_NUM_OF_RANKS_MASK) + 1) << (i + 2);
-
+
if (totalmem >= 256)
{
grub_arch_memsize = 256;
if (grub_arch_memsize == 0)
{
int i;
-
+
for (i = 27; i >= 0; i--)
if (probe_mem (grub_arch_memsize | (1 << i)))
grub_arch_memsize |= (1 << i);
while (1);
}
-grub_err_t
+grub_err_t
grub_machine_mmap_iterate (grub_memory_hook_t hook, void *hook_data)
{
hook (0, grub_arch_memsize, GRUB_MEMORY_AVAILABLE, hook_data);
grub_abort (void)
{
grub_printf ("\nAborted.");
-
+
#ifndef GRUB_UTIL
if (grub_term_inputs)
#endif
n->next = 0;
va_start (args, fmt);
- n->msg = grub_xvasprintf (fmt, args);
+ n->msg = grub_xvasprintf (fmt, args);
va_end (args);
*boot_time_last = n;
else if (extra == 0)
{
grub_mm_header_t r;
-
+
r = cur + extra + n;
r->magic = GRUB_MM_FREE_MAGIC;
r->size = cur->size - extra - n;
void *ptr;
if (grub_mm_debug)
- grub_printf ("%s:%d: memalign (0x%" PRIxGRUB_SIZE ", 0x%" PRIxGRUB_SIZE
+ grub_printf ("%s:%d: memalign (0x%" PRIxGRUB_SIZE ", 0x%" PRIxGRUB_SIZE
") = ", file, line, align, size);
ptr = grub_memalign (align, size);
if (grub_mm_debug)
partname = ptr;
while (*ptr && grub_isalpha (*ptr))
ptr++;
- partname_end = ptr;
+ partname_end = ptr;
num = grub_strtoul (ptr, &ptr, 0) - 1;
curpart = 0;
grub_uint32_t bctr;
};
-static const struct trampoline trampoline_template =
+static const struct trampoline trampoline_template =
{
0x3d800000,
0x618c0000,
if (s->sh_type == SHT_RELA)
{
const Elf_Rela *rel, *max;
-
+
for (rel = (const Elf_Rela *) ((const char *) e + s->sh_offset),
max = rel + s->sh_size / s->sh_entsize;
rel < max;
if (ELF_R_TYPE (rel->r_info) == GRUB_ELF_R_PPC_REL24
|| ELF_R_TYPE (rel->r_info) == GRUB_ELF_R_PPC_PLTREL24)
(*tramp)++;
-
+
}
*tramp *= sizeof (struct trampoline);
tptr->ori |= ((value) & 0xffff);
mod->trampptr = tptr + 1;
}
-
+
if (delta << 6 >> 6 != delta)
return grub_error (GRUB_ERR_BAD_MODULE,
"relocation overflow");