mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 06:49:35 +00:00
2004-10-11 Hollis Blanchard <hollis@penguinppc.org>
* boot/powerpc/ieee1275/cmain.c (grub_ieee1275_flags): New global.
(cmain): Accept 3 parameters. Test for 0xdeadbeef, indicating Old
World Macintosh. If Old Wold, set flag in grub_ieee1275_flags; claim
Open Firmware's memory for it; claim memory from _start to _end.
* boot/powerpc/ieee1275/crt0.S (__bss_start): New extern.
(_end): New extern.
(_start): Zero BSS from __bss_start to _end.
* include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_flags):
New extern.
(GRUB_IEEE1275_NO_PARTITION_0): New #define.
This commit is contained in:
1 parent
4d61feb07b
commit
4512e4f355
4 files changed
+59
-5
No files matched your search
@@ -35,6 +35,8 @@ struct module_info
|
||||
/* OpenFirmware entry point passed to us from the real bootloader. */
|
||||
intptr_t (*grub_ieee1275_entry_fn) (void *);
|
||||
|
||||
grub_uint32_t grub_ieee1275_flags;
|
||||
|
||||
|
||||
/* Return a help text for this architecture. */
|
||||
const char *
|
||||
@@ -48,14 +50,36 @@ help_arch (void)
|
||||
/* Setup the argument vector and pass control over to the main
|
||||
function. */
|
||||
void
|
||||
cmain (uint32_t firmware_entry)
|
||||
cmain (uint32_t r3, uint32_t r4 __attribute__((unused)), uint32_t r5)
|
||||
{
|
||||
char **argv, args[256];
|
||||
grub_ieee1275_phandle_t chosen;
|
||||
int argc = 0, actual;
|
||||
long batl, batu;
|
||||
|
||||
grub_ieee1275_entry_fn = (intptr_t (*)(void *)) firmware_entry;
|
||||
if (r5 == 0xdeadbeef)
|
||||
{
|
||||
/* Entered from Old World stage1. */
|
||||
extern char _start;
|
||||
extern char _end;
|
||||
|
||||
grub_ieee1275_entry_fn = (intptr_t (*)(void *)) r3;
|
||||
|
||||
grub_ieee1275_flags = GRUB_IEEE1275_NO_PARTITION_0;
|
||||
|
||||
/* Old World Open Firmware may use 4M-5M without claiming it. */
|
||||
grub_ieee1275_claim (0x00400000, 0x00100000, 0, 0);
|
||||
|
||||
/* Need to claim ourselves so we don't cannibalize our memory later. */
|
||||
if (grub_ieee1275_claim ((grub_addr_t) &_start, (grub_addr_t) &_end
|
||||
- (grub_addr_t) &_start, 0, 0))
|
||||
abort();
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Assume we were entered from Open Firmware. */
|
||||
grub_ieee1275_entry_fn = (intptr_t (*)(void *)) r5;
|
||||
}
|
||||
|
||||
/* Initialize BAT registers to unmapped to not generate overlapping
|
||||
mappings below. */
|
||||
|
||||
Reference in new issue
Block a user