Rev 1897 | Rev 1977 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1897 | Rev 1899 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | #include <ofw.h> |
34 | #include <ofw.h> |
35 | #include <ofw_tree.h> |
35 | #include <ofw_tree.h> |
36 | #include "ofwarch.h" |
36 | #include "ofwarch.h" |
37 | #include <align.h> |
37 | #include <align.h> |
38 | 38 | ||
39 | #define KERNEL_VIRTUAL_ADDRESS 0x400000 |
- | |
40 | - | ||
41 | bootinfo_t bootinfo; |
39 | bootinfo_t bootinfo; |
42 | 40 | ||
43 | void bootstrap(void) |
41 | void bootstrap(void) |
44 | { |
42 | { |
45 | printf("HelenOS SPARC64 Bootloader\n"); |
43 | printf("HelenOS SPARC64 Bootloader\n"); |
Line 55... | Line 53... | ||
55 | if (bootinfo.memmap.total == 0) { |
53 | if (bootinfo.memmap.total == 0) { |
56 | printf("Error: no memory detected, halting.\n"); |
54 | printf("Error: no memory detected, halting.\n"); |
57 | halt(); |
55 | halt(); |
58 | } |
56 | } |
59 | 57 | ||
60 | if (!ofw_cpu(&bootinfo.cpu)) |
- | |
61 | printf("Error: unable to get cpu properties\n"); |
- | |
62 | - | ||
63 | printf("\nDevice info\n"); |
58 | printf("\nSystem info\n"); |
64 | printf(" cpu: %dMHz\n", bootinfo.cpu.clock_frequency/1000000); |
- | |
65 | printf(" memory: %dM\n", bootinfo.memmap.total>>20); |
59 | printf(" memory: %dM\n", bootinfo.memmap.total>>20); |
66 | 60 | ||
67 | printf("\nMemory statistics\n"); |
61 | printf("\nMemory statistics\n"); |
68 | printf(" kernel entry point at %P\n", KERNEL_VIRTUAL_ADDRESS); |
62 | printf(" kernel entry point at %P\n", KERNEL_VIRTUAL_ADDRESS); |
69 | printf(" %P: boot info structure\n", &bootinfo); |
63 | printf(" %P: boot info structure\n", &bootinfo); |
Line 94... | Line 88... | ||
94 | 88 | ||
95 | printf("\nCanonizing OpenFirmware device tree..."); |
89 | printf("\nCanonizing OpenFirmware device tree..."); |
96 | bootinfo.ofw_root = ofw_tree_build(); |
90 | bootinfo.ofw_root = ofw_tree_build(); |
97 | printf("done.\n"); |
91 | printf("done.\n"); |
98 | 92 | ||
- | 93 | printf("\nChecking for secondary processors..."); |
|
- | 94 | if (!ofw_cpu()) |
|
- | 95 | printf("Error: unable to get cpu properties\n"); |
|
- | 96 | printf("done.\n"); |
|
- | 97 | ||
99 | printf("\nBooting the kernel...\n"); |
98 | printf("\nBooting the kernel...\n"); |
100 | jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, &bootinfo, sizeof(bootinfo)); |
99 | jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, 1, &bootinfo, sizeof(bootinfo)); |
101 | } |
100 | } |