Changeset 822b64e in mainline
- Timestamp:
- 2006-07-05T13:53:21Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2e672fd
- Parents:
- 83253ad
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/sparc64/loader/main.c
r83253ad r822b64e 31 31 #include "asm.h" 32 32 #include "_components.h" 33 #include <ofw.h> 33 34 34 35 #define KERNEL_VIRTUAL_ADDRESS 0x400000 36 37 bootinfo_t bootinfo; 35 38 36 39 void bootstrap(void) 37 40 { 38 41 printf("HelenOS SPARC64 Bootloader\n"); 39 42 40 43 component_t components[COMPONENTS]; 41 bootinfo_t bootinfo;42 44 init_components(components); 43 45 44 46 printf("\nMemory statistics\n"); 45 47 printf(" kernel entry point at %L\n", KERNEL_VIRTUAL_ADDRESS); … … 49 51 for (i = 0; i < COMPONENTS; i++) 50 52 printf(" %L: %s image (size %d bytes)\n", components[i].start, components[i].name, components[i].size); 53 54 screen_t scr; 55 56 ofw_screen(&scr); 57 printf("\n%P: fb, %dx%dx%d\n", ofw_translate(scr.addr), scr.width, scr.height, scr.bpp); 58 51 59 52 60 printf("\nCopying components\n"); … … 65 73 printf("done.\n"); 66 74 } 67 75 68 76 printf("\nBooting the kernel...\n"); 69 77 jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, &bootinfo, sizeof(bootinfo)); -
genarch/ofw.c
r83253ad r822b64e 30 30 #include <printf.h> 31 31 #include <asm.h> 32 #include <types.h> 32 33 33 34 #define MAX_OFW_ARGS 10 … … 168 169 void *ofw_translate(const void *virt) 169 170 { 170 ofw_arg_t result[3]; 171 172 if (ofw_call("call-method", 4, 4, result, "translate", ofw_mmu, virt, 1) != 0) { 171 ofw_arg_t result[4]; 172 int shift; 173 174 if (ofw_call("call-method", 3, 5, result, "translate", ofw_mmu, virt) != 0) { 173 175 puts("Error: MMU method translate() failed, halting.\n"); 174 176 halt(); 175 177 } 176 return (void *) result[2]; 178 179 if (sizeof(unative_t) == 8) 180 shift = 32; 181 else 182 shift = 0; 183 184 return (void *) (((result[2]&0xffffffff)<<shift)|((result[3])&0xffffffff)); 177 185 } 178 186 … … 180 188 int ofw_map(const void *phys, const void *virt, const int size, const int mode) 181 189 { 182 return ofw_call("call-method", 6, 1, NULL, "map", ofw_mmu, mode, size, virt, phys); 190 uintptr_t phys_hi, phys_lo; 191 192 if (sizeof(unative_t) == 8) { 193 int shift = 32; 194 phys_hi = (uintptr_t) phys >> shift; 195 phys_lo = (uintptr_t) phys & 0xffffffff; 196 } else { 197 phys_hi = 0; 198 phys_lo = (uintptr_t) phys; 199 } 200 201 return ofw_call("call-method", 7, 1, NULL, "map", ofw_mmu, mode, size, virt, 202 phys_hi, phys_lo); 183 203 } 184 204 … … 239 259 return true; 240 260 } 241
Note:
See TracChangeset
for help on using the changeset viewer.