Subversion Repositories HelenOS-historic

Rev

Rev 888 | Rev 933 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 888 Rev 913
Line 27... Line 27...
27
 */
27
 */
28
 
28
 
29
#include "main.h" 
29
#include "main.h" 
30
#include "printf.h"
30
#include "printf.h"
31
#include "ofw.h"
31
#include "ofw.h"
-
 
32
#include "asm.h"
32
 
33
 
33
#define KERNEL_LOAD_ADDRESS 0x800000
34
#define KERNEL_LOAD_ADDRESS 0x800000
34
#define KERNEL_SIZE ((unsigned int) &_binary_____________kernel_kernel_bin_end - (unsigned int) &_binary_____________kernel_kernel_bin_start)
35
#define KERNEL_START &_binary_____________kernel_kernel_bin_start
35
 
-
 
36
static void halt(void)
36
#define KERNEL_END &_binary_____________kernel_kernel_bin_end
37
{
-
 
38
    while (1);
37
#define KERNEL_SIZE ((unsigned int) KERNEL_END - (unsigned int) KERNEL_START)
39
}
-
 
40
 
38
 
41
void bootstrap(void)
39
void bootstrap(void)
42
{
40
{
43
    printf("\nHelenOS PPC Bootloader\nKernel size %d bytes, load address %L\n", KERNEL_SIZE, KERNEL_LOAD_ADDRESS);
41
    printf("\nHelenOS PPC Bootloader\nKernel size %d bytes, load address %L\n", KERNEL_SIZE, KERNEL_LOAD_ADDRESS);
44
   
42
   
45
    void *addr = ofw_claim((void *) KERNEL_LOAD_ADDRESS, KERNEL_SIZE, 1);
43
    void *addr = ofw_claim((void *) KERNEL_LOAD_ADDRESS, KERNEL_SIZE, 1);
46
    if (addr == NULL) {
44
    if (addr == NULL) {
47
        printf("Error: Unable to claim memory");
45
        printf("Error: Unable to claim memory");
48
        halt();
46
        halt();
49
    }
47
    }
-
 
48
    memcpy(addr, KERNEL_START, KERNEL_SIZE);
50
   
49
   
-
 
50
    printf("Booting the kernel...\n");
51
    halt();
51
    jump_to_kernel(addr);
52
}
52
}