Changeset 10caad0 in mainline
- Timestamp:
- 2005-08-30T17:37:50Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7ce9284
- Parents:
- db5e25f
- Location:
- arch/ppc
- Files:
-
- 1 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc/Makefile.inc
rdb5e25f r10caad0 17 17 arch_sources= \ 18 18 arch/ppc.c \ 19 arch/debug/panic.s \ 19 20 arch/fpu_context.c \ 20 21 arch/dummy.s \ … … 22 23 arch/asm.s \ 23 24 arch/mm/frame.c \ 25 arch/mm/memory_init.c \ 24 26 arch/mm/page.c \ 25 27 arch/drivers/ofw.c -
arch/ppc/include/asm.h
rdb5e25f r10caad0 1 1 /* 2 * Copyright (C) 2005 Jakub Jermar2 * Copyright (C) 2005 Martin Decky 3 3 * All rights reserved. 4 4 * … … 33 33 #include <config.h> 34 34 35 /** Set priority level low 36 * 37 * Enable interrupts and return previous 38 * value of EE. 39 */ 40 static inline pri_t cpu_priority_low(void) { 41 pri_t v; 42 __asm__ volatile ( 43 "\n" 44 : "=r" (v) 45 ); 46 return v; 47 } 48 49 /** Set priority level high 50 * 51 * Disable interrupts and return previous 52 * value of EE. 53 */ 54 static inline pri_t cpu_priority_high(void) { 55 pri_t v; 56 __asm__ volatile ( 57 "\n" 58 : "=r" (v) 59 ); 60 return v; 61 } 62 63 /** Restore priority level 64 * 65 * Restore EE. 66 */ 67 static inline void cpu_priority_restore(pri_t pri) { 68 __asm__ volatile ( 69 "\n" 70 : : "r" (pri) 71 ); 72 } 73 35 74 /* TODO: implement the real stuff */ 36 75 static inline __address get_stack_base(void) -
arch/ppc/include/asm/macro.h
rdb5e25f r10caad0 74 74 #define r30 30 75 75 #define r31 31 76 77 /* GPR Aliases */ 78 #define sp 1 76 79 77 80 /* Floating Point Registers (FPRs) */ -
arch/ppc/include/drivers/ofw.h
rdb5e25f r10caad0 36 36 typedef __u32 ofw_arg_t; 37 37 typedef __u32 ihandle; 38 typedef __u32 phandle; 38 39 39 struct ofw_args_t { 40 const char *service; 41 int nargs; 42 int nret; 43 ofw_arg_t args[MAX_OFW_ARGS]; 44 }; 40 /** OpenFirmware command structure 41 * 42 */ 43 typedef struct { 44 const char *service; /**< Command name */ 45 __u32 nargs; /**< Number of in arguments */ 46 __u32 nret; /**< Number of out arguments */ 47 ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */ 48 } ofw_args_t; 45 49 46 typedef void (*ofw_entry)(struct ofw_args_t *); 50 /** OpenFirmware device address range structure 51 * 52 */ 53 typedef struct { 54 __u32 space; 55 __u32 address; 56 __u32 size; 57 } address_range_t; 58 59 /** OpenFirmware device interrupt structure 60 * 61 */ 62 typedef struct { 63 __u32 line; /**< Interrupt number */ 64 __u32 flags; /**< Interrupt flags/logic */ 65 } interrupt_info_t; 66 67 /** OpenFirmware property structure 68 * 69 */ 70 typedef struct property_t { 71 char *name; /**< Property name */ 72 __u32 length; /**< Value length */ 73 char *value; /**< Property value */ 74 struct property_t *next; /**< Next property in list */ 75 } property_t; 76 77 /** OpenFirmware device descritor 78 * 79 */ 80 typedef struct device_node_t { 81 char *name; /**< Device name */ 82 char *type; /**< Device type */ 83 phandle node; /**< Device handle */ 84 85 __u32 n_addrs; /**< Number of address ranges */ 86 address_range_t *addrs; /**< Address ranges list */ 87 88 __u32 n_intrs; /**< Number of interrupts */ 89 interrupt_info_t *intrs; /**< Interrupts list */ 90 91 char *full_name; /**< Device full name */ 92 93 property_t *properties; /**< Device properties */ 94 95 struct device_node_t *parent; /**< Parent device */ 96 struct device_node_t *child; /**< First child in tree */ 97 struct device_node_t *sibling; /**< Next device on tree level */ 98 struct device_node_t *next; /**< Next device of the same type */ 99 struct device_node_t *next_all; /**< Next device in list of all nodes */ 100 } device_node_t; 101 102 typedef void (*ofw_entry)(ofw_args_t *); 47 103 48 104 extern ofw_entry ofw; … … 52 108 extern int ofw_call(const char *service, const int nargs, const int nret, ...); 53 109 extern void ofw_putchar(const char ch); 110 extern phandle ofw_find_device(const char *name); 111 extern int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen); 54 112 extern void putchar(const char ch); 55 113 -
arch/ppc/src/asm.s
rdb5e25f r10caad0 27 27 # 28 28 29 #include <arch/asm/macro.h> 30 29 31 .text 30 32 -
arch/ppc/src/drivers/ofw.c
rdb5e25f r10caad0 30 30 #include <stdarg.h> 31 31 32 ihandle ofw_chosen; 32 ofw_entry ofw; 33 34 phandle ofw_chosen; 33 35 ihandle ofw_stdout; 34 ofw_entry ofw;35 36 36 37 void ofw_init(void) 37 38 { 38 ofw_chosen = ofw_ call("finddevice", 1, 1,"/chosen");39 ofw_chosen = ofw_find_device("/chosen"); 39 40 if (ofw_chosen == -1) 40 41 ofw_done(); … … 53 54 { 54 55 va_list list; 55 structofw_args_t args;56 ofw_args_t args; 56 57 int i; 57 58 … … 78 79 return; 79 80 80 ofw_call("write", 3, 1, ofw_stdout, ch, 1); 81 ofw_call("write", 3, 1, ofw_stdout, &ch, 1); 82 } 83 84 phandle ofw_find_device(const char *name) 85 { 86 return ofw_call("finddevice", 1, 1, name); 87 } 88 89 int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen) 90 { 91 return ofw_call("getprop", 4, 1, device, name, buf, buflen); 81 92 } 82 93 -
arch/ppc/src/dummy.s
rdb5e25f r10caad0 30 30 31 31 .global memcopy 32 .global cpu_priority_high33 .global cpu_priority_low34 32 .global cpu_priority_read 35 .global cpu_priority_restore36 33 .global memsetb 37 34 .global context_save … … 39 36 .global userspace 40 37 .global before_thread_runs_arch 41 .global panic_printf42 38 .global cpu_identify 43 39 .global cpu_arch_init 44 40 .global cpu_print_report 45 .global get_memory_size46 41 .global arch_pre_mm_init 47 42 .global arch_post_mm_init … … 52 47 53 48 memcopy: 54 cpu_priority_high:55 cpu_priority_low:56 cpu_priority_restore:57 49 cpu_priority_read: 58 50 memsetb: … … 63 55 calibrate_delay_loop: 64 56 asm_delay_loop: 65 panic_printf:66 57 cpu_identify: 67 58 cpu_arch_init: 68 59 cpu_print_report: 69 get_memory_size:70 60 arch_pre_mm_init: 71 61 arch_post_mm_init: -
arch/ppc/src/start.S
rdb5e25f r10caad0 27 27 # 28 28 29 #include <arch/asm/macro.h> 30 29 31 .section K_TEXT_START 30 32
Note:
See TracChangeset
for help on using the changeset viewer.