View | Details | Raw Unified | Return to bug 233863 | Differences between
and this patch

Collapse All | Expand All

(-)/usr/src/sys/powerpc/powerpc/mp_machdep.c (working copy) (-1 / +9 lines)
Lines 77-85 Link Here
77
       PCPU_SET(awake, 1);
77
       PCPU_SET(awake, 1);
78
       __asm __volatile("msync; isync");
78
       __asm __volatile("msync; isync");
79
79
80
       powerpc_sync();
80
       while (ap_letgo == 0)
81
       while (ap_letgo == 0)
82
       {
81
               __asm __volatile("or 31,31,31");
83
               __asm __volatile("or 31,31,31");
84
               powerpc_sync();
85
       }
82
       __asm __volatile("or 6,6,6");
86
       __asm __volatile("or 6,6,6");
87
       isync();
83
88
84
       /*
89
       /*
85
        * Set timebase as soon as possible to meet an implicit rendezvous
90
        * Set timebase as soon as possible to meet an implicit rendezvous
Lines 262-269 Link Here
262
       __asm __volatile("msync; isync");
267
       __asm __volatile("msync; isync");
263
       
268
       
264
       /* Let APs continue */
269
       /* Let APs continue */
265
       atomic_store_rel_int(&ap_letgo, 1);
270
       ap_letgo= 1;    // depend on prior sync, no need to lwsync first
266
271
272
       powerpc_sync(); // analogous to what the ap's do (more similar time frame?)
273
       if (ap_letgo) isync();
274
267
       platform_smp_timebase_sync(ap_timebase, 0);
275
       platform_smp_timebase_sync(ap_timebase, 0);
268
276
269
       while (ap_awake < smp_cpus)
277
       while (ap_awake < smp_cpus)

Return to bug 233863