Changeset 822b64e in mainline for genarch/ofw.c
- 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
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.