summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/amd64/amd64/mpboot.S4
-rw-r--r--sys/i386/i386/mpboot.s4
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/amd64/amd64/mpboot.S b/sys/amd64/amd64/mpboot.S
index ac24c66..d3602d2 100644
--- a/sys/amd64/amd64/mpboot.S
+++ b/sys/amd64/amd64/mpboot.S
@@ -121,6 +121,8 @@ mp_begin: /* now running relocated at KERNBASE */
call _ap_init
call _rel_mplock
+ lock /* Avoid livelock (PIII Errata 39) */
+ addl $0,-4(%esp)
2:
cmpl $0, CNAME(smp_started) /* Wait for last AP to be ready */
jz 2b
@@ -133,6 +135,8 @@ NON_GPROF_ENTRY(wait_ap)
pushl %ebp
movl %esp, %ebp
call _rel_mplock
+ lock /* Avoid livelock (PIII Errata 39) */
+ addl $0,0(%esp)
movl %eax, 8(%ebp)
1:
cmpl $0, CNAME(smp_started)
diff --git a/sys/i386/i386/mpboot.s b/sys/i386/i386/mpboot.s
index ac24c66..d3602d2 100644
--- a/sys/i386/i386/mpboot.s
+++ b/sys/i386/i386/mpboot.s
@@ -121,6 +121,8 @@ mp_begin: /* now running relocated at KERNBASE */
call _ap_init
call _rel_mplock
+ lock /* Avoid livelock (PIII Errata 39) */
+ addl $0,-4(%esp)
2:
cmpl $0, CNAME(smp_started) /* Wait for last AP to be ready */
jz 2b
@@ -133,6 +135,8 @@ NON_GPROF_ENTRY(wait_ap)
pushl %ebp
movl %esp, %ebp
call _rel_mplock
+ lock /* Avoid livelock (PIII Errata 39) */
+ addl $0,0(%esp)
movl %eax, 8(%ebp)
1:
cmpl $0, CNAME(smp_started)
OpenPOWER on IntegriCloud