Changeset a0c732e in mainline for arch/ppc32/boot/main.c
- Timestamp:
- 2006-02-26T11:48:05Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7a255e69
- Parents:
- 13c1a0c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/boot/main.c
r13c1a0c ra0c732e 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 29 #include "main.h"30 28 31 ofw_entry ofw; 29 #include "main.h" 30 #include "printf.h" 31 #include "ofw.h" 32 32 33 phandle ofw_chosen; 34 ihandle ofw_stdout; 35 36 void init(void) 33 static void halt(void) 37 34 { 38 ofw_chosen = ofw_find_device("/chosen"); 39 if (ofw_chosen == -1) 40 ofw_call("exit", 0, 0); 41 42 if (ofw_get_property(ofw_chosen, "stdout", &ofw_stdout, sizeof(ofw_stdout)) <= 0) 43 ofw_stdout = 0; 44 } 45 46 int ofw_call(const char *service, const int nargs, const int nret, ...) 47 { 48 va_list list; 49 ofw_args_t args; 50 int i; 51 52 args.service = service; 53 args.nargs = nargs; 54 args.nret = nret; 55 56 va_start(list, nret); 57 for (i = 0; i < nargs; i++) 58 args.args[i] = va_arg(list, ofw_arg_t); 59 va_end(list); 60 61 for (i = 0; i < nret; i++) 62 args.args[i + nargs] = 0; 63 64 ofw(&args); 65 66 return args.args[nargs]; 67 } 68 69 void ofw_write(const char *str, const int len) 70 { 71 if (ofw_stdout == 0) 72 return; 73 74 ofw_call("write", 3, 1, ofw_stdout, str, len); 75 } 76 77 void ofw_puts(const char *str) 78 { 79 int len = 0; 80 81 while (str[len] != 0) 82 len++; 83 84 ofw_write(str, len); 85 } 86 87 phandle ofw_find_device(const char *name) 88 { 89 return ofw_call("finddevice", 1, 1, name); 90 } 91 92 int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen) 93 { 94 return ofw_call("getprop", 4, 1, device, name, buf, buflen); 35 while (1); 95 36 } 96 37 97 38 void bootstrap(void) 98 39 { 99 ofw_puts("\nHelenOS PPC Bootloader\n"); 100 101 while (1); 40 printf("\nHelenOS PPC Bootloader\nKernel size %d, load address %L\n", KERNEL_SIZE, KERNEL_LOAD_ADDRESS); 41 42 void *addr = ofw_claim((void *) KERNEL_LOAD_ADDRESS, KERNEL_SIZE, 1); 43 if (addr == NULL) { 44 printf("Error: Unable to claim memory"); 45 halt(); 46 } 47 48 halt(); 102 49 }
Note:
See TracChangeset
for help on using the changeset viewer.