summaryrefslogtreecommitdiff
path: root/core/lwip
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2012-05-29 21:08:20 -0700
committerH. Peter Anvin <hpa@zytor.com>2012-05-29 21:08:20 -0700
commit79312306de0150ef64213ef9fbc5aa8580544f03 (patch)
treee3d85a50932195f16a7ff4eb572893b501f6c989 /core/lwip
parent6d8a787f6795a40cd4b285ee5fda78306d51b55d (diff)
downloadsyslinux-79312306de0150ef64213ef9fbc5aa8580544f03.tar.gz
pxe: use core for atomic modification of certain volatilessyslinux-4.10-pre22lwip
pxe_need_poll and pxe_irq_count can be accessed from an interrupt handler, so make sure that we modify them in a way that is locally atomic. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'core/lwip')
-rw-r--r--core/lwip/src/netif/undiif.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/core/lwip/src/netif/undiif.c b/core/lwip/src/netif/undiif.c
index b82b6f32..2c7e4ac4 100644
--- a/core/lwip/src/netif/undiif.c
+++ b/core/lwip/src/netif/undiif.c
@@ -313,8 +313,8 @@ undi_transmit(struct netif *netif, struct pbuf *pbuf,
first_xmit = now;
} else if (now - first_xmit > 3000) {
/* 3 seconds after first transmit, and no interrupts */
- pxe_need_poll |= 1;
- pxe_irq_count++; /* We don't need to do this again... */
+ asm volatile("orb $1,%0" : "+m" (pxe_need_poll));
+ asm volatile("incl %0" : "+m" (pxe_irq_count));
}
}