123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*
- * Copyright (C) 2004 Tobias Lorenz
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #ifdef RAW_IMAGE
- static unsigned long raw_load_addr;
-
- int mach_boot(register unsigned long entry_point)
- {
- void (*fnc)(void) = (void *) entry_point;
- // r0 = 0
- // r1 = 625 (machine nr. MACH_TYPE_P2001)
- (*fnc)();
-
- return 0; /* We should never reach this point ! */
- }
-
- static sector_t raw_download(unsigned char *data, unsigned int len, int eof)
- {
- memcpy(phys_to_virt(raw_load_addr), data, len);
- raw_load_addr += len;
- if (!eof)
- return 0;
-
- done(1);
- printf("Starting program.\n");
- mach_boot(RAWADDR);
- printf("Bootsector returned?");
- longjmp(restart_etherboot, -2);
- return 1;
- }
-
- static os_download_t raw_probe(unsigned char *data __unused, unsigned int len __unused)
- {
- printf("(RAW");
- // probe something here...
- printf(")... \n");
-
- //raw_load_addr = phys_to_virt(_end);
- raw_load_addr = RAWADDR;
- printf("Writing image to 0x%x\n", raw_load_addr);
- return raw_download;
- }
-
- #endif
|