/[grub]/grub2/boot/powerpc/ieee1275/cmain.c
ViewVC logotype

Diff of /grub2/boot/powerpc/ieee1275/cmain.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by okuji, Sun Apr 4 13:45:59 2004 UTC revision 1.3 by hollisb, Tue Oct 12 03:56:10 2004 UTC
# Line 35  struct module_info Line 35  struct module_info
35  /* OpenFirmware entry point passed to us from the real bootloader.  */  /* OpenFirmware entry point passed to us from the real bootloader.  */
36  intptr_t (*grub_ieee1275_entry_fn) (void *);  intptr_t (*grub_ieee1275_entry_fn) (void *);
37    
38    grub_uint32_t grub_ieee1275_flags;
39    
40    
41  /* Return a help text for this architecture.  */  /* Return a help text for this architecture.  */
42  const char *  const char *
# Line 48  help_arch (void) Line 50  help_arch (void)
50  /* Setup the argument vector and pass control over to the main  /* Setup the argument vector and pass control over to the main
51     function.  */     function.  */
52  void  void
53  cmain (uint32_t firmware_entry)  cmain (uint32_t r3, uint32_t r4 __attribute__((unused)), uint32_t r5)
54  {  {
55    char **argv, args[256];    char **argv, args[256];
56    grub_ieee1275_phandle_t chosen;    grub_ieee1275_phandle_t chosen;
57    int argc = 0, actual;    int argc = 0, actual;
58    long batl, batu;    long batl, batu;
59    
60    grub_ieee1275_entry_fn = (intptr_t (*)(void *)) firmware_entry;    if (r5 == 0xdeadbeef)
61        {
62          /* Entered from Old World stage1.  */
63          extern char _start;
64          extern char _end;
65    
66          grub_ieee1275_entry_fn = (intptr_t (*)(void *)) r3;
67    
68          grub_ieee1275_flags = GRUB_IEEE1275_NO_PARTITION_0;
69    
70          /* Old World Open Firmware may use 4M-5M without claiming it.  */
71          grub_ieee1275_claim (0x00400000, 0x00100000, 0, 0);
72    
73          /* Need to claim ourselves so we don't cannibalize our memory later.  */
74          if (grub_ieee1275_claim ((grub_addr_t) &_start, (grub_addr_t) &_end
75              - (grub_addr_t) &_start, 0, 0))
76            abort();
77        }
78      else
79        {
80          /* Assume we were entered from Open Firmware.  */
81          grub_ieee1275_entry_fn = (intptr_t (*)(void *)) r5;
82        }
83    
84    /* Initialize BAT registers to unmapped to not generate overlapping    /* Initialize BAT registers to unmapped to not generate overlapping
85       mappings below.  */       mappings below.  */

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26