Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Mar 2009 12:11:46 -0800
From:      Kip Macy <kmacy@freebsd.org>
To:        Ivan Voras <ivoras@freebsd.org>
Cc:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   Re: svn commit: r189470 - in user/kmacy/releng_7_net_backport/sys:  amd64/include arm/include dev/bce dev/mxge i386/include ia64/include powerpc/include sparc64/include sun4v/include
Message-ID:  <3c1674c90903071211y29ea8ee6u412352faf9cd108f@mail.gmail.com>
In-Reply-To: <9bbcef730903070240t2068f43em9b0017b10ba992e4@mail.gmail.com>
References:  <200903070118.n271IL5p034118@svn.freebsd.org> <9bbcef730903070240t2068f43em9b0017b10ba992e4@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
The names are what are used in Linux. There are a number of drivers in
the tree that share code with Linux that #define them in a platform
dependent way.

-Kip

On Sat, Mar 7, 2009 at 2:40 AM, Ivan Voras <ivoras@freebsd.org> wrote:
> Hi,
>
> Are these names taken from some standard? I'm not strongly arguing
> against them but naming something "mb" and such introduces great
> potential for conflicts with local code. (Not the actual choice of
> letters but that they are two and three-characters long identifiers).
> Maybe something like membar, membar_read, membar_write would be
> better?
>
> But I see this is merged from existing code so it's probably too late...
>
>
> 2009/3/7 Kip Macy <kmacy@freebsd.org>:
>> Author: kmacy
>> Date: Sat Mar =A07 01:18:21 2009
>> New Revision: 189470
>> URL: http://svn.freebsd.org/changeset/base/189470
>>
>> Log:
>> =A0 multiq step 1:
>> =A0 - atomic_barriers: add atomic barriers to atomic.h on all architectu=
res
>>
>> Modified:
>> =A0user/kmacy/releng_7_net_backport/sys/amd64/include/atomic.h
>> =A0user/kmacy/releng_7_net_backport/sys/arm/include/atomic.h
>> =A0user/kmacy/releng_7_net_backport/sys/dev/bce/if_bcereg.h
>> =A0user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge.c
>> =A0user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge_var.h
>> =A0user/kmacy/releng_7_net_backport/sys/i386/include/atomic.h
>> =A0user/kmacy/releng_7_net_backport/sys/ia64/include/atomic.h
>> =A0user/kmacy/releng_7_net_backport/sys/powerpc/include/atomic.h
>> =A0user/kmacy/releng_7_net_backport/sys/sparc64/include/atomic.h
>> =A0user/kmacy/releng_7_net_backport/sys/sun4v/include/atomic.h
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/amd64/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/amd64/include/atomic.h Sat Mar =
=A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/amd64/include/atomic.h Sat Mar =
=A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -32,6 +32,10 @@
>> =A0#error this file needs sys/cdefs.h as a prerequisite
>> =A0#endif
>>
>> +#define mb() =A0 __asm__ __volatile__ ("mfence;": : :"memory")
>> +#define wmb() =A0__asm__ __volatile__ ("sfence;": : :"memory")
>> +#define rmb() =A0__asm__ __volatile__ ("lfence;": : :"memory")
>> +
>> =A0/*
>> =A0* Various simple operations on memory, each of which is atomic in the
>> =A0* presence of interrupts and multiple processors.
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/arm/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/arm/include/atomic.h =A0 Sat Ma=
r =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/arm/include/atomic.h =A0 Sat Ma=
r =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -45,6 +45,10 @@
>>
>> =A0#include <sys/types.h>
>>
>> +#define =A0 =A0 =A0 =A0mb()
>> +#define =A0 =A0 =A0 =A0wmb()
>> +#define =A0 =A0 =A0 =A0rmb()
>> +
>> =A0#ifndef I32_bit
>> =A0#define I32_bit (1 << 7) =A0 =A0 =A0 =A0/* IRQ disable */
>> =A0#endif
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/dev/bce/if_bcereg.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/dev/bce/if_bcereg.h =A0 =A0Sat =
Mar =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/dev/bce/if_bcereg.h =A0 =A0Sat =
Mar =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -557,6 +557,8 @@
>>
>> =A0#endif /* BCE_DEBUG */
>>
>> +
>> +#if __FreeBSD_version < 701101
>> =A0#if defined(__i386__) || defined(__amd64__)
>> =A0#define mb() =A0 =A0__asm volatile("mfence" ::: "memory")
>> =A0#define wmb() =A0 __asm volatile("sfence" ::: "memory")
>> @@ -566,6 +568,7 @@
>> =A0#define rmb()
>> =A0#define wmb()
>> =A0#endif
>> +#endif
>>
>> =A0/********************************************************************=
********/
>> =A0/* Device identification definitions. =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 */
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge.c =A0 =A0 Sat =
Mar =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge.c =A0 =A0 Sat =
Mar =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -747,9 +747,9 @@ mxge_load_firmware_helper(mxge_softc_t *
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0mxge_pio_copy(sc->sram + MXGE_FW_OFFSET +=
 i,
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0inflate_buffe=
r + i,
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0min(256U, (un=
signed)(fw_len - i)));
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0dummy =3D *sc->sram;
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0}
>>
>> =A0 =A0 =A0 =A0*limit =3D fw_len;
>> @@ -782,7 +782,7 @@ mxge_dummy_rdma(mxge_softc_t *sc, int en
>> =A0 =A0 =A0 =A0/* clear confirmation addr */
>> =A0 =A0 =A0 =A0confirm =3D (volatile uint32_t *)sc->cmd;
>> =A0 =A0 =A0 =A0*confirm =3D 0;
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>>
>> =A0 =A0 =A0 =A0/* send an rdma command to the PCIe engine, and wait for =
the
>> =A0 =A0 =A0 =A0 =A0 response in the confirmation address. =A0The firmwar=
e should
>> @@ -804,9 +804,9 @@ mxge_dummy_rdma(mxge_softc_t *sc, int en
>> =A0 =A0 =A0 =A0submit =3D (volatile char *)(sc->sram + MXGEFW_BOOT_DUMMY=
_RDMA);
>>
>> =A0 =A0 =A0 =A0mxge_pio_copy(submit, buf, 64);
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0DELAY(1000);
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0i =3D 0;
>> =A0 =A0 =A0 =A0while (*confirm !=3D 0xffffffff && i < 20) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0DELAY(1000);
>> @@ -844,7 +844,7 @@ mxge_send_cmd(mxge_softc_t *sc, uint32_t
>> =A0 =A0 =A0 =A0buf->response_addr.high =3D htobe32(dma_high);
>> =A0 =A0 =A0 =A0mtx_lock(&sc->cmd_mtx);
>> =A0 =A0 =A0 =A0response->result =3D 0xffffffff;
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0mxge_pio_copy((volatile void *)cmd_addr, buf, sizeof (*bu=
f));
>>
>> =A0 =A0 =A0 =A0/* wait up to 20ms */
>> @@ -852,7 +852,7 @@ mxge_send_cmd(mxge_softc_t *sc, uint32_t
>> =A0 =A0 =A0 =A0for (sleep_total =3D 0; sleep_total < =A020; sleep_total+=
+) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bus_dmamap_sync(sc->cmd_dma.dmat,
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0sc->cmd_d=
ma.map, BUS_DMASYNC_POSTREAD);
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0switch (be32toh(response->result)) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case 0:
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0data->data0 =3D be32toh(r=
esponse->data);
>> @@ -980,7 +980,7 @@ mxge_load_firmware(mxge_softc_t *sc, int
>> =A0 =A0 =A0 =A0/* clear confirmation addr */
>> =A0 =A0 =A0 =A0confirm =3D (volatile uint32_t *)sc->cmd;
>> =A0 =A0 =A0 =A0*confirm =3D 0;
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0/* send a reload command to the bootstrap MCP, and wait f=
or the
>> =A0 =A0 =A0 =A0 =A0 response in the confirmation address. =A0The firmwar=
e should
>> =A0 =A0 =A0 =A0 =A0 write a -1 there to indicate it is alive and well
>> @@ -1005,9 +1005,9 @@ mxge_load_firmware(mxge_softc_t *sc, int
>>
>> =A0 =A0 =A0 =A0submit =3D (volatile char *)(sc->sram + MXGEFW_BOOT_HANDO=
FF);
>> =A0 =A0 =A0 =A0mxge_pio_copy(submit, buf, 64);
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0DELAY(1000);
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0i =3D 0;
>> =A0 =A0 =A0 =A0while (*confirm !=3D 0xffffffff && i < 20) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0DELAY(1000*10);
>> @@ -1668,7 +1668,7 @@ mxge_submit_req_backwards(mxge_tx_ring_t
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 idx =3D (starting_slot + cnt) & tx->mask=
;
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mxge_pio_copy(&tx->lanai[idx],
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0&src[cnt], si=
zeof(*src));
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0mb();
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0wmb();
>> =A0 =A0 =A0 =A0 }
>> =A0}
>>
>> @@ -1694,14 +1694,14 @@ mxge_submit_req(mxge_tx_ring_t *tx, mcp_
>>
>> =A0 =A0 =A0 =A0last_flags =3D src->flags;
>> =A0 =A0 =A0 =A0src->flags =3D 0;
>> - =A0 =A0 =A0 =A0mb();
>> + =A0 =A0 =A0 =A0wmb();
>> =A0 =A0 =A0 =A0 dst =3D dstp =3D &tx->lanai[idx];
>> =A0 =A0 =A0 =A0 srcp =3D src;
>>
>> =A0 =A0 =A0 =A0 if ((idx + cnt) < tx->mask) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 for (i =3D 0; i < (cnt - 1); i +=3D 2) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mxge_pio_copy(dstp, srcp=
, 2 * sizeof(*src));
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0mb(); /* force write ev=
ery 32 bytes */
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0wmb(); /* force write e=
very 32 bytes */
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 srcp +=3D 2;
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 dstp +=3D 2;
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
>> @@ -1714,7 +1714,7 @@ mxge_submit_req(mxge_tx_ring_t *tx, mcp_
>> =A0 =A0 =A0 =A0 if (i < cnt) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* submit the first request */
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mxge_pio_copy(dstp, srcp, sizeof(*src));
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0mb(); /* barrier before setting valid f=
lag */
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0wmb(); /* barrier before setting valid =
flag */
>> =A0 =A0 =A0 =A0 }
>>
>> =A0 =A0 =A0 =A0 /* re-write the last 32-bits with the valid flags */
>> @@ -1725,7 +1725,7 @@ mxge_submit_req(mxge_tx_ring_t *tx, mcp_
>> =A0 =A0 =A0 =A0 dst_ints+=3D3;
>> =A0 =A0 =A0 =A0 *dst_ints =3D =A0*src_ints;
>> =A0 =A0 =A0 =A0 tx->req +=3D cnt;
>> - =A0 =A0 =A0 =A0mb();
>> + =A0 =A0 =A0 =A0wmb();
>> =A0}
>>
>> =A0#if IFCAP_TSO4
>> @@ -2144,12 +2144,12 @@ mxge_submit_8rx(volatile mcp_kreq_ether_
>> =A0 =A0 =A0 =A0low =3D src->addr_low;
>> =A0 =A0 =A0 =A0src->addr_low =3D 0xffffffff;
>> =A0 =A0 =A0 =A0mxge_pio_copy(dst, src, 4 * sizeof (*src));
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0mxge_pio_copy(dst + 4, src + 4, 4 * sizeof (*src));
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0src->addr_low =3D low;
>> =A0 =A0 =A0 =A0dst->addr_low =3D low;
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0}
>>
>> =A0static int
>> @@ -2736,7 +2736,7 @@ mxge_intr(void *arg)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0send_done_count =3D be32t=
oh(stats->send_done_count);
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (sc->legacy_irq && mxge_deassert_wait)
>> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0} while (*((volatile uint8_t *) &stats->valid));
>>
>> =A0 =A0 =A0 =A0if (__predict_false(stats->stats_updated)) {
>> @@ -3385,7 +3385,7 @@ mxge_close(mxge_softc_t *sc)
>> =A0 =A0 =A0 =A0callout_stop(&sc->co_hdl);
>> =A0 =A0 =A0 =A0sc->ifp->if_drv_flags &=3D ~IFF_DRV_RUNNING;
>> =A0 =A0 =A0 =A0old_down_cnt =3D sc->down_cnt;
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0err =3D mxge_send_cmd(sc, MXGEFW_CMD_ETHERNET_DOWN, &cmd)=
;
>> =A0 =A0 =A0 =A0if (err) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device_printf(sc->dev, "Couldn't bring do=
wn link\n");
>> @@ -3394,7 +3394,7 @@ mxge_close(mxge_softc_t *sc)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* wait for down irq */
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0DELAY(10 * sc->intr_coal_delay);
>> =A0 =A0 =A0 =A0}
>> - =A0 =A0 =A0 mb();
>> + =A0 =A0 =A0 wmb();
>> =A0 =A0 =A0 =A0if (old_down_cnt =3D=3D sc->down_cnt) {
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device_printf(sc->dev, "never got down ir=
q\n");
>> =A0 =A0 =A0 =A0}
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge_var.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge_var.h Sat Mar =
=A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/dev/mxge/if_mxge_var.h Sat Mar =
=A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -282,6 +282,8 @@ struct mxge_media_type
>> =A0/* implement our own memory barriers, since bus_space_barrier
>> =A0 =A0cannot handle write-combining regions */
>>
>> +#if __FreeBSD_version < 701101
>> +
>> =A0#if defined (__GNUC__)
>> =A0 #if #cpu(i386) || defined __i386 || defined i386 || defined __i386__=
 || #cpu(x86_64) || defined __x86_64__
>> =A0 =A0 #define mb() =A0__asm__ __volatile__ ("sfence;": : :"memory")
>> @@ -296,6 +298,8 @@ struct mxge_media_type
>> =A0 #error "unknown compiler"
>> =A0#endif
>>
>> +#endif
>> +
>> =A0static inline void
>> =A0mxge_pio_copy(volatile void *to_v, void *from_v, size_t size)
>> =A0{
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/i386/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/i386/include/atomic.h =A0Sat Ma=
r =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/i386/include/atomic.h =A0Sat Ma=
r =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -32,6 +32,47 @@
>> =A0#error this file needs sys/cdefs.h as a prerequisite
>> =A0#endif
>>
>> +#if defined(_KERNEL)
>> +#include <machine/cpufunc.h>
>> +#include <machine/specialreg.h>
>> +#define =A0 =A0 =A0 =A0mb() =A0 =A0__asm __volatile( =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 \
>> + =A0 =A0 =A0 "testl =A0%0,cpu_feature =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 je =A0 =A0 =A02f =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 mfence =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> +1: =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \n\
>> + =A0 =A0 =A0 .section .text.offpath =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0\n\
>> +2: =A0 =A0 lock =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 addl =A0 =A0$0,cpu_feature =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 jmp =A0 =A0 1b =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 .text =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \n\
>> +" =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\
>> + =A0 =A0 =A0 : : "i"(CPUID_SSE2) : "memory")
>> +#define =A0 =A0 =A0 =A0wmb() =A0 __asm __volatile( =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 \
>> + =A0 =A0 =A0 "testl =A0%0,cpu_feature =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 je =A0 =A0 =A02f =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 sfence =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> +1: =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \n\
>> + =A0 =A0 =A0 .section .text.offpath =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0\n\
>> +2: =A0 =A0 lock =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 addl =A0 =A0$0,cpu_feature =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 jmp =A0 =A0 1b =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 .text =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \n\
>> +" =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\
>> + =A0 =A0 =A0 : : "i"(CPUID_XMM) : "memory")
>> +#define =A0 =A0 =A0 =A0rmb() =A0 __asm __volatile( =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 \
>> + =A0 =A0 =A0 "testl =A0%0,cpu_feature =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 je =A0 =A0 =A02f =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 lfence =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> +1: =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \n\
>> + =A0 =A0 =A0 .section .text.offpath =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0\n\
>> +2: =A0 =A0 lock =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 addl =A0 =A0$0,cpu_feature =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 jmp =A0 =A0 1b =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\n\
>> + =A0 =A0 =A0 .text =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 \n\
>> +" =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\
>> + =A0 =A0 =A0 : : "i"(CPUID_SSE2) : "memory")
>> +#endif
>> +
>> =A0/*
>> =A0* Various simple operations on memory, each of which is atomic in the
>> =A0* presence of interrupts and multiple processors.
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/ia64/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/ia64/include/atomic.h =A0Sat Ma=
r =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/ia64/include/atomic.h =A0Sat Ma=
r =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -29,6 +29,10 @@
>> =A0#ifndef _MACHINE_ATOMIC_H_
>> =A0#define =A0 =A0 =A0 =A0_MACHINE_ATOMIC_H_
>>
>> +#define =A0 =A0 =A0 =A0mb()
>> +#define =A0 =A0 =A0 =A0wmb()
>> +#define =A0 =A0 =A0 =A0rmb()
>> +
>> =A0/*
>> =A0* Various simple arithmetic on memory which is atomic in the presence
>> =A0* of interrupts and SMP safe.
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/powerpc/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/powerpc/include/atomic.h =A0 =
=A0 =A0 Sat Mar =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/powerpc/include/atomic.h =A0 =
=A0 =A0 Sat Mar =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -39,6 +39,10 @@
>> =A0#define =A0 =A0 =A0 =A0__ATOMIC_BARRIER =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0\
>> =A0 =A0 __asm __volatile("sync" : : : "memory")
>>
>> +#define mb() =A0 __ATOMIC_BARRIER
>> +#define =A0 =A0 =A0 =A0wmb() =A0 mb()
>> +#define =A0 =A0 =A0 =A0rmb() =A0 mb()
>> +
>> =A0/*
>> =A0* atomic_add(p, v)
>> =A0* { *p +=3D v; }
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/sparc64/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/sparc64/include/atomic.h =A0 =
=A0 =A0 Sat Mar =A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/sparc64/include/atomic.h =A0 =
=A0 =A0 Sat Mar =A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -40,6 +40,10 @@
>> =A0#define =A0 =A0 =A0 =A0__ASI_ATOMIC =A0 =A0ASI_P
>> =A0#endif
>>
>> +#define mb() =A0 __asm__ __volatile__ ("membar #MemIssue": : :"memory")
>> +#define wmb() =A0mb()
>> +#define rmb() =A0mb()
>> +
>> =A0/*
>> =A0* Various simple arithmetic on memory which is atomic in the presence
>> =A0* of interrupts and multiple processors. =A0See atomic(9) for details=
.
>>
>> Modified: user/kmacy/releng_7_net_backport/sys/sun4v/include/atomic.h
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>> --- user/kmacy/releng_7_net_backport/sys/sun4v/include/atomic.h Sat Mar =
=A07 01:17:13 2009 =A0 =A0 =A0 =A0(r189469)
>> +++ user/kmacy/releng_7_net_backport/sys/sun4v/include/atomic.h Sat Mar =
=A07 01:18:21 2009 =A0 =A0 =A0 =A0(r189470)
>> @@ -33,6 +33,10 @@
>>
>> =A0#include <machine/cpufunc.h>
>>
>> +#define mb() =A0 __asm__ __volatile__ ("membar #MemIssue": : :"memory")
>> +#define wmb() =A0mb()
>> +#define rmb() =A0mb()
>> +
>> =A0/* Userland needs different ASI's. */
>> =A0#ifdef _KERNEL
>> =A0#define =A0 =A0 =A0 =A0__ASI_ATOMIC =A0 =A0ASI_N
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3c1674c90903071211y29ea8ee6u412352faf9cd108f>