Subversion Repositories HelenOS

Rev

Rev 1897 | Rev 1972 | 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
}