Changeset 2e672fd in mainline
- Timestamp:
- 2006-07-10T20:48:40Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- daab5145
- Parents:
- 822b64e
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/loader/boot.S
r822b64e r2e672fd 34 34 35 35 start: 36 lis r4, ofw @ha37 addi r4, r4, ofw @l36 lis r4, ofw_cif@ha 37 addi r4, r4, ofw_cif@l 38 38 stw r5, 0(r4) 39 39 -
arch/ppc32/loader/main.c
r822b64e r2e672fd 157 157 158 158 printf("\nBooting the kernel...\n"); 159 jump_to_kernel(bootinfo_pa, sizeof(bootinfo), trans_pa, pages << PAGE_WIDTH, real_mode_pa, bootinfo.screen.addr, bootinfo.screen.scanline);159 jump_to_kernel(bootinfo_pa, sizeof(bootinfo), trans_pa, pages << PAGE_WIDTH, real_mode_pa, (void *) bootinfo.screen.addr, bootinfo.screen.scanline); 160 160 } -
arch/ppc32/loader/ofw.c
r822b64e r2e672fd 30 30 #include <printf.h> 31 31 32 typedef int (* ofw_entry_t)(ofw_args_t *args); 33 34 int ofw(ofw_args_t *args) 35 { 36 return ((ofw_entry_t) ofw_cif)(args); 37 } 38 32 39 void write(const char *str, const int len) 33 40 { … … 49 56 if (ofw_get_property(device, "assigned-addresses", &macio, sizeof(macio)) <= 0) 50 57 return false; 51 keyboard->addr = (void *)macio.addr.addr_lo;58 keyboard->addr = macio.addr.addr_lo; 52 59 keyboard->size = macio.size_lo; 53 60 54 61 return true; 55 62 } 63 64 int ofw_translate_failed(ofw_arg_t flag) 65 { 66 return 0; 67 } -
arch/ppc64/loader/boot.S
r822b64e r2e672fd 34 34 35 35 start: 36 lis r4, ofw @ha37 addi r4, r4, ofw @l36 lis r4, ofw_cif@ha 37 addi r4, r4, ofw_cif@l 38 38 stw r5, 0(r4) 39 39 -
arch/ppc64/loader/ofw.c
r822b64e r2e672fd 30 30 #include <printf.h> 31 31 32 typedef int (* ofw_entry_t)(ofw_args_t *args); 33 34 int ofw(ofw_args_t *args) 35 { 36 return ((ofw_entry_t) ofw_cif)(args); 37 } 38 32 39 void write(const char *str, const int len) 33 40 { … … 54 61 return true; 55 62 } 63 64 int ofw_translate_failed(ofw_arg_t flag) 65 { 66 return 0; 67 } -
arch/sparc64/loader/asm.S
r822b64e r2e672fd 26 26 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 # 28 29 #define STACK_WINDOW_SAVE_AREA_SIZE (16*8) 30 31 #define PSTATE_AM_BIT 8 28 32 29 33 .text … … 95 99 96 100 jump_to_kernel: 97 set ofw , %l0101 set ofw_cif, %l0 98 102 jmp %o0 ! jump to kernel 99 103 ldx [%l0], %o4 ! pass OpenFirmware address in %o4 104 105 .global ofw 106 ofw: 107 save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp 108 set ofw_cif, %l0 109 ldx [%l0], %l0 110 111 rdpr %pstate, %l1 112 and %l1, ~PSTATE_AM_BIT, %l2 113 wrpr %l2, 0, %pstate 114 115 jmpl %l0, %o7 116 mov %i0, %o0 117 118 wrpr %l1, 0, %pstate 119 120 ret 121 restore %o0, 0, %o0 -
arch/sparc64/loader/boot.S
r822b64e r2e672fd 29 29 #define INITIAL_STACK 0x0 30 30 31 #define PSTATE_IE_BIT 2 32 31 33 .register %g2, #scratch 32 34 .register %g3, #scratch … … 53 55 flushw 54 56 57 /* 58 * Disable interrupts. 59 */ 60 rdpr %pstate, %g2 61 and %g2, ~PSTATE_IE_BIT, %g2 ! mask the Interrupt Enable bit 62 wrpr %g2, 0, %pstate 63 55 64 # TODO: set initial stack 56 65 57 set ofw , %l066 set ofw_cif, %l0 58 67 59 68 call init ! initialize OpenFirmware -
arch/sparc64/loader/main.c
r822b64e r2e672fd 52 52 printf(" %L: %s image (size %d bytes)\n", components[i].start, components[i].name, components[i].size); 53 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 59 60 54 printf("\nCopying components\n"); 61 55 unsigned int top = 0; -
arch/sparc64/loader/ofw.c
r822b64e r2e672fd 40 40 } 41 41 } 42 43 int ofw_translate_failed(ofw_arg_t flag) 44 { 45 return flag != -1; 46 } -
genarch/ofw.c
r822b64e r2e672fd 32 32 #include <types.h> 33 33 34 #define MAX_OFW_ARGS 10 35 36 /** OpenFirmware command structure 37 * 38 */ 39 typedef struct { 40 const char *service; /**< Command name */ 41 unsigned long nargs; /**< Number of in arguments */ 42 unsigned long nret; /**< Number of out arguments */ 43 ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */ 44 } ofw_args_t; 45 46 typedef void (*ofw_entry)(ofw_args_t *); 47 48 ofw_entry ofw; 34 uintptr_t ofw_cif; 49 35 50 36 phandle ofw_chosen; … … 73 59 args.args[i + nargs] = 0; 74 60 75 ofw(&args);76 61 (void) ofw(&args); 62 77 63 for (i = 1; i < nret; i++) 78 64 rets[i - 1] = args.args[i + nargs]; 79 65 80 66 return args.args[nargs]; 81 67 } … … 176 162 halt(); 177 163 } 164 165 if (ofw_translate_failed(result[0])) 166 return NULL; 178 167 179 168 if (sizeof(unative_t) == 8) … … 182 171 shift = 0; 183 172 184 return (void *) (((result[2]&0xffffffff)<<shift)|((result[3])&0xffffffff)); 185 } 186 173 return (void *) ((result[2]<<shift)|result[3]); 174 } 175 176 void *ofw_claim(const void *virt, const int len) 177 { 178 ofw_arg_t retaddr; 179 int shift; 180 181 if (ofw_call("call-method", 5, 2, &retaddr, "claim", ofw_mmu, 0, len, virt) != 0) { 182 puts("Error: MMU method claim() failed, halting.\n"); 183 halt(); 184 } 185 186 return (void *) retaddr; 187 } 187 188 188 189 int ofw_map(const void *phys, const void *virt, const int size, const int mode) -
genarch/ofw.h
r822b64e r2e672fd 37 37 #define MEMMAP_MAX_RECORDS 32 38 38 39 #define MAX_OFW_ARGS 12 40 41 typedef unsigned long ofw_arg_t; 42 typedef unsigned int ihandle; 43 typedef unsigned int phandle; 44 45 /** OpenFirmware command structure 46 * 47 */ 48 typedef struct { 49 const char *service; /**< Command name */ 50 unsigned long nargs; /**< Number of in arguments */ 51 unsigned long nret; /**< Number of out arguments */ 52 ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */ 53 } ofw_args_t; 54 39 55 typedef struct { 40 56 void *start; … … 49 65 50 66 typedef struct { 51 void *addr;67 uint32_t addr; 52 68 unsigned int width; 53 69 unsigned int height; … … 57 73 58 74 typedef struct { 59 void *addr;75 uint32_t addr; 60 76 unsigned int size; 61 77 } keyboard_t; … … 73 89 } pci_reg_t; 74 90 75 typedef unsigned long ofw_arg_t; 76 typedef unsigned int ihandle; 77 typedef unsigned int phandle; 91 extern uintptr_t ofw_cif; 78 92 79 93 extern phandle ofw_aliases; … … 85 99 extern phandle ofw_find_device(const char *name); 86 100 101 extern int ofw(ofw_args_t *arg); 87 102 extern void *ofw_translate(const void *virt); 103 extern int ofw_translate_failed(ofw_arg_t flag); 104 extern void *ofw_claim(const void *virt, const int len); 88 105 extern int ofw_map(const void *phys, const void *virt, const int size, const int mode); 89 106 extern int ofw_memmap(memmap_t *map);
Note:
See TracChangeset
for help on using the changeset viewer.