2007-10-01 Robert Millan * conf/powerpc-ieee1275.rmk (grub_mkimage_SOURCES): Replace reference to util/powerpc/ieee1275/grub-mkimage.c with util/elf/grub-mkimage.c. * include/grub/powerpc/ieee1275/kernel.h: Rename GRUB_IEEE1275_MOD_ALIGN to GRUB_MOD_ALIGN. * kern/powerpc/ieee1275/init.c: Replace GRUB_IEEE1275_MOD_ALIGN with GRUB_MOD_ALIGN. * util/elf/grub-mkimage.c: Replace GRUB_IEEE1275_MOD_ALIGN with GRUB_MOD_ALIGN. Remove all use of endian conversion macros, since they break LE platforms and grub-mkimage is only meant for native use anyway. 2007-10-01 Robert Millan * util/powerpc/ieee1275/grub-mkimage.c: Moved to ... * util/elf/grub-mkimage.c: ... here. Index: conf/powerpc-ieee1275.rmk =================================================================== RCS file: /sources/grub/grub2/conf/powerpc-ieee1275.rmk,v retrieving revision 1.71 diff -u -r1.71 powerpc-ieee1275.rmk --- conf/powerpc-ieee1275.rmk 29 Aug 2007 10:39:42 -0000 1.71 +++ conf/powerpc-ieee1275.rmk 1 Oct 2007 14:38:31 -0000 @@ -32,7 +32,7 @@ endif # For grub-mkimage. -grub_mkimage_SOURCES = util/powerpc/ieee1275/grub-mkimage.c util/misc.c \ +grub_mkimage_SOURCES = util/elf/grub-mkimage.c util/misc.c \ util/resolve.c # For grub-mkdevicemap. Index: include/grub/powerpc/ieee1275/kernel.h =================================================================== RCS file: /sources/grub/grub2/include/grub/powerpc/ieee1275/kernel.h,v retrieving revision 1.6 diff -u -r1.6 kernel.h --- include/grub/powerpc/ieee1275/kernel.h 21 Jul 2007 23:32:24 -0000 1.6 +++ include/grub/powerpc/ieee1275/kernel.h 1 Oct 2007 14:38:31 -0000 @@ -21,7 +21,7 @@ #include -#define GRUB_IEEE1275_MOD_ALIGN 0x1000 +#define GRUB_MOD_ALIGN 0x1000 void EXPORT_FUNC (grub_reboot) (void); void EXPORT_FUNC (grub_halt) (void); Index: kern/powerpc/ieee1275/init.c =================================================================== RCS file: /sources/grub/grub2/kern/powerpc/ieee1275/init.c,v retrieving revision 1.31 diff -u -r1.31 init.c --- kern/powerpc/ieee1275/init.c 21 Jul 2007 23:32:27 -0000 1.31 +++ kern/powerpc/ieee1275/init.c 1 Oct 2007 14:38:31 -0000 @@ -205,5 +205,5 @@ grub_addr_t grub_arch_modules_addr (void) { - return ALIGN_UP(_end, GRUB_IEEE1275_MOD_ALIGN); + return ALIGN_UP(_end, GRUB_MOD_ALIGN); } Index: util/powerpc/ieee1275/grub-mkimage.c =================================================================== RCS file: /sources/grub/grub2/util/powerpc/ieee1275/grub-mkimage.c,v retrieving revision 1.9 diff -u -r1.9 grub-mkimage.c --- util/powerpc/ieee1275/grub-mkimage.c 21 Jul 2007 23:32:32 -0000 1.9 +++ util/powerpc/ieee1275/grub-mkimage.c 1 Oct 2007 14:38:31 -0000 @@ -70,28 +70,27 @@ grub_util_info ("adding CHRP NOTE segment"); - note.header.namesz = grub_cpu_to_be32 (sizeof (GRUB_IEEE1275_NOTE_NAME)); - note.header.descsz = grub_cpu_to_be32 (note_size); - note.header.type = grub_cpu_to_be32 (GRUB_IEEE1275_NOTE_TYPE); + note.header.namesz = sizeof (GRUB_IEEE1275_NOTE_NAME); + note.header.descsz = note_size; + note.header.type = GRUB_IEEE1275_NOTE_TYPE; strcpy (note.header.name, GRUB_IEEE1275_NOTE_NAME); - note.descriptor.real_mode = grub_cpu_to_be32 (0xffffffff); - note.descriptor.real_base = grub_cpu_to_be32 (0x00c00000); - note.descriptor.real_size = grub_cpu_to_be32 (0xffffffff); - note.descriptor.virt_base = grub_cpu_to_be32 (0xffffffff); - note.descriptor.virt_size = grub_cpu_to_be32 (0xffffffff); - note.descriptor.load_base = grub_cpu_to_be32 (0x00004000); + note.descriptor.real_mode = 0xffffffff; + note.descriptor.real_base = 0x00c00000; + note.descriptor.real_size = 0xffffffff; + note.descriptor.virt_base = 0xffffffff; + note.descriptor.virt_size = 0xffffffff; + note.descriptor.load_base = 0x00004000; /* Write the note data to the new segment. */ - grub_util_write_image_at (¬e, note_size, - grub_be_to_cpu32 (phdr->p_offset), out); + grub_util_write_image_at (¬e, note_size, phdr->p_offset, out); /* Fill in the rest of the segment header. */ - phdr->p_type = grub_cpu_to_be32 (PT_NOTE); - phdr->p_flags = grub_cpu_to_be32 (PF_R); - phdr->p_align = grub_cpu_to_be32 (sizeof (long)); + phdr->p_type = PT_NOTE; + phdr->p_flags = PF_R; + phdr->p_align = sizeof (long); phdr->p_vaddr = 0; phdr->p_paddr = 0; - phdr->p_filesz = grub_cpu_to_be32 (note_size); + phdr->p_filesz = note_size; phdr->p_memsz = 0; } @@ -120,9 +119,9 @@ module_img = xmalloc (total_module_size); modinfo = (struct grub_module_info *) module_img; - modinfo->magic = grub_cpu_to_be32 (GRUB_MODULE_MAGIC); - modinfo->offset = grub_cpu_to_be32 (sizeof (struct grub_module_info)); - modinfo->size = grub_cpu_to_be32 (total_module_size); + modinfo->magic = GRUB_MODULE_MAGIC; + modinfo->offset = sizeof (struct grub_module_info); + modinfo->size = total_module_size; /* Load all the modules, with headers, into module_img. */ for (p = path_list; p; p = p->next) @@ -135,8 +134,8 @@ mod_size = grub_util_get_image_size (p->name); header = (struct grub_module_header *) (module_img + offset); - header->offset = grub_cpu_to_be32 (sizeof (*header)); - header->size = grub_cpu_to_be32 (mod_size + sizeof (*header)); + header->offset = sizeof (*header); + header->size = mod_size + sizeof (*header); grub_util_load_image (p->name, module_img + offset + sizeof (*header)); @@ -144,17 +143,16 @@ } /* Write the module data to the new segment. */ - grub_util_write_image_at (module_img, total_module_size, - grub_cpu_to_be32 (phdr->p_offset), out); + grub_util_write_image_at (module_img, total_module_size, phdr->p_offset, out); /* Fill in the rest of the segment header. */ - phdr->p_type = grub_cpu_to_be32 (PT_LOAD); - phdr->p_flags = grub_cpu_to_be32 (PF_R | PF_W | PF_X); - phdr->p_align = grub_cpu_to_be32 (sizeof (long)); - phdr->p_vaddr = grub_cpu_to_be32 (modbase); - phdr->p_paddr = grub_cpu_to_be32 (modbase); - phdr->p_filesz = grub_cpu_to_be32 (total_module_size); - phdr->p_memsz = grub_cpu_to_be32 (total_module_size); + phdr->p_type = PT_LOAD; + phdr->p_flags = PF_R | PF_W | PF_X; + phdr->p_align = sizeof (long); + phdr->p_vaddr = modbase; + phdr->p_paddr = modbase; + phdr->p_filesz = total_module_size; + phdr->p_memsz = total_module_size; } void @@ -177,10 +175,10 @@ grub_util_read_at (&ehdr, sizeof (ehdr), 0, in); - phdrs = xmalloc (grub_be_to_cpu16 (ehdr.e_phentsize) - * (grub_be_to_cpu16 (ehdr.e_phnum) + 2)); + phdrs = xmalloc (ehdr.e_phentsize + * (ehdr.e_phnum + 2)); /* Copy all existing segments. */ - for (i = 0; i < grub_be_to_cpu16 (ehdr.e_phnum); i++) + for (i = 0; i < ehdr.e_phnum; i++) { char *segment_img; grub_size_t segment_end; @@ -189,26 +187,22 @@ /* Read segment header. */ grub_util_read_at (phdr, sizeof (Elf32_Phdr), - (grub_be_to_cpu32 (ehdr.e_phoff) - + (i * grub_be_to_cpu16 (ehdr.e_phentsize))), - in); - grub_util_info ("copying segment %d, type %d", i, - grub_be_to_cpu32 (phdr->p_type)); + (ehdr.e_phoff + (i * ehdr.e_phentsize)), in); + grub_util_info ("copying segment %d, type %d", i, phdr->p_type); /* Locate _end. */ - segment_end = grub_be_to_cpu32 (phdr->p_paddr) - + grub_be_to_cpu32 (phdr->p_memsz); + segment_end = phdr->p_paddr + + phdr->p_memsz; grub_util_info ("segment %u end 0x%lx", i, segment_end); if (segment_end > grub_end) grub_end = segment_end; /* Read segment data and write it to new file. */ - segment_img = xmalloc (grub_be_to_cpu32 (phdr->p_filesz)); + segment_img = xmalloc (phdr->p_filesz); - grub_util_read_at (segment_img, grub_be_to_cpu32 (phdr->p_filesz), - grub_be_to_cpu32 (phdr->p_offset), in); - grub_util_write_image_at (segment_img, grub_be_to_cpu32 (phdr->p_filesz), - grub_be_to_cpu32 (phdr->p_offset), out); + grub_util_read_at (segment_img, phdr->p_filesz, phdr->p_offset, in); + grub_util_write_image_at (segment_img, phdr->p_filesz, + phdr->p_offset, out); free (segment_img); } @@ -218,15 +212,14 @@ grub_addr_t modbase; /* Place modules just after grub segment. */ - modbase = ALIGN_UP(grub_end, GRUB_IEEE1275_MOD_ALIGN); + modbase = ALIGN_UP(grub_end, GRUB_MOD_ALIGN); /* Construct new segment header for modules. */ - phdr = phdrs + grub_be_to_cpu16 (ehdr.e_phnum); - ehdr.e_phnum = grub_cpu_to_be16 (grub_be_to_cpu16 (ehdr.e_phnum) + 1); + phdr = phdrs + ehdr.e_phnum; + ehdr.e_phnum = ehdr.e_phnum + 1; /* Fill in p_offset so the callees know where to write. */ - phdr->p_offset = grub_cpu_to_be32 (ALIGN_UP (grub_util_get_fp_size (out), - sizeof (long))); + phdr->p_offset = ALIGN_UP (grub_util_get_fp_size (out), sizeof (long)); load_modules (modbase, phdr, dir, mods, out); } @@ -234,12 +227,11 @@ if (chrp) { /* Construct new segment header for the CHRP note. */ - phdr = phdrs + grub_be_to_cpu16 (ehdr.e_phnum); - ehdr.e_phnum = grub_cpu_to_be16 (grub_be_to_cpu16 (ehdr.e_phnum) + 1); + phdr = phdrs + ehdr.e_phnum; + ehdr.e_phnum = ehdr.e_phnum + 1; /* Fill in p_offset so the callees know where to write. */ - phdr->p_offset = grub_cpu_to_be32 (ALIGN_UP (grub_util_get_fp_size (out), - sizeof (long))); + phdr->p_offset = ALIGN_UP (grub_util_get_fp_size (out), sizeof (long)); load_note (phdr, out); } @@ -251,12 +243,11 @@ /* Append entire segment table to the file. */ phdroff = ALIGN_UP (grub_util_get_fp_size (out), sizeof (long)); - grub_util_write_image_at (phdrs, grub_be_to_cpu16 (ehdr.e_phentsize) - * grub_be_to_cpu16 (ehdr.e_phnum), phdroff, - out); + grub_util_write_image_at (phdrs, ehdr.e_phentsize * + ehdr.e_phnum, phdroff, out); /* Write ELF header. */ - ehdr.e_phoff = grub_cpu_to_be32 (phdroff); + ehdr.e_phoff = phdroff; grub_util_write_image_at (&ehdr, sizeof (ehdr), 0, out); free (phdrs);