Changeset 25f089b in mainline for arch/mips32/loader/main.c
- Timestamp:
- 2006-06-10T11:04:11Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e5cd717
- Parents:
- 2d1a1d4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/loader/main.c
r2d1a1d4 r25f089b 31 31 #include "msim.h" 32 32 #include "asm.h" 33 #include "_components.h" 33 34 34 35 #define KERNEL_VIRTUAL_ADDRESS 0x80100000 35 #define KERNEL_START &_binary_____________kernel_kernel_bin_start36 #define KERNEL_END &_binary_____________kernel_kernel_bin_end37 #define KERNEL_SIZE ((unsigned int) KERNEL_END - (unsigned int) KERNEL_START)38 36 39 37 void bootstrap(void) 40 38 { 41 39 printf("HelenOS MIPS Bootloader\n"); 42 printf("loaded at %L\n", &start);43 printf("kernel memory at %L (size %d bytes)\n", KERNEL_VIRTUAL_ADDRESS, KERNEL_SIZE);44 40 45 // TODO: implement memcpy 46 int i; 47 for (i = 0; i < KERNEL_SIZE; i++) { 48 if (i % 4096 == 0) 49 printf("."); 50 ((char *) KERNEL_VIRTUAL_ADDRESS)[i] = ((char *) KERNEL_START)[i]; 41 component_t components[COMPONENTS]; 42 bootinfo_t bootinfo; 43 init_components(components); 44 45 printf("\nMemory statistics\n"); 46 printf(" kernel entry point at %L\n", KERNEL_VIRTUAL_ADDRESS); 47 printf(" %L: boot info structure\n", &bootinfo); 48 49 unsigned int i; 50 for (i = 0; i < COMPONENTS; i++) 51 printf(" %L: %s image (size %d bytes)\n", components[i].start, components[i].name, components[i].size); 52 53 printf("\nCopying components\n"); 54 unsigned int top = 0; 55 bootinfo.cnt = 0; 56 for (i = 0; i < COMPONENTS; i++) { 57 printf(" %s...", components[i].name); 58 top = ALIGN_UP(top, PAGE_SIZE); 59 memcpy(((void *) KERNEL_VIRTUAL_ADDRESS) + top, components[i].start, components[i].size); 60 if (i > 0) { 61 bootinfo.tasks[bootinfo.cnt].addr = ((void *) KERNEL_VIRTUAL_ADDRESS) + top; 62 bootinfo.tasks[bootinfo.cnt].size = components[i].size; 63 bootinfo.cnt++; 64 } 65 top += components[i].size; 66 printf("done.\n"); 51 67 } 52 68 53 69 printf("\nBooting the kernel...\n"); 54 55 jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS); 70 jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, &bootinfo, sizeof(bootinfo)); 56 71 }
Note:
See TracChangeset
for help on using the changeset viewer.