Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1130 → Rev 1131

/boot/trunk/arch/ppc32/loader/asm.S
108,12 → 108,13
 
jump_to_kernel:
# r3 = memmap (pa)
# r4 = trans (pa)
# r5 = kernel size
# r6 = real_mode (pa)
# r3 = bootinfo (pa)
# r4 = bootinfo_size
# r5 = trans (pa)
# r6 = kernel size
# r7 = real_mode (pa)
mtspr srr0, r6
mtspr srr0, r7
# jumps to real_mode
132,8 → 133,8
# copy kernel to proper location
#
# r4 = trans (pa)
# r5 = kernel size
# r5 = trans (pa)
# r6 = kernel size
li r31, PAGE_SIZE >> 2
li r30, 0
140,13 → 141,13
page_copy:
cmpwi r5, 0
cmpwi r6, 0
beq copy_end
# copy page
mtctr r31
lwz r29, 0(r4)
lwz r29, 0(r5)
copy_loop:
155,14 → 156,14
addi r29, r29, 4
addi r30, r30, 4
subi r5, r5, 4
subi r6, r6, 4
cmpwi r5, 0
cmpwi r6, 0
beq copy_end
bdnz copy_loop
addi r4, r4, 4
addi r5, r5, 4
b page_copy
copy_end:
238,7 → 239,7
# start the kernel
#
# r3 = memmap (pa)
# r3 = bootinfo (pa)
lis r31, KERNEL_START_ADDR@ha
addi r31, r31, KERNEL_START_ADDR@l
/boot/trunk/arch/ppc32/loader/main.c
36,11 → 36,6
 
#define HEAP_GAP 1024000
 
typedef struct {
memmap_t memmap;
screen_t screen;
} bootinfo_t;
 
bootinfo_t bootinfo;
 
 
123,5 → 118,5
fix_overlap(&bootinfo, &bootinfo_pa, "Boot info", &top);
printf("\nBooting the kernel...\n");
jump_to_kernel(bootinfo_pa, trans_pa, KERNEL_SIZE, real_mode_pa);
jump_to_kernel(bootinfo_pa, sizeof(bootinfo), trans_pa, KERNEL_SIZE, real_mode_pa);
}
/boot/trunk/arch/ppc32/loader/asm.h
44,7 → 44,7
extern void *trans[TRANS_SIZE];
 
extern void halt();
extern void jump_to_kernel(void *memmap, void *trans, unsigned int kernel_size, void *real_mode) __attribute__((noreturn));
extern void jump_to_kernel(void *bootinfo, unsigned int bootinfo_size, void *trans, unsigned int kernel_size, void *real_mode) __attribute__((noreturn));
extern void real_mode();
 
#endif
/boot/trunk/arch/ppc32/loader/main.h
38,6 → 38,11
*/
#define ALIGN_UP(addr, align) (((addr) + ((align) - 1)) & ~((align) - 1))
 
typedef struct {
memmap_t memmap;
screen_t screen;
} bootinfo_t;
 
extern int _binary_____________kernel_kernel_bin_start;
extern int _binary_____________kernel_kernel_bin_end;
extern void start(void);