Rev 3042 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3042 | Rev 4377 | ||
---|---|---|---|
Line 30... | Line 30... | ||
30 | /** @addtogroup arm32boot |
30 | /** @addtogroup arm32boot |
31 | * @{ |
31 | * @{ |
32 | */ |
32 | */ |
33 | /** @file |
33 | /** @file |
34 | * @brief Bootstrap. |
34 | * @brief Bootstrap. |
35 | */ |
35 | */ |
36 | 36 | ||
37 | 37 | ||
38 | #include "main.h" |
38 | #include "main.h" |
39 | #include "asm.h" |
39 | #include "asm.h" |
40 | #include "_components.h" |
40 | #include "_components.h" |
41 | #include <printf.h> |
41 | #include <printf.h> |
- | 42 | #include <align.h> |
|
- | 43 | #include <macros.h> |
|
- | 44 | #include <string.h> |
|
42 | 45 | ||
43 | #include "mm.h" |
46 | #include "mm.h" |
44 | 47 | ||
45 | /** Kernel entry point address. */ |
48 | /** Kernel entry point address. */ |
46 | #define KERNEL_VIRTUAL_ADDRESS 0x80200000 |
49 | #define KERNEL_VIRTUAL_ADDRESS 0x80200000 |
47 | 50 | ||
48 | 51 | ||
49 | char *release = RELEASE; |
52 | char *release = STRING(RELEASE); |
50 | 53 | ||
51 | #ifdef REVISION |
54 | #ifdef REVISION |
52 | char *revision = ", revision " REVISION; |
55 | char *revision = ", revision " STRING(REVISION); |
53 | #else |
56 | #else |
54 | char *revision = ""; |
57 | char *revision = ""; |
55 | #endif |
58 | #endif |
56 | 59 | ||
57 | #ifdef TIMESTAMP |
60 | #ifdef TIMESTAMP |
58 | char *timestamp = "\nBuilt on " TIMESTAMP; |
61 | char *timestamp = "\nBuilt on " STRING(TIMESTAMP); |
59 | #else |
62 | #else |
60 | char *timestamp = ""; |
63 | char *timestamp = ""; |
61 | #endif |
64 | #endif |
62 | 65 | ||
63 | 66 | ||
Line 99... | Line 102... | ||
99 | top = ALIGN_UP(top, KERNEL_PAGE_SIZE); |
102 | top = ALIGN_UP(top, KERNEL_PAGE_SIZE); |
100 | memcpy(((void *) KERNEL_VIRTUAL_ADDRESS) + top, components[i].start, components[i].size); |
103 | memcpy(((void *) KERNEL_VIRTUAL_ADDRESS) + top, components[i].start, components[i].size); |
101 | if (i > 0) { |
104 | if (i > 0) { |
102 | bootinfo.tasks[bootinfo.cnt].addr = ((void *) KERNEL_VIRTUAL_ADDRESS) + top; |
105 | bootinfo.tasks[bootinfo.cnt].addr = ((void *) KERNEL_VIRTUAL_ADDRESS) + top; |
103 | bootinfo.tasks[bootinfo.cnt].size = components[i].size; |
106 | bootinfo.tasks[bootinfo.cnt].size = components[i].size; |
- | 107 | strncpy(bootinfo.tasks[bootinfo.cnt].name, |
|
- | 108 | components[i].name, BOOTINFO_TASK_NAME_BUFLEN); |
|
104 | bootinfo.cnt++; |
109 | bootinfo.cnt++; |
105 | } |
110 | } |
106 | top += components[i].size; |
111 | top += components[i].size; |
107 | printf("done.\n"); |
112 | printf("done.\n"); |
108 | } |
113 | } |
109 | 114 | ||
110 | printf("\nBooting the kernel...\n"); |
115 | printf("\nBooting the kernel...\n"); |
111 | jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, &bootinfo, sizeof(bootinfo)); |
116 | jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, &bootinfo); |
112 | } |
117 | } |
113 | 118 | ||
114 | /** @} |
119 | /** @} |
115 | */ |
120 | */ |
116 | 121 |