/[qemu]/qemu/hw/sun4m.c
ViewVC logotype

Diff of /qemu/hw/sun4m.c

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

revision 1.3 by bellard, Sun Dec 19 23:18:01 2004 UTC revision 1.4 by bellard, Tue Feb 22 19:08:41 2005 UTC
# Line 25  Line 25 
25  #include "m48t08.h"  #include "m48t08.h"
26    
27  #define KERNEL_LOAD_ADDR     0x00004000  #define KERNEL_LOAD_ADDR     0x00004000
28    #define INITRD_LOAD_ADDR     0x00800000
29  #define PROM_ADDR            0xffd00000  #define PROM_ADDR            0xffd00000
30  #define PROM_FILENAMEB       "proll.bin"  #define PROM_FILENAMEB       "proll.bin"
31  #define PROM_FILENAMEE       "proll.elf"  #define PROM_FILENAMEE       "proll.elf"
# Line 135  void sun4m_init(int ram_size, int vga_ra Line 136  void sun4m_init(int ram_size, int vga_ra
136  {  {
137      char buf[1024];      char buf[1024];
138      int ret, linux_boot;      int ret, linux_boot;
139      unsigned long vram_size = 0x100000, prom_offset;      unsigned int i;
140        unsigned long vram_size = 0x100000, prom_offset, initrd_size;
141    
142      linux_boot = (kernel_filename != NULL);      linux_boot = (kernel_filename != NULL);
143    
# Line 180  void sun4m_init(int ram_size, int vga_ra Line 182  void sun4m_init(int ram_size, int vga_ra
182                      kernel_filename);                      kernel_filename);
183              exit(1);              exit(1);
184          }          }
185    
186            /* load initrd */
187            initrd_size = 0;
188            if (initrd_filename) {
189                initrd_size = load_image(initrd_filename, phys_ram_base + INITRD_LOAD_ADDR);
190                if (initrd_size < 0) {
191                    fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
192                            initrd_filename);
193                    exit(1);
194                }
195            }
196            if (initrd_size > 0) {
197                for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) {
198                    if (ldl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i)
199                        == 0x48647253) { // HdrS
200                        stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 16, INITRD_LOAD_ADDR);
201                        stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 20, initrd_size);
202                        break;
203                    }
204                }
205            }
206      }      }
207  }  }

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

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