Changeset 5387807 in mainline
- Timestamp:
- 2010-06-17T20:58:50Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8ef40329
- Parents:
- d0c82c5 (diff), 3193c05 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
boot/arch/ia64/Makefile.inc
rd0c82c5 r5387807 38 38 RD_SRVS_NON_ESSENTIAL += 39 39 40 RD_SRVS_ESSENTIAL += 40 RD_SRVS_ESSENTIAL += \ 41 $(USPACE_PATH)/srv/hw/char/i8042/i8042 41 42 42 43 SOURCES = \ -
boot/arch/ia64/src/asm.S
rd0c82c5 r5387807 97 97 adds r15 = -1, r15 98 98 add r17 = r14, in1 99 (p6) br.cond.dpnt 2b 99 (p6) br.cond.dpnt 2b ;; 100 100 mov ar.lc = r15 101 101 6: … … 112 112 113 113 jump_to_kernel: 114 115 mov r1 = in0; # Pass bootinfo address116 117 118 114 alloc loc0 = ar.pfs, 1, 1, 0, 0 115 mov r1 = in0 ;; # Pass bootinfo address 116 movl r8 = KERNEL_ADDRESS;; 117 mov b1 = r8 ;; 118 br.call.sptk.many b0 = b1;; -
boot/arch/ia64/src/boot.S
rd0c82c5 r5387807 51 51 add r12 = -16, r12 52 52 53 ssm (1 << 19) ;; /* disable f32 - f127 */ 53 # 54 # Disable Floating-point High register set (f32 - f127) 55 # 56 ssm (1 << 19) ;; 54 57 srlz.i 55 58 srlz.d ;; 56 59 57 movl r18 = bootstrap ;; 58 mov b1 = r18 ;; 59 br.call.sptk.many b0 = b1 60 br.call.sptk.many rp = bootstrap 60 61 61 62 .bss -
kernel/arch/ia64/src/drivers/ski.c
rd0c82c5 r5387807 216 216 * self-sufficient. 217 217 */ 218 sysinfo_set_item_val("fb ", NULL, false);218 sysinfo_set_item_val("fb.kind", NULL, 6); 219 219 220 220 fb_exported = true; -
kernel/arch/ia64/src/smp/smp.c
rd0c82c5 r5387807 33 33 */ 34 34 35 #include <arch.h>36 #include <arch/drivers/ski.h>37 #include <arch/drivers/it.h>38 #include <arch/interrupt.h>39 #include <arch/barrier.h>40 #include <arch/asm.h>41 #include <arch/register.h>42 #include <typedefs.h>43 #include <arch/context.h>44 #include <arch/stack.h>45 #include <arch/mm/page.h>46 #include <mm/as.h>47 #include <config.h>48 #include <userspace.h>49 #include <console/console.h>50 #include <proc/uarg.h>51 #include <syscall/syscall.h>52 #include <ddi/irq.h>53 #include <ddi/device.h>54 #include <arch/bootinfo.h>55 35 #include <smp/smp.h> 56 36 #include <smp/ipi.h> 57 #include <arch/atomic.h>58 #include <panic.h>59 #include <print.h>60 37 61 38 #ifdef CONFIG_SMP 62 39 63 extern char cpu_by_id_eid_list[256][256]; 64 65 static void sapic_init(void) 40 void ipi_broadcast_arch(int ipi) 66 41 { 67 bootinfo->sapic = (unative_t *)(PA2KA((unative_t)(bootinfo->sapic)) |68 FW_OFFSET);69 }70 71 static void ipi_broadcast_arch_all(int ipi)72 {73 int id, eid;74 int myid, myeid;75 76 myid = ia64_get_cpu_id();77 myeid = ia64_get_cpu_eid();78 79 for (id = 0; id < 256; id++)80 for (eid = 0; eid < 256; eid++)81 if ((id != myid) || (eid != myeid))82 ipi_send_ipi(id, eid, ipi);83 }84 85 void ipi_broadcast_arch(int ipi )86 {87 int id, eid;88 int myid, myeid;89 90 myid = ia64_get_cpu_id();91 myeid = ia64_get_cpu_eid();92 93 for (id = 0; id < 256; id++)94 for (eid = 0; eid < 256; eid++)95 if ((id != myid) || (eid != myeid))96 if (cpu_by_id_eid_list[id][eid])97 ipi_send_ipi(id, eid, ipi);98 42 } 99 43 100 44 void smp_init(void) 101 45 { 102 if (!bootinfo->hello_configured)103 return;104 105 /*106 * If we have not got system prepared by hello, we are not able to start107 * AP's. This means we are running on a simulator.108 */109 110 sapic_init();111 ipi_broadcast_arch_all(bootinfo->wakeup_intno);112 volatile long long brk;113 for (brk = 0; brk < 100LL * 1024LL * 1024LL; brk++)114 ; /* wait a while before CPUs starts */115 116 config.cpu_count = 0;117 int id, eid;118 119 for (id = 0; id < 256; id++)120 for (eid = 0; eid < 256; eid++)121 if (cpu_by_id_eid_list[id][eid] == 1) {122 config.cpu_count++;123 cpu_by_id_eid_list[id][eid] = 2;124 }125 46 } 126 47 127 48 void kmp(void *arg __attribute__((unused))) 128 49 { 129 int id, eid;130 int myid, myeid;131 132 myid = ia64_get_cpu_id();133 myeid = ia64_get_cpu_eid();134 135 for (id = 0; id < 256; id++)136 for (eid = 0; eid < 256; eid++)137 if ((id != myid) || (eid != myeid))138 if (cpu_by_id_eid_list[id][eid] != 0) {139 if (cpu_by_id_eid_list[id][eid] == 1) {140 printf("Found Late CPU ID:%d "141 "EDI:%d Not added to "142 "system!!!\n", id, eid);143 continue;144 }145 cpu_by_id_eid_list[id][eid] = 3;146 /*147 * There may be just one AP being148 * initialized at the time. After149 * it comes completely up, it is150 * supposed to wake us up.151 */152 if (waitq_sleep_timeout(153 &ap_completion_wq, 1000000,154 SYNCH_FLAGS_NONE) ==155 ESYNCH_TIMEOUT) {156 printf("%s: waiting for cpu "157 "ID:%d EID:%d timed out\n",158 __FUNCTION__, id, eid);159 }160 }161 50 } 162 51 -
kernel/arch/ia64/src/start.S
rd0c82c5 r5387807 49 49 kernel_image_start: 50 50 .auto 51 52 #ifdef CONFIG_SMP53 # Identify self(CPU) in OS structures by ID / EID54 55 mov r9 = cr6456 mov r10 = 157 movl r12 = 0xffffffff58 movl r8 = cpu_by_id_eid_list59 and r8 = r8, r1260 shr r9 = r9, 1661 add r8 = r8, r962 st1 [r8] = r1063 #endif64 51 65 52 mov psr.l = r0 … … 164 151 bsw.1 165 152 166 #ifdef CONFIG_SMP167 # Am I BSP or AP?168 movl r20 = bsp_started ;;169 ld8 r20 = [r20] ;;170 cmp.eq p3, p2 = r20, r0 ;;171 #else172 cmp.eq p3, p2 = r0, r0 ;; /* you are BSP */173 #endif /* CONFIG_SMP */174 175 153 # Initialize register stack 176 154 mov ar.rsc = r0 … … 191 169 * Initialize bootinfo on BSP. 192 170 */ 193 (p3)addl r21 = @gprel(bootinfo), gp ;;194 (p3)st8 [r21] = r20171 addl r21 = @gprel(bootinfo), gp ;; 172 st8 [r21] = r20 195 173 196 174 ssm (1 << 19) ;; /* Disable f32 - f127 */ … … 198 176 srlz.d ;; 199 177 200 #ifdef CONFIG_SMP201 (p2) movl r18 = main_ap ;;202 (p2) mov b1 = r18 ;;203 (p2) br.call.sptk.many b0 = b1204 205 # Mark that BSP is on206 207 mov r20 = 1 ;;208 movl r21 = bsp_started ;;209 st8 [r21] = r20 ;;210 #endif211 212 178 br.call.sptk.many b0 = arch_pre_main 213 214 movl r18 = main_bsp ;; 215 mov b1 = r18 ;; 216 br.call.sptk.many b0 = b1 217 179 0: 180 br.call.sptk.many b0 = main_bsp 218 181 0: 219 182 br 0b 220 221 #ifdef CONFIG_SMP222 223 .align 4096224 kernel_image_ap_start:225 .auto226 227 # Identify self(CPU) in OS structures by ID / EID228 229 mov r9 = cr64230 mov r10 = 1231 movl r12 = 0xffffffff232 movl r8 = cpu_by_id_eid_list233 and r8 = r8, r12234 shr r9 = r9, 16235 add r8 = r8, r9236 st1 [r8] = r10237 238 # Wait for wakeup synchro signal (#3 in cpu_by_id_eid_list)239 240 kernel_image_ap_start_loop:241 movl r11 = kernel_image_ap_start_loop242 and r11 = r11, r12243 mov b1 = r11244 245 ld1 r20 = [r8]246 movl r21 = 3247 cmp.eq p2, p3 = r20, r21248 (p3) br.call.sptk.many b0 = b1249 250 movl r11 = kernel_image_start251 and r11 = r11, r12252 mov b1 = r11253 br.call.sptk.many b0 = b1254 255 .align 16256 .global bsp_started257 bsp_started:258 .space 8259 260 .align 4096261 .global cpu_by_id_eid_list262 cpu_by_id_eid_list:263 .space 65536264 265 #endif /* CONFIG_SMP */ -
uspace/srv/hid/fb/main.c
rd0c82c5 r5387807 105 105 #endif 106 106 #ifdef SKI_ENABLED 107 if ((!initialized) && ( !fb_present)) {107 if ((!initialized) && (fb_kind == 6)) { 108 108 if (ski_init() == 0) 109 109 initialized = true;
Note:
See TracChangeset
for help on using the changeset viewer.