linux/Documentation/memory-barriers.txt
<<
>>
Prefs
   1                         ============================
   2                         LINUX KERNEL MEMORY BARRIERS
   3                         ============================
   4
   5By: David Howells <dhowells@redhat.com>
   6    Paul E. McKenney <paulmck@linux.vnet.ibm.com>
   7
   8Contents:
   9
  10 (*) Abstract memory access model.
  11
  12     - Device operations.
  13     - Guarantees.
  14
  15 (*) What are memory barriers?
  16
  17     - Varieties of memory barrier.
  18     - What may not be assumed about memory barriers?
  19     - Data dependency barriers.
  20     - Control dependencies.
  21     - SMP barrier pairing.
  22     - Examples of memory barrier sequences.
  23     - Read memory barriers vs load speculation.
  24     - Transitivity
  25
  26 (*) Explicit kernel barriers.
  27
  28     - Compiler barrier.
  29     - CPU memory barriers.
  30     - MMIO write barrier.
  31
  32 (*) Implicit kernel memory barriers.
  33
  34     - Locking functions.
  35     - Interrupt disabling functions.
  36     - Sleep and wake-up functions.
  37     - Miscellaneous functions.
  38
  39 (*) Inter-CPU locking barrier effects.
  40
  41     - Locks vs memory accesses.
  42     - Locks vs I/O accesses.
  43
  44 (*) Where are memory barriers needed?
  45
  46     - Interprocessor interaction.
  47     - Atomic operations.
  48     - Accessing devices.
  49     - Interrupts.
  50
  51 (*) Kernel I/O barrier effects.
  52
  53 (*) Assumed minimum execution ordering model.
  54
  55 (*) The effects of the cpu cache.
  56
  57     - Cache coherency.
  58     - Cache coherency vs DMA.
  59     - Cache coherency vs MMIO.
  60
  61 (*) The things CPUs get up to.
  62
  63     - And then there's the Alpha.
  64
  65 (*) Example uses.
  66
  67     - Circular buffers.
  68
  69 (*) References.
  70
  71
  72============================
  73ABSTRACT MEMORY ACCESS MODEL
  74============================
  75
  76Consider the following abstract model of the system:
  77
  78                            :                :
  79                            :                :
  80                            :                :
  81                +-------+   :   +--------+   :   +-------+
  82                |       |   :   |        |   :   |       |
  83                |       |   :   |        |   :   |       |
  84                | CPU 1 |<----->| Memory |<----->| CPU 2 |
  85                |       |   :   |        |   :   |       |
  86                |       |   :   |        |   :   |       |
  87                +-------+   :   +--------+   :   +-------+
  88                    ^       :       ^        :       ^
  89                    |       :       |        :       |
  90                    |       :       |        :       |
  91                    |       :       v        :       |
  92                    |       :   +--------+   :       |
  93                    |       :   |        |   :       |
  94                    |       :   |        |   :       |
  95                    +---------->| Device |<----------+
  96                            :   |        |   :
  97                            :   |        |   :
  98                            :   +--------+   :
  99                            :                :
 100
 101Each CPU executes a program that generates memory access operations.  In the
 102abstract CPU, memory operation ordering is very relaxed, and a CPU may actually
 103perform the memory operations in any order it likes, provided program causality
 104appears to be maintained.  Similarly, the compiler may also arrange the
 105instructions it emits in any order it likes, provided it doesn't affect the
 106apparent operation of the program.
 107
 108So in the above diagram, the effects of the memory operations performed by a
 109CPU are perceived by the rest of the system as the operations cross the
 110interface between the CPU and rest of the system (the dotted lines).
 111
 112
 113For example, consider the following sequence of events:
 114
 115        CPU 1           CPU 2
 116        =============== ===============
 117        { A == 1; B == 2 }
 118        A = 3;          x = A;
 119        B = 4;          y = B;
 120
 121The set of accesses as seen by the memory system in the middle can be arranged
 122in 24 different combinations:
 123
 124        STORE A=3,      STORE B=4,      x=LOAD A->3,    y=LOAD B->4
 125        STORE A=3,      STORE B=4,      y=LOAD B->4,    x=LOAD A->3
 126        STORE A=3,      x=LOAD A->3,    STORE B=4,      y=LOAD B->4
 127        STORE A=3,      x=LOAD A->3,    y=LOAD B->2,    STORE B=4
 128        STORE A=3,      y=LOAD B->2,    STORE B=4,      x=LOAD A->3
 129        STORE A=3,      y=LOAD B->2,    x=LOAD A->3,    STORE B=4
 130        STORE B=4,      STORE A=3,      x=LOAD A->3,    y=LOAD B->4
 131        STORE B=4, ...
 132        ...
 133
 134and can thus result in four different combinations of values:
 135
 136        x == 1, y == 2
 137        x == 1, y == 4
 138        x == 3, y == 2
 139        x == 3, y == 4
 140
 141
 142Furthermore, the stores committed by a CPU to the memory system may not be
 143perceived by the loads made by another CPU in the same order as the stores were
 144committed.
 145
 146
 147As a further example, consider this sequence of events:
 148
 149        CPU 1           CPU 2
 150        =============== ===============
 151        { A == 1, B == 2, C = 3, P == &A, Q == &C }
 152        B = 4;          Q = P;
 153        P = &B          D = *Q;
 154
 155There is an obvious data dependency here, as the value loaded into D depends on
 156the address retrieved from P by CPU 2.  At the end of the sequence, any of the
 157following results are possible:
 158
 159        (Q == &A) and (D == 1)
 160        (Q == &B) and (D == 2)
 161        (Q == &B) and (D == 4)
 162
 163Note that CPU 2 will never try and load C into D because the CPU will load P
 164into Q before issuing the load of *Q.
 165
 166
 167DEVICE OPERATIONS
 168-----------------
 169
 170Some devices present their control interfaces as collections of memory
 171locations, but the order in which the control registers are accessed is very
 172important.  For instance, imagine an ethernet card with a set of internal
 173registers that are accessed through an address port register (A) and a data
 174port register (D).  To read internal register 5, the following code might then
 175be used:
 176
 177        *A = 5;
 178        x = *D;
 179
 180but this might show up as either of the following two sequences:
 181
 182        STORE *A = 5, x = LOAD *D
 183        x = LOAD *D, STORE *A = 5
 184
 185the second of which will almost certainly result in a malfunction, since it set
 186the address _after_ attempting to read the register.
 187
 188
 189GUARANTEES
 190----------
 191
 192There are some minimal guarantees that may be expected of a CPU:
 193
 194 (*) On any given CPU, dependent memory accesses will be issued in order, with
 195     respect to itself.  This means that for:
 196
 197        Q = P; D = *Q;
 198
 199     the CPU will issue the following memory operations:
 200
 201        Q = LOAD P, D = LOAD *Q
 202
 203     and always in that order.
 204
 205 (*) Overlapping loads and stores within a particular CPU will appear to be
 206     ordered within that CPU.  This means that for:
 207
 208        a = *X; *X = b;
 209
 210     the CPU will only issue the following sequence of memory operations:
 211
 212        a = LOAD *X, STORE *X = b
 213
 214     And for:
 215
 216        *X = c; d = *X;
 217
 218     the CPU will only issue:
 219
 220        STORE *X = c, d = LOAD *X
 221
 222     (Loads and stores overlap if they are targeted at overlapping pieces of
 223     memory).
 224
 225And there are a number of things that _must_ or _must_not_ be assumed:
 226
 227 (*) It _must_not_ be assumed that independent loads and stores will be issued
 228     in the order given.  This means that for:
 229
 230        X = *A; Y = *B; *D = Z;
 231
 232     we may get any of the following sequences:
 233
 234        X = LOAD *A,  Y = LOAD *B,  STORE *D = Z
 235        X = LOAD *A,  STORE *D = Z, Y = LOAD *B
 236        Y = LOAD *B,  X = LOAD *A,  STORE *D = Z
 237        Y = LOAD *B,  STORE *D = Z, X = LOAD *A
 238        STORE *D = Z, X = LOAD *A,  Y = LOAD *B
 239        STORE *D = Z, Y = LOAD *B,  X = LOAD *A
 240
 241 (*) It _must_ be assumed that overlapping memory accesses may be merged or
 242     discarded.  This means that for:
 243
 244        X = *A; Y = *(A + 4);
 245
 246     we may get any one of the following sequences:
 247
 248        X = LOAD *A; Y = LOAD *(A + 4);
 249        Y = LOAD *(A + 4); X = LOAD *A;
 250        {X, Y} = LOAD {*A, *(A + 4) };
 251
 252     And for:
 253
 254        *A = X; *(A + 4) = Y;
 255
 256     we may get any of:
 257
 258        STORE *A = X; STORE *(A + 4) = Y;
 259        STORE *(A + 4) = Y; STORE *A = X;
 260        STORE {*A, *(A + 4) } = {X, Y};
 261
 262
 263=========================
 264WHAT ARE MEMORY BARRIERS?
 265=========================
 266
 267As can be seen above, independent memory operations are effectively performed
 268in random order, but this can be a problem for CPU-CPU interaction and for I/O.
 269What is required is some way of intervening to instruct the compiler and the
 270CPU to restrict the order.
 271
 272Memory barriers are such interventions.  They impose a perceived partial
 273ordering over the memory operations on either side of the barrier.
 274
 275Such enforcement is important because the CPUs and other devices in a system
 276can use a variety of tricks to improve performance, including reordering,
 277deferral and combination of memory operations; speculative loads; speculative
 278branch prediction and various types of caching.  Memory barriers are used to
 279override or suppress these tricks, allowing the code to sanely control the
 280interaction of multiple CPUs and/or devices.
 282
 283VARIETIES OF MEMORY BARRIER
 284---------------------------
 285
 286Memory barriers come in four basic varieties:
 287
 288 (1) Write (or store) memory barriers.
 289
 290     A write memory barrier gives a guarantee that all the STORE operations
 291     specified before the barrier will appear to happen before all the STORE
 292     operations specified after the barrier with respect to the other
 293     components of the system.
 294
 295     A write barrier is a partial ordering on stores only; it is not required
 296     to have any effect on loads.
 297
 298     A CPU can be viewed as committing a sequence of store operations to the
 299     memory system as time progresses.  All stores before a write barrier will
 300     occur in the sequence _before_ all the stores after the write barrier.
 30 *D
 302     [!] Note that write barriers should normally be paired with read or data
 303     dependency barriers; see the "SMP barrier pairing" subsection.
 304
 305
 306 (2) Data dependency barriers.
 307
 308     A data dependency barrier is a weaker form of read barrier.  In the case
 309     where two loads are performed such that the second depends on the result
 310     of the first (eg: the first load retrieves the address to which the second
 311     load will be directed), a data dependency barrier would be required to
 312     make sure that the target of the second load is updated before the address
 313     obtained by the first load is accessed.
 314
 315     A data dependency barrier is a partial ordering on interdependent loads
 316     only; it is not required to have any effect on stores, independent loads
 317     or overlapping loads.
 318
 319     As mentioned in (1), the other CPUs in the system can be viewed as
 320     committing sequences of stores to the memory system that the CPU being
 321     considered can then perceive.  A data dependency barrier issued by the CPU
 322     under consideration guarantees that for any load preceding it, if that
 323     load touches one of a sequence of stores from another CPU, then by the
 324     time the barrier completes, the effects of all the stores prior to that
 325     touched by the load will be perceptible to any loads issued after the data
 326     dependency barrier.
 327
 328     See the "Examples of memory barrier sequences" subsection for diagrams
 329     showing the ordering constraints.
 330
 331     [!] Note that the first load really has to have a _data_ dependency and
 332     not a control dependency.  If the address for the second load is dependent
 333     on the first load, but the dependency is through a conditional rather than
 334     actually loading the address itself, then it's a _control_ dependency and
 335     a full read barrier or better is required.  See the "Control dependencies"
 336     subsection for more information.
 337
 338     [!] Note that data dependency barriers should normally be paired with
 339     write barriers; see the "SMP barrier pairing" subsection.
 340
 341
 342 (3) Read (or load) memory barriers.
 343
 344     A read barrier is a data dependency barrier plus a guarantee that all the
 345     LOAD operations specified before the barrier will appear to happen before
 346     all the LOAD operations specified after the barrier with respect to the
 347     other components of the system.
 348
 349     A read barrier is a partial ordering on loads only; it is not required to
 350     have any effect on stores.
 351
 352     Read memory barriers imply data dependency barriers, and so can substitute
 353     for them.
 354
 355     [!] Note that read barriers should normally be paired with write barriers;
 356     see the "SMP barrier pairing" subsection.
 357
 358
 359 (4) General memory barriers.
 360
 361     A general memory barrier gives a guarantee that all the LOAD and STORE
 362     operations specified before the barrier will appear to happen before all
 363     the LOAD and STORE operations specified after the barrier with respect to
 364     the other components of the system.
 365
 366     A general memory barrier is a partial ordering over both loads and stores.
 367
 368     General memory barriers imply both read and write memory barriers, and so
 369     can substitute for either.
 370
 371
 372And a couple of implicit varieties:
 373
 374 (5) LOCK operations.
 375
 376     This acts as a one-way permeable barrier.  It guarantees that all memory
 377     operations after the LOCK operation will appear to happen after the LOCK
 378     operation with respect to the other components of the system.
 379
 380     Memory operations that occur before a LOCK operation may appear to happen
 382
 383     A LOCK operation should almost always be paired with an UNLOCK operation.
 384
 385
 386 (6) UNLOCK operations.
 387
 388     This also acts as a one-way permeable barrier.  It guarantees that all
 389     memory operations before the UNLOCK operation will appear to happen before
 390     the UNLOCK operation with respect to the other components of the system.
 391
 392     Memory operations that occur after an UNLOCK operation may appear to
 393     happen before it completes.
 394
 395     LOCK and UNLOCK operations are guaranteed to appear with respect to each
 396     other strictly in the order specified.
 397
 398     The use of LOCK and UNLOCK operations generally precludes the need for
 399     other sorts of memory barrier (but note the exceptions mentioned in the
 400     subsection "MMIO write barrier").
 40 *D
 402
 403Memory barriers are only required where there's a possibility of interaction
 404between two CPUs or between a CPU and a device.  If it can be guaranteed that
 405there won't be any such interaction in any particular piece of code, then
 406memory barriers are unnecessary in that piece of code.
 407
 408
 409Note that these are the _minimum_ guarantees.  Different architectures may give
 410more substantial guarantees, but they may _not_ be relied upon outside of arch
 411specific code.
 412
 413
 414WHAT MAY NOT BE ASSUMED ABOUT MEMORY BARRIERS?
 415----------------------------------------------
 416
 417There are certain things that the Linux kernel memory barriers do not guarantee:
 418
 419 (*) There is no guarantee that any of the memory accesses specified before a
 420     memory barrier will be _complete_ by the completion of a memory barrier
 421     instruction; the barrier can be considered to draw a line in that CPU's
 422     access queue that accesses of the appropriate type may not cross.
 423
 424 (*) There is no guarantee that issuing a memory barrier on one CPU will have
 425     any direct effect on another CPU or any other hardware in the system.  The
 426     indirect effect will be the order in which the second CPU sees the effects
 427     of the first CPU's accesses occur, but see the next point:
 428
 429 (*) There is no guarantee that a CPU will see the correct order of effects
 430     from a second CPU's accesses, even _if_ the second CPU uses a memory
 431     barrier, unless the first CPU _also_ uses a matching memory barrier (see
 432     the subsection on "SMP Barrier Pairing").
 433
 434 (*) There is no guarantee that some intervening piece of off-the-CPU
 435     hardware[*] will not reorder the memory accesses.  CPU cache coherency
 436     mechanisms should propagate the indirect effects of a memory barrier
 437     between CPUs, but might not do so in order.
 438
 439        [*] For information on bus mastering DMA and coherency please read:
 440
 441            Documentation/PCI/pci.txt
 442            Documentation/DMA-API-HOWTO.txt
 443            Documentation/DMA-API.txt
 444
 445
 446DATA DEPENDENCY BARRIERS
 447------------------------
 448
 449The usage requirements of data dependency barriers are a little subtle, and
 450it's not always obvious that they're needed.  To illustrate, consider the
 451following sequence of events:
 452
 453        CPU 1           CPU 2
 454        =============== ===============
 455        { A == 1, B == 2, C = 3, P == &A, Q == &C }
 456        B = 4;
 457        <write barrier>
 458        P = &B
 459                        Q = P;
 460                        D = *Q;
 461
 462There's a clear data dependency here, and it would seem that by the end of the
 463sequence, Q must be either &A or &B, and that:
 464
 465        (Q == &A) implies (D == 1)
 466        (Q == &B) implies (D == 4)
 467
 468But!  CPU 2's perception of P may be updated _before_ its perception of B, thus
 469leading to the following situation:
 470
 471        (Q == &B) and (D == 2) ????
 472
 473Whilst this may seem like a failure of coherency or causality maintenance, it
 474isn't, and this behaviour can be observed on certain real CPUs (such as the DEC
 475Alpha).
 476
 477To deal with this, a data dependency barrier or better must be inserted
 478between the address load and the data load:
 479
 480        CPU 1           CPU 2
 482        { A == 1, B == 2, C = 3, P == &A, Q == &C }
 483        B = 4;
 484        <write barrier>
 485        P = &B
 486                        Q = P;
 487                        <data dependency barrier>
 488                        D = *Q;
 489
 490This enforces the occurrence of one of the two implications, and prevents the
 491third possibility from arising.
 492
 493[!] Note that this extremely counterintuitive situation arises most easily on
 494machines with split caches, so that, for example, one cache bank processes
 495even-numbered cache lines and the other bank processes odd-numbered cache
 496lines.  The pointer P might be stored in an odd-numbered cache line, and the
 497variable B might be stored in an even-numbered cache line.  Then, if the
 498even-numbered bank of the reading CPU's cache is extremely busy while the
 499odd-numbered bank is idle, one can see the new value of the pointer P (&B),
 500but the old value of the variable B (2).
 50 *D
 502
 503Another example of where data dependency barriers might by required is where a
 504number is read from memory and then used to calculate the index for an array
 505access:
 506
 507        CPU 1           CPU 2
 508        =============== ===============
 509        { M[0] == 1, M[1] == 2, M[3] = 3, P == 0, Q == 3 }
 510        M[1] = 4;
 511        <write barrier>
 512        P = 1
 513                        Q = P;
 514                        <data dependency barrier>
 515                        D = M[Q];
 516
 517
 518The data dependency barrier is very important to the RCU system, for example.
 519See rcu_dereference() in include/linux/rcupdate.h.  This permits the current
 520target of an RCU'd pointer to be replaced with a new modified target, without
 521the replacement target appearing to be incompletely initialised.
 522
 523See also the subsection on "Cache Coherency" for a more thorough example.
 524
 525
 526CONTROL DEPENDENCIES
 527--------------------
 528
 529A control dependency requires a full read memory barrier, not simply a data
 530dependency barrier to make it work correctly.  Consider the following bit of
 531code:
 532
 533        q = &a;
 534        if (p)
 535                q = &b;
 536        <data dependency barrier>
 537        x = *q;
 538
 539This will not have the desired effect because there is no actual data
 540dependency, but rather a control dependency that the CPU may short-circuit by
 541attempting to predict the outcome in advance.  In such a case what's actually
 542required is:
 543
 544        q = &a;
 545        if (p)
 546                q = &b;
 547        <read barrier>
 548        x = *q;
 549
 550
 551SMP BARRIER PAIRING
 552-------------------
 553
 554When dealing with CPU-CPU interactions, certain types of memory barrier should
 555always be paired.  A lack of appropriate pairing is almost certainly an error.
 556
 557A write barrier should always be paired with a data dependency barrier or read
 558barrier, though a general barrier would also be viable.  Similarly a read
 559barrier or a data dependency barrier should always be paired with at least an
 560write barrier, though, again, a general barrier is viable:
 561
 562        CPU 1           CPU 2
 563        =============== ===============
 564        a = 1;
 565        <write barrier>
 566        b = 2;          x = b;
 567                        <read barrier>
 568                        y = a;
 569
 570Or:
 571
 572        CPU 1           CPU 2
 573        =============== ===============================
 574        a = 1;
 575        <write barrier>
 576        b = &a;         x = b;
 577                        <data dependency barrier>
 578                        y = *x;
 579
 580Basically, the read barrier always has to be there, even though it can be of
 582
 583[!] Note that the stores before the write barrier would normally be expected to
 584match the loads after the read barrier or the data dependency barrier, and vice
 585versa:
 586
 587        CPU 1                           CPU 2
 588        ===============                 ===============
 589        a = 1;           }----   --->{  v = c
 590        b = 2;           }    \ /    {  w = d
 591        <write barrier>        \        <read barrier>
 592        c = 3;           }    / \    {  x = a;
 593        d = 4;           }----   --->{  y = b;
 594
 595A == 1, B == 2, C = 3, P == &A, Q = class="line" name="L594"> 594

 367code:
 502
 503Another examp6e of 60 573        ==mory-barriers.txt#L503" id="L503" class="line6 3ame="L563riers.txt#L594" id="L596y-bar60 class="line" name="L574"> 5       }----   --->{  v = c
 506
 507        CPU 16     606<write ba class483        P = &B
 50 classtati4="Documentation/memory-barriers.txt#L459" id=6r9iers.tx6#href="Documentation/mem6 id="6510" class="li classEati5="Documentation/memory-barriers.txt#L459" id=6511" clas6="line" name="L511"> 5116/a>  61a href="Documentation/memory-barriers.txt#L552" id6#L512" id6"L512" class="line" name6"L5126> 512 43674"> 474t effect497"> 49> 36f="Documentation/memory-barriers.txt#L552" id6#name="L56ne" name="L513"> 5136     6       id="L584lastocumentation/m/a>numbng to> 49"Documeun9> 36e/a>stocum{a classAvariable B (2).
 514 classr,a class48} afteclass=ocume"line" namun9> 36e/a>stocum{a classD,a classEariable B (2).
 517
 518The data depe6dency61 458     |a>     |a>     +tion/m+emory-barriers.txt#L472" id="L472" clasIn/mem6 riers.tx6ref="Documentation/memor6-barr618458     |a>     |tion/mhref| C=3  |a>      d  /\emory-barriers.txt#L472" id="L472" clasIn/mem6 9iers.tx6ef="Documentation/memory6barri619458     |a>     |a>:    +tion/m+/a>
ion/mhref Eion/meng to thatioe read barrier or the data dependency barrier, 6, without6     |a>     |a>:    +tion/m+/a>
 523See also the 6ubsec622458     |a8"> 58|a>:    | B=2  |a>    read barrier or the data dependency barrier, 6,#L514" i6.
 525
 584read barrier or the data dependency barrier, 6,txt#L51666"> 526CONTROL DEPEN6ENCIE625458     |a>     |a>     +tion/m+a>    /a>     ="line" na> 43 classpriorhe ="L4read barrier or the data dependency barrier, 6,name="L56ass="line" name="L527"> 627     |a>     |a>:    | E=5  |a>      d     L531" classname=mmitr thbtion with respect to the other components of the s6="L528" c6ass="line" name="L528"> 628     |a>     |a>:    +tion/m+/a>
     fur7"> 397oal guarat"linlass=with respect to the other components of the s6=riers.tx69"> 529A control dep6ndenc628458     |a>     |tion/mhref| D=4  |a>    read barrier or the data dependency barrier, 6,9iers.tx6f="Documentation/memory-6arrie629458     |a>     |a>     +tion/m+read barrier or the data dependency barrier, 6t of
 532
 442                |emory-barriers.txt#L472" id="L472" clasIn/mem6lname="L563"> 533        q = &6mp;a;63" name="L443"> 44               | S="DocumeL427"> 4297oal g418" ommitr the ="L4emory-barriers.txt#L472" id="L472" clasIn/mem6l#L514" i6ss="line" name="L534"> 56463> 514                       | 6"> 436tion/m/by    ==mory-barriers.txt#L503" id="L503" class="line6" class="6ine" name="L535"> 535 51111Vmory-barriers.txt#L503" id="L503" class="line6"txt#L5166536" class="line" name="6536">63a h/memory-barriers.txt#L472" id="L472" clasIn/mem6rriers.tx6#L537" id="L537" class="6ine" 63                   CPU 2
 538
versa:
 367versa:pearing to be incompletely initialised.
 539This will not6have 6he desid="L31code:
 482        { L574"> 574        a = 1;
 543
6a hre6e" name="L443"> 444444{srrie7; Xrie9; Yrie8;s483<     Y  read barrier or the data dependency barrier, 6 name="L564"> 544        q = &6mp;a;6e="L444"> 444< classA  Q = P;
 56564 <write ba classrrie               ===============
 546        b = &a;         x = b;
646<write ba class483 444444LOAD X  x = b;
       classtati4 443"> 444444LOAD C (ge/meof the   x = b;
 549
 579
 550
 551SMP BARRIER P6IRING6  551",    = guarang to> 49must ion/meon    ===L425"> mory-barriers.txt#L551" id="L551" class="line6 actually6ss="line" name="L552"> 5626------40"> 5> 4lassandom7"> 36, nampite" name="L584"> 584 5636    CPU 2
 554When dealing 6ith C6> 454     +tion/me+rite ba:ite ba:ocumenta> 444444:ocumentemory-barriers.txt#L453" id="L453" class="line6"L545" cl6href="Documentation/memo6y-bar654458     |a>     |a>     +tion/m+                +tion/me+ri| S="Documenta> 520     |a>     |tion/mhref| B=2  | hre-2<<<<<|entang to the foain, a general barrier is viable:
 557A write barri6r sho656458     |a>     |a>:    +tion/m+     /a>        +tion/me+ri|    =               ===============
     |a8"> 58|a>:    | A=1  |a>    /a>   n/mhref| Cmhref     Y |11Vmory-barriers.txt#L503" id="L503" class="line6d
     |a>     |a>     +tion/m+       |a>      +tion/me+mory-barriers.txt#L503" id="L503" class="line6dhref="Do6ref="Documentation/memor6-barr659458     |a>     |a> wwwwwwwwwwwwwwww   |a>      :ocumentemory-barriers.txt#L453" id="L453" class="line6mentation6memory-barriers.txt#L5616 id="660458     |a>     |a>     +tion/m+       |a>      :ocumentemory-barriers.txt#L453" id="L453" class="line6mactually62"> 562        CPU 16     661458     |a>     |a>:    | C=of the4|re-2<<<|a>      :ocumente>      +tion/me+mory-barriers.txt#L503" id="L503" class="line6#L563" id6"L563" class="line" name6"L563662458     |a>     |a>:    +tion/m+   \   |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" class="line6#> 4297oal312     |a>     |a>:    +tion/m+   \   |a>      +tion/      :oeETdef| CB |a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" class="line6" class="line" name="L566"> 5666mo6y-bar654458     |a>     |a>     +tion/m+   \   |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" class="line6#L566" id="L566" class="6ine" 6ame="L566"> 564     +tion/me+rite ba:ite e4|re-2<<<|a>      :ocumeme+a>     |a>     |mory-barriers.txt#L503" id="L503" claref="Doc6t#L567" id="L567" class=6line"66ame="L487"> 487                         e4|re-2<<<|a>      :ocumeme+a>     |a>     |mory-barriers.txt#L503" id="L503" cla="Docume6ry-barriers.txt#L568" id6"L5686 class="line" name="L568"> 568               e4|re-2<<<|a>      :ocumemea>  55  |a>     |mory-barriers.txt#L503" id="L503" class="line6t#L569" id="L569" class=6line"6name="L569"> 569
 570Or:6 460re-2 e4|re-2<      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" cl class="l6ne" name="L571"> 5716 461<9leading to (!)        e4|re-2<< |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" class="line6 name="L572"> 572   6    C67ef6"Docu63="L442"> 442                  e4|re-2<<<|a>      :ocumeme+a>     |a>     |mory-barriers.txt#L503" id="L503" clrriers.tx6#L573" id="L573" class="6ine" 67 &6mp;a;63" name="L443"> 44                 e4|re-2<< |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" class="line6tation/memory-barriers.t6t#L5767 56463> 514 tion/m+   | X-2      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" cl ss="line6" class="line" name="L576"> 5767/a6     63 class=upmmitr n't, a  63 class=\re-2<< |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" class="line6#L576" id="L576" class="6ine" 67="L536"> 536 ine" name="eng to             |a>     |tio    |2    |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" clry-barrie6s.txt#L577" id="L577" cl6ss="l67ame="L487"> 487                                    |a>     +tion/me+mory-barriers.txt#L503" id="L503" clr="Docume6tation/memory-barriers.t6t#L576" id="L578" class="line" name========================= |a>      :ocumentemory-barriers.txt#L453" id="L453" clbarriers.6xt#L579" id="L579" class6"line67or5-barr59e desired effect because there is no act6ass="line6 name="L580"> 580Bas6cally6 the read barrier always has to be there, even thou6h it can 6e of
a>  55   = guaL451" cBenta7ndom7"> 36, natxt#ng t*="Documentation/memory-barriers.txt#L476" id="6riers.txt6L52" id="L1582" class="l6ne" n6me="L5("Docum584"> be B)97oa 583[!]6Note 6hat the stores before the write barrier would norma6ly be exp6cted to
 586<6a>
63a h/memory-barriers.txt#L472" id="L472" cass="line6 name="L587"> 587   6    C6name="L487"> 41        =============/a>        =               ===============
 482        { L574"> 574        a = 1;
 489
3"> 444444{srrie7; Xrie9; Yrie8;s483<     Y  read barrier or the data dependency mentation6memory-barriers.txt#L5906 id="68em6 id="6510" class444< classA  Q = P;
 444444LOAD X  x = b;
      classtati4 443"> 444444LOAD C (ge/meof the   x = b;
 595A == 1,6B == 69/a6     63 class="line" name="L59" id="L18"> 578                        y = *x;
 516
 444444LOAD *C (= 3;s e   x = b;
code:
     +tion/me+rite ba:ite ba:ocumenta> 444444:ocumentemory-barriers.txt#L453" id="L453" c7ass="line7arriers.t6t#L501" id="L571" cl70616 id="660458     |a>     |a>     +tionnnnnnnnnn  |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7ass="line7 name="L562"> 502
    a>      +tioon/mhref| B=2  | hre-2<<<<<     |a>     |a>:    +tion/m+     /a>        +tion/me+mory-barriers.txt#L503" id="L503" c7a3s="line7 memory-barriers.txt#L597" id=70>:    +tion/m+ /a>     |a8"> 58|a>:    | A=1  |a>    /a>   n/mhref| Cmhr +tion/me+mory-barriers.txt#L503" id="L503" c7a4s="line7 name="L595"> 595A == 1,7on/me70mo6y-bar654458     |a>     |a>     +tion/m+   \   |a>      +tion/me+mory-barriers.txt#L503" id="L503" c7a5s="line7 href="Document#L49"red 7/a>
<70EN6ENCIE625458     |a>     |a> wwwwwwwwwwwwwwww   |a>      :ocumentemory-barriers.txt#L453" id="L453" c7f="Docume7 name="L567"> 507   7    C70ri6r sho656458     |a>     |a>     +tion/m+   \   |a>      :ocumentemory-barriers.txt#L453" id="L453" c7f7"Docume7  628     |a>     |a>:    | C=of the4|re-2<<<|a>      :ocumente>      +tion/me+mory-barriers.txt#L503" id="L503" c7L459" id=7rriers.tx6#L509" id="L507" cla70ba6riers658458     |a>     |a>:    +tion/m+   \   |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7L459" id=7r9iers.tx6#href="Documen7ation70or6-barr659458    a>      +tion/      :oeETdef| CB |a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c7L459" id=7511" clas6="line" name="7511">71616 id="660458     |a>     |a>     +tion/m+       |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7#L552" id7#L512" id6"L512" class="7ine" 7ame="L512"> 514     +tion/me+rite ba:ite e4|re-2<<<|a>      :ocumeme+a>     |a>     |mory-barriers.txt#L503" id="L503" c7#L552" id7#name="L56ne" name="L5137> 51371 &6mp;a;63" name="L443"> 44                 e4|re-2<<<|a>      :ocumeme+a>     |a>     |mory-barriers.txt#L503" id="L503" c7#3s="line7t#L514" i6="L514" class=7line"7name="L514"> 514                         e4|re-2<<<|a>      :ocumemea>  55  |a>     |mory-barriers.txt#L503" id="L503" c7n/memory-7tray
      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7#5s="line7.txt#L5166 id="L516" cla7s="li7e" name="L516"> 516
      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c7lasIn/mem7 name="L567"> 517
 487                         e4|re-2<< |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7#7"Docume7 7ame="L568"> 518The7data 71 id="L578" clasMakes suad f0" /a>6--D re-2 ttiondddddddddddddddddon/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7#459" id=7 riers.tx6ref="Documenta7ion/m71name="L489"> 48> 43 classpr 367      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7lasIn/mem7 9iers.tx6ef="Documentat7on/me71ame="L460"> 460 429ef Eion/meng t              |a>     |tio    |2   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c7barrier, 7, without6 46.txt#/me+t.txt#L5555555555555555555555 |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7barrier, 7,L512" id6ation/memory-b7rrier72ef6"Docu63="L442"> 442                           <|a>      :ocumente>      +tion/me+mory-barriers.txt#L503" id="L503" c7barrier, 7,name="L563"> 523See7also 7he subsection on "Cache Coherency" for a 7barrier, 7,#L514" i6.
 525
 526CON7ROL D7PEN6ENcode:
 588   ==/a>        =               ===============
 529A c7ntrol72 id="L589" class="line" name        { L574"> 574        a = 1;
 460 532
 533   7    q73" class="linet;writB=>        =               ===============
 56463> 514                  3"> 4B        =               ===============
 537 4A        =               ===============
63a h/memory-barriers.txt#L472" id="L472" 7lasIn/mem7rriers.tx6#L537" id="L537" cla7s="6inING6  551", s="lichoosng t    = guarang to> 49must ion/meo6">63a h/memory-barriers.txt#L472" id="L472" 7lof the s78" class=6line" name="L578"> 578
     /a>6------40"> 5> 4lassandom7"> 36, nampite" name="L584"> 584 539Thi7 will7not have the desired effect because there is no act7ass="line7 href="Do6umentation/mem7ry-ba73em6 id="6510"4     +tion/me+rite ba:ite ba:ocumenta> 444444:ocumentemory-barriers.txt#L453" id="L453" c7h it can 7it by
     |a>     |a>     +tionnnnnnnnnn  |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7f="Docume7 actually6     |a>     |a>     +tioon/m+       |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7fasIn/mem7 name="L564"> 544   7    q74>:    +tion/m+ /a>     |a>     |a> wwwwwwwww\>        +tioB-2     |a>     |a>     +tion/  |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7f="Docume7" class="6ine" name="L547"> 5474mo6y-bar655458     |a>     |tion/mhref|655458   ta> 444444:ocumentemory-barriers.txt#L453" id="L453" c7hasIn/mem7547" id="6547" class="li7e" na74ri6r sho656458     |a>     |a>     +\55458   ta> 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7fof the s75" class=6L548" class="l7ne" n7me=6L548"6 5484     +tion/me+rite ba:ition/m+   \  |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7ry-barrie75name="L56line" name="L579"> 579
 579
 550
 460      +tion/mea>  55  |a>     |mory-barriers.txt#L503" id="L503" c7ass="line7 name="L561"> 551SMP7BARRI75name="L461"> 461      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c7ass="line7 actually6ss="line" name7"L55275ef6"Docu63="L442"> 442                   /m+   \  |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c7ass="line7"L553" cl6ss="line" name7"L55375 &6mp;a;63" name="L443"> 44                 58   ta> 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7rriers.tx7 name="L564"> 554Whe7 deal75ame="L514"> 514                         ioon/m+  ta> 444444:ocumentemory-barriers.txt#L453" id="L453" c7ass="line7"L545" cl6href="Document7tion/75 id="L515" class="line" name=                ioon/m+   |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7r="Docume7" class="6href="Document7tion/75" name="L516"> 516
     |mory-barriers.txt#L503" id="L503" c7aasIn/mem7 name="L567"> 557A w7ite b75ame="L487"> 487                                    |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7f="Docume7r read
      :ocumentemory-barriers.txt#L453" id="L453" c7ass="line7d
 562   7    C7U 16  txt#ng tA9ust ion2  :ocumentemory-barriers.txt#L453" id="L453" c7ass="line7#L563" id6"L563" class="7ine" 76e subsection on "Cache Coherency" for a 7ass="line7#> 4297oal312     |a7     7a>:    +tion/m name="L588"> 588   ==/a>        =               ===============
 5676mo6y-bar65445ass="line" name        { L574"> 574        a = 1;
 516646<writA= classA  Q = P;
        P = &B
        =               ===============
 570Or:7 460 4B        =               ===============
 5717 461<<<<<<<<<<<<<<<<<<<<<        c = 3;           }    / \    {  x = a;
 572   7    C77ef6"Docu63="L442"> 442           3"> 4A        =               ===============
"aref=="Dome="L3 impos> 584mat4 5777/a6  2  :ocumentemory-barriers.txt#L453" id="L453" c7ass="line7#L576" id="L576" class="7ine" 77="6536">63a h/memory-barriers.txt#L472" id="L472" 7ry-barrie7s.txt#L577" id="L577" cl7ss="l77oc6menta616<write ba+tion/me+rite 2            |a>      :ocumentemory-barriers.txt#L453" id="L453" c7r="Docume7tation/memory-barriers.t7t#L5777pe6dency61 458     |a>     |a>   2             |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7barriers.7xt#L579" id="L579" class7"line77ep6ndenc628458     |a>     |ti|a>:  a>    /a>        +tio|   +t0    |a>     |mory-barriers.txt#L503" id="L503" c7ass="line7 name="L580"> 580Bas7cally77y-6arrie629458     |a>     |a>   |a>   on/m+       |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7h it can 7e of
     |a>     |a> wwwwwwwww\>        +tioB-2     |a>     |a>   2     |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7ass="line7 name="L583"> 583[!]7Note 78me6"L563662458     |a>     |tion/mhref|655458   ta> 444444:ocumentemory-barriers.txt#L453" id="L453" c7ly be exp7cted to
      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c786" class7"line" name="L586"> 586<7a>
 516
    |tio    |2   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c7ass="line7 name="L587"> 587   7    C78ame="L487"> 487                          /m+   \  |a>      +tion/mea>  55  |a>     |mory-barriers.txt#L503" id="L503" c7tation/me7ory-barriers.txt#L588" i7="L5878 id="L578" class="line" name=================8   ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c7aarriers.7tation/memory-barriers.t7t#L587 name="L489"> 489
e" name=================8   ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c7ass="line7memory-barriers.txt#L5907 id="78ame="L460"> 460 d   Pre-2AL494" c           +t /atiorrrrrrrrrrrrrrrrr   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c7tation/me7ory-barriers.txt#L591" i7="L5979name="L461"> 46"L581" ccaus    ="l/a>6--D      on/m+   |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c7>
  5555555555555  |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c7&y be exp7/memory-barriers.txt#L597" id=79ame="L514"> 514                         ioooooooota> 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c7ass="line7 name="L595"> 595A == 1,7B == 7, C = 3, P == &A, Q = class="line" name="L594">7594
<7 href="Document#L49"red 7n an 7dd-numb==
 happ"liiL584lacodiead barrier always has to be there, even thou7t#L528" i7
    ="L  L584la        c = 44:ocumentemory-barriers.txt#L453" id="L453" c7ass="line7e the
 588   ==/a>        =               ===============
 574        a = 1;
 502
 44{s444<0,te ba9483<     Y  read barrier or the data dependency8a2s="line8 ory-barriers.txt#L593" 8her e80" class="linet;writA= classA  Q = P;
:    +tion/m8        P = &B
 595A == 1,8on/me8ory6barri60 <writB=>        =               ===============

<80" name="L516"> 516
 4B        =               ===============
 507   8    C80ame="L487"> 487                  3"> 4A [fba5r txt#ng tA]        =               ===============
        c = 3;           }    / \    {  x = a;

 579
81616 iE581the 84latwo.txt#L5g tA9both ss48}h25" id="L5txt#ng tBt#L58y51", bothead barrier always has to be there, even thou8Lss="line8#L512" id6"L512" class="8ine" 8ame="Lc    up wia> dia>6 RCU valuementation/memory-barriers.txt#L453" id="L453" c8#L552" id8#name="L56ne" name="L5138> 51381e subsection on "Cache Coherency" for a 8#3s="line8t#L514" i6="L514" class=8line"81g 6ith C6> 454     +tion/me+rite ba:ite ba:ocumenta> 444444:ocumentemory-barriers.txt#L453" id="L453" c8n/memory-8tray
     |a>     |a>     +tion/m+               4:ocumentemory-barriers.txt#L453" id="L453" c8n5s="line8.txt#L5166 id="L516" cla8s="li81mo6y-bar655458     |a>     |ti|a>:  a>    /a>        +tio|   +t0    |a>     |mory-barriers.txt#L503" id="L503" c8lasIn/mem8 name="L567"> 517
     |a>     |a>     +tioon/m+       |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8#7"Docume8 7ame="L568"> 518The8data 8epe6dency61 458     |a>     |a> wwwwwwwww\>        +tioB-2 514     +tion/me+rite ba:ition/m+   \  |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c8barrier, 8,name="L563"> 523See8also 82 &6mp;a;63" name="L443"> 44               bar   |a>    |tio    |2   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c8barrier, 8,#L514" i6.
 514                         i/m+   \  |a>      +tion/mea>  55  |a>     |mory-barriers.txt#L503" id="L503" c8barrier, 8,ray
 525
   ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8b5s="line8,txt#L51666"> 526CON8ROL D82" name="L516"> 516
   ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8basIn/mem8,name="L56ass="line" nam8="L5282ame="L487"> 487                          /m+   \  |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c8b7"Docume8="L528" c6ass="line" nam8="L5282 id="L578" class="line" name=================8   io|   +t0   a>      +tio15r     |a>     |mory-barriers.txt#L503" id="L503" c8b459" id=8=riers.tx69"> 529A c8ntrol82name="L489"> 489
e" name=================8    |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c8basIn/mem8,9iers.tx6f="Documentati8n/mem82ame="L460"> 460 d   Pre-2AL494" c           +t /atiorrrrrrrrrrrrrrrrr   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8barrier, 8t of
 46"L581" ccaus    ="l/a>6--D      on/m+   |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8lasIn/mem8line" nam6="L532"> 532
 533   8    q8= &6mp;a;63" nam  L531lf Eion/meng t a>  5555555555555  |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8lasIn/mem8l#L514" i6ss="line" name8"L5348> 56463> 514                                  ta> 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8larrier, 8" class="6ine" name="L538"> 5383 C = 3, P == &A, Q = class="line" name="L594">8l5s="line8"txt#L5166536" class="li8e" na8e="6536">63a h/memory-barriers.txt#L472" id="L472" 8lasIn/mem8rriers.tx6#L537" id="L538" cla8s="6inBa hrt51", be    6     "Documg t A from   bec   href Eion/meng t ==/a>        =               ===============
 588
blass=ocume" id="L581" c7oaplete   nyway44:ocumentemory-barriers.txt#L453" id="L453" c8d.
 539Thi8 will8not have the desired effect because there is no act8ass="line8 href="Do6umentation/mem8ry-ba83em6 id="6510"4     +tion/me+rite ba:ite ba:ocumenta> 444444:ocumentemory-barriers.txt#L453" id="L453" c8h it can 8it by
     |a>     |a>     +tionnnnnnnnnn  |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8f="Docume8 actually6     |a>     |a>     +tioon/m+       |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8fasIn/mem8 name="L564"> 544   8    q84>:    +tion/m+ /a>     |a>     |a> wwwwwwwww\>        +tioB-2     |a>     |a>     +tion/  |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8f="Docume8" class="6ine" name="L548"> 5484mo6y-bar655458     |a>     |tion/mhref|655458   ta> 444444:ocumentemory-barriers.txt#L453" id="L453" c8hasIn/mem8547" id="6547" class="li8e" na84ri6r sho656458     |a>     |a>     +\55458   ta> 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8fof the s85" class=6L548" class="l8ne" n8me=6L548"6 5484     +tion/me+rite ba:ition/m+   \  |a>      +tion/me+a>     |a>     |mory-barriers.txt#L503" id="L503" c8ry-barrie85name="L56line" name="L589"> 589
 579
 550
 460      +tion/mea>  55  |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8 name="L561"> 551SMP8BARRI85name="L461"> 461 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8 actually6ss="line" name8"L55285ef6"Docu63="L442"> 442                   oon/m+  ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8a="Docume8"L553" cl6ss="line" name8"L55385 &6mp;a;63" name="L443"> 44                 5  on/m+   |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8rriers.tx8 name="L564"> 554Whe8 deal85ame="L514"> 514                         io        +tio|   +t1   a>      +tio15r     |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8"L545" cl6href="Document8tion/85 id="L515" class="line" name=                io n/m+   |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8r="Docume8" class="6href="Document8tion/85" name="L516"> 516
     |a>     |mory-barriers.txt#L503" id="L503" c8aasIn/mem8 name="L567"> 557A w8ite b85ame="L487"> 487                                    |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8rof the s8r read
      +tio2nd     |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8d
 489
e" name=================          |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8ry-barrie8dhref="Do6ref="Documenta8ion/m85ame="L460"> 460 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8ass="line8mentation6memory-barrier8.txt#85616 i +tion/me+mory-barriers.txt#L503" id="L503" c8ass="line8mactually62"> 562   8    C8U 16   +tion/me+mory-barriers.txt#L503" id="L503" c8a="Docume8#L563" id6"L563" class="8ine" 86e subTrs.guaranteeenta   6     sa 6re txt#n540" always c    up wia> A ==n/mef="liead barrier always has to be there, even thou8ass="line8#> 4297oal312     |a8     8a>:   txt#ng tB ca   up wia> B ==n2.  No such.guaranteeeexists foid="L5fba5r txt#ng ead barrier always has to be there, even thou8ass="line8" class="line" name="L568"> 5686mo6y-A;a   6 1", c    up wia> eia>   A ==n0 o  A ==n1entation/memory-barriers.txt#L388" id="L388" c8ass="line8#L566" id="L566" class="8ine" 86="6536">63a h/memory-barriers.txt#L472" id="L472" 8aref="Doc8t#L567" id="L567" class=8line"86="6ine" 63                   CPU 2
 4SPECULATIONe" 63                   CPU 2
 570Or:8 5718 txt#L:a   6 nta  ey sae    6    yn540" needg t txt#nao6">63a h/memory-barriers.txt#L472" id="L472" 8ass="line8 name="L572"> 572   8    C87ef6"Ditem from<.txt#L, ass="liy5fbnd a ti   whes=ocumy's=onot us"L3 ="L5bus foidan46">63a h/memory-barriers.txt#L472" id="L472" 8a="Docume8#L573" id="L573" class="8ine" 87e suboa>   txt#L, ass=so dod="L5txt#nin advt, a - to> the 84ly hao> 'tcl--uall46">63a h/memory-barriers.txt#L472" id="L472" 8ass="line8tation/memory-barriers.t8t#L5787 564instrucriereexecuriereflow yet. 5787/a6  l--ual5txt#ninstrucriere t  otaysiall4c7oaplete immediatef= becaus iamesection on "Cache Coherency" for a 8ass="line8#L576" id="L576" class="8ine" 87="653al" idy has="li valuee t hassentation/memory-barriers.txt#L388" id="L388" c8ry-barrie8s.txt#L577" id="L577" cl8ss="l87="6ine" 63                   CPU 2
  did 'tcl--uall4 needg li valuee-ref haps becaus iae" 63                   CPU 2
 4es="lintxt#n-9ili"Documcas iitmcan discardg li valueeoidjuste" 63                   CPU 2
 580Bas8cally87y-6arcach iitmfoidlcumr useentation/memory-barriers.txt#L388" id="L388" c8h it can 8e of
 583[!]8Note 8hat the stores before the write barrier would norma8ly be exp8cted to
 588   ==/a>        =               ===============
 574        a = 1;
 586<8a>
 516
 4B        =               ===============
 587   8    C88ame="L487"> 487                  DIVIDE          } Div="L instrucriers generall46">63a h/memory-barriers.txt#L472" id="L472" 8tation/me8ory-barriers.txt#L588" i8="L5888 id="L578" class="line" name=========DIVIDE          } take a txL3 =i    t    foim6">63a h/memory-barriers.txt#L472" id="L472" 8tss="line8tation/memory-barriers.t8t#L588 name="L489"> 489
e" name=========3"> 4A        =               ===============
 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c8&y be exp8/memory-barriers.txt#L598" id=89ame="L514"> 514                         ioooooooo  |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8 name="L595"> 595A == 1,8B == 89/a6     63 class="line" name="L59" iddddddddddddda>    |tio    |2   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c8594
<8 href="Document#L49"red 8n an 89" name="L516"> 516
     |a>   ioa>  55  |a>     |mory-barriers.txt#L503" id="L503" c8lasIn/mem8ry-barriers.txt#L569" id8"L56989ame="L487"> 487                                  ta> 44444DIVIDE io+a>     |a>     |mory-barriers.txt#L503" id="L503" c85ation/me8
     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8e the
 T   a>  be"L3 busy do ti      +tio|   +t0   ~~~~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c8ass="line8amp;B),
<5 href="Documen8ation89em6 id="6510"div=sierespeculcum9must li =============  |a>     |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9arriers.t6t#L501" id="L591" cl90616 id="66045ta> 4g tA" name=========================ta> 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a1s="line9af="Documentation/memory9href=90ef6"Docu63="L442"> 4444444444444444444444444444444444ta> 44444DIVIDE io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a2s="line9 ory-barriers.txt#L593" 9her e90 &6mp;a;63" nammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmta> 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a3s="line9 memory-barriers.txt#L599" id=90>:    +tion/mO, a  li div=siers0 4297oaplete e-2 ti ta> 44444 |a~    +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a4s="line9 name="L595"> 595A == 1,9on/me9ory6barri60 &l    a>  can s="li   foimt li ===========ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a5s="line9 href="Document#L49"red 9/a>
<90" name="L516"ta> 4wia> immediatel/a>6--mmmmmmmmmmmmmmta> 44444 |aaaaa  |a>     +tion/me+mory-barriers.txt#L503" id="L503" c9f="Docume9 name="L567"> 507   9    C90="6ine" 63                   CPU 2

Plac 578            djust blass=ocumesa 6ree" 63                   CPU 2
91616 i +tion/me+mory-barriers.txt#L503" id="L503" c9Lss="line9#L512" id6"L512" class="9ine" 9ame="L512"> 51 name="L588"> 588   ==/a>        =               ===============
 574        a = 1;
 514                  3"> 4B        =               ===============
 516
 517
 487                          c = 3;           }    / \    {  x = a;
 518The9data 91 id="L578" clas                  3"> 4A        =               ===============
  tmust li typeng t       dused.  If="lis=owas no change madeclassprve the desired effect because there is no act9bss="line9,L512" id6ation/memory-b9rrier92me="Lspeculcumd<.txt#L locect b, s="lispeculcumd 523See9also 9he subsection on "Cache Coherency" for a 9barrier, 9,#L514" i6.
 514                         iiiiiiiiita> 44444 |aaaaa  |a>     +tion/me+mory-barriers.txt#L503" id="L503" c9barrier, 9,ray
 525
     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9b5s="line9,txt#L51666"> 526CON9ROL D92" name="L516"> 516
    |tio    |2   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c9basIn/mem9,name="L56ass="line" nam9="L5292ame="L487"> 487                                    |a>     |a>   ioa>  55  |a>     |mory-barriers.txt#L503" id="L503" c9b7"Docume9="L528" c6ass="line" nam9="L5292 id="L578" class="line" name=========================ta> 44444DIVIDE io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9b459" id=9=riers.tx69"> 529A c9ntrol92name="L489"> 489
e" name=================          |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9basIn/mem9,9iers.tx6f="Documentati9n/mem92ame="L460"> 4T   a>  be"L3 busy do ti      +tio|   +t0   ~~~~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9barrier, 9t of
 div=sierespeculcum9must li =============  |a>     |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9lasIn/mem9line" nam6="L532"> 532
 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9larrier, 9lname="L563"> 533   9    q9= &6mp;a;63" nammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmta> 44444DIVIDE io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9lasIn/mem9l#L514" i6ss="line" name9"L5349> 56463> 514                                  ta> 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9larrier, 9" class="6ine" name="L539"> 539 516
     |a>     |mory-barriers.txt#L503" id="L503" c9lasIn/mem9rriers.tx6#L537" id="L539" cla93ame="L487"> 487                                  ta> 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9l7"Docume98" class=6line" name="L598"> 593 id="L578" class="line" name=========================ta> 44444 |a~    +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c9d.
 539Thi9 will93name="L489"> 489
e" name=================        ta> 44444 |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9 href="Do6umentation/mem9ry-ba93ame="L460"> 460 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c9h it can 9it by
   a>   544   9    q94 5649f="Docume9" class="6ine" name="L549"> 5494" name="L516"> 516
 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c9hasIn/mem9547" id="6547" class="li9e" na94ame="L487"> 487                                    |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9fof the s95" class=6L548" class="l9ne" n94 id="L578" class="line" name=====================a>    |tio    |2   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ry-barrie95name="L56line" name="L599"> 599
 579
 550
 460 44444DIVIDE io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9 name="L561"> 551SMP9BARRI95name="L461"> 461     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a="Docume9 actually6ss="line" name9"L55295ef6"Docu63="LT   a>  be"L3 busy do ti      +tio|   +t0   ~~~~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a="Docume9"L553" cl6ss="line" name9"L55395 &6mp;a;63" ndiv=sierespeculcum9must li =============  |a>     |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9rriers.tx9 name="L564"> 554Whe9 deal95ame="L514"> 5ta> 4g tA" name=========================ta> 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9"L545" cl6href="Document9tion/95 id="L515" class="line" name=                io n/m+ ta> 44444DIVIDE io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9a="Docume9" class="6href="Document9tion/95" name="L516"> 516
 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9aasIn/mem9 name="L567"> 557A w9ite b95ame="L487"> 487                                  ta> 44444 |a~   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9aof the s9r read
     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9d
 489
e" name=================          |a>     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ry-barrie9dhref="Do6ref="Documenta9ion/m95ame="L460"> 4T   speculcu-ereis discarded re-2 t-    +tio|   +t1   a>      +tio+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9mentation6memory-barrier9.txt#96name="L461"> andgare"Documd     |a>   io+a>     |a>     |mory-barriers.txt#L503" id="L503" c9ass="line9mactually62"> 562   9    C96ef6"Docu63="Lretid=uad                               ta> 44444 |a>     |a>     +tion/me+mory-barriers.txt#L503" id="L503" c9a="Docume9#L563" id6"L563" class="9ine" 96e subsection on "Cache Coherency" for a 9ass="line9#> 4297oal312     |a9     9a>:   section on "Cache Coherency" for a 9ass="line9" class="line" name="L569"> 5696mo6y-TRANSITIVITYsection on "Cache Coherency" for a 9a="Docume9#L566" id="L566" class="9ine" 96="653------------section on "Cache Coherency" for a 9aasIn/mem9t#L567" id="L567" class=9line"96="6ine" 63                   CPU 2
 570Or:9 5719 572   9    C97me="L512"> 51 name="L588"> 588   ==/a>="L588"> 588   ==/a3 +tion/me+mory-barriers.txt#L503" id="L503" c9a="Docume9#L573" id="L573" class="9ine" 97 &6mp;a;63" nass="line" name        { L574"> 574        { L574"> 574        a = 1;
 5797ry6barri60 <writX=e="L588"> 588 4X"L588"> 588   t;writY= classA  Q = P;
 516
general    c = 3;         general    c = 3;  classA  Q = P;
 487                  3"> 4Y                  3"> 4XclassA  Q = P;
    6 ==/a>'sntxt#nfrom 580Bas9cally97y-6arTrihrindica 3s t  6 ==/a>'sntxt#nfrom 583[!]9Note 9hat the stores before the write barrier would norma9ly be exp9cted to
 586<9a>
 587   9    C98ame="==/aA follows1antxt#nfrom   return s="esa   valuee l 6 ==/aB'sntxt#ndid, +tion/me+mory-barriers.txt#L503" id="L503" c9tss="line9tation/memory-barriers.t9t#L589 name=ornmust return s    lcumr valueentation/memory-barriers.txt#L388" id="L388" c98y-barrie9memory-barriers.txt#L5909 id="98the read barrier always has to be there, even thou9tation/me9ory-barriers.txt#L591" i9="L5999name=In s="eLinux kernel,duse  L5general .txt#L ere, eve.guaranteesntation/memory-barriers.txt#L388" id="L388" c9>
 595A == 1,9B == 9, C = 3, P == &A, Q = class="line" name="L594">9594
<9 href="Document#L49"red 9n an 99" namHowever, transitiv=tyeis -not-.guaranteedmfoid     oid>        P = sentation/memory-barriers.txt#L388" id="L388" c9ass="line9ry-barriers.txt#L569" id9"L56999ame="Foidexaaple,hsuppos>    6 ==/a>'sngeneral    c = 9iliab 588   ==/a>="L588"> 588   ==/a3 +tion/me+mory-barriers.txt#L503" id="L503" c10ass="line10ass=B),
<5 href="Documen10ass>10as&6mp;a;63" nass="line" name        { L574"> 574        { L574"> 574        a /pre>ss="line10ass=B),
<5 href="Documen10ass>10as&6m1;a;63" nasy. 4T  s=ass=,9ilianasy.> 57read barrier or the data dependency9ass="line9" class="line" name="L579"> 5797ry6b 572;a;63" nasndgits=txt#nfrom 57ocumentation/memorytY= classA  Q = P;
 57      ta> 44444 |a~   io+a>     |a>   a;
 57 n/m+ ta> 44444DIVIDE io+a>     |a>   href="Documentation/memory-9a="Docume9tation/memory-barriers.t9t#L5797 id= 575;a;63" nasansitiv=tyeis -not-.guanasan> 572" 8aref="Doc8t#L567" id="L567" class=8line"86="6i 576;a;63" nas,hsuppos>    6 ==/a>nas,h> 576=ty:hrf=asubLretways hdXLrroysmory-barriers.txnrrrrr ry-barrierDocum  |at#n8tation/me8ory-barriers.txt#L588" i8="L5888 id= 577;a;63" nas  La " id="L581" cas 3hnas  > 57wentalegarecsi id name's 367 574T   fndriers.txt#L388" id="L388"t="L388" c0ass="line9ry-barriers.txt#L569" id9"L56999ame= 579;a;63" nasme="L588"> 588   ==nasme> 57hou9tation/me9ory-barriers.txt#L591" i9="L5999name101p;a;63" namory-barriers.txt#L503" namor>namo=ty:hreeesyTrihref llows1 al-barrieid name'blass=ocumesa 6d id=#nfrpairation/me9ory-barriers.txt#L591" i9="L5999name1011;a;63" naame="L588"> 588   ==naame>namread morthe 84lrDodoeume9aier always t=" 6d i barrier would nor9;sntxt#nfrom 5686mo6ynam2;a;63" nas="line" name        { Lnas=">nam2alueerrr ry-barr run |a> a       63a h/m6    ;sntxt2id=>   ald nor bu" idss="line8" class="line" name="L568"> 5686mo6ynam3;a;63" na                  3"nanam3ory-barB,  oilemortxt#L,rriers.t#L453t#L4 early access=
nam n/m+Gentation/memor+a>   L388" id="L3quihere isensurelows1 allm6    agreaation/me9

nam2" 8aa>     combred e 6d i ofa hr8ier woulfndriersame'access=9ass="line9ry-barriers.txt#L569" id9"L56999ame=nam6;a;63" na                  namume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"nam7;a;63" na                  3"nanamabnam8alueerrarrioutass="line9ry-barriers.txt#L569" id9"L56999ame=nam9;a;63" na an4namhou9tation/me9ory-barriers.txt#L591" i9="L5999name102p;a;63" naust li typeng t       dunaust>nausou9tation/me9ory-barriers.txt#L591" i9="L5999name1021;a;63" na<.txt#L locect b, s="linauread ""lin00/6bemory-b    1/ass="line9tation/memory-barriers.t9t#L5797 564nau2;a;63" na "Cache Coherency&qna &q>nau2alueEXPLICIT KERNEL      CPUss="line9tation/memory-barriers.t9t#L5797 564nau3;a;63" na                    nanau3ead ""lin00/6bemory-b    1/ass="line9tation/memory-barriers.t9t#L5797 564nau4;a;63" nas="line" name=          nas=">nau4">9594
<9 href="Document#L49"red 9n an 99" nanau5;a;63" na516
nau5=ty:hreearanteesntattxt#Lay-barety ofa53" id="L4n/memor+aows1 ac1 ata53" id="L94
<9 href="Document#L49"red 9n an 99" nanau6;a;63" na                    nanau6entaleoil8>
nauume9rss="line9xt#L579" id="L579" class9"line97ep6nnau8;a;63" na9
e" name===========na9nau       (*) Compil i ss9"linass="line9ry-barriers.txt#L569" id9"L56999ame=na29;a;63" na  a>  be"L3 busy donauhou9tation/me9ory-barriers.txt#L591" i9="L5999name103p;a;63" nav=sierespeculcum9must linav=s>nav=      (*) Cersrs.txt#L388" idass="line9ry-barriers.txt#L569" id9"L56999ame=na31;a;63" na> 4g tA" name===========na> 4>nav" c9f="Docume9 name="L56e" name="L543"9 543<94me6"nav2;a;63" nammmmmmmmmmmmmmmmmmmmmmmmnammm>nav2      (*) MMIO8" id="L388" cass="line9ry-barriers.txt#L569" id9"L56999ame=na33;a;63" na                    nanav a 9ass="line9" class="line" name="L569"> 5696mo6ynav4;a;63" nas="line" name="L5       nas=">nav4">9594
<9 href="Document#L49"red 9n an 99" nana35;a;63" na516
nav5=ty:COMPILER      CP94
<9 href="Document#L49"red 9n an 99" nana36;a;63" na                    nanav6y" for a 9aa 9aasIn/mem9t#L567" id="L567" class=9line"96="6inav7;a;63" nas="line" name===========nas=">navume9rss="line9xt#L579" id="L579" class9"line97ep6nna38;a;63" na9
e" name===========na9nav8=ty:hreearanteesntattxt#Laol +plic    ompil i ss9"lin funs i. 5787/a6 nav9;a;63" nanaviers.tompil i 9;s=onov#L472" irs.txt#access=9txt#ndidse t ofait a>     o#ndidse t>
namome9rss="line9xt#L579" id="L579" class9"line97ep6nna41;a;63" namory-barriers.txt#L503" namor>namread barrier ss9"lin()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 542;a;63" nas=owas are"Documgoidan inas=o>namrma9ly be exp9cted to
nam3Lires    s#Layory-barriers.txt-,  ss=ry-bareti  |af  ompil i ss9"lin dome9aihas tass="line9ry-barriers.txt#L569" id9"L56999ame=na44;a;63" namp;A, Q = class="line" nnamp;>nam4">9594
<9 href="Document#L49"red 9n an 99" nana45;a;63" na516
nam5=ty:hree ompil i ss9"lin hecausedihec1 tion/mea>     Cer,63     eedg barrre 6d i94
<9 href="Document#L49"red 9n an 99" nana46;a;63" na                    nanam6alueerrngs h   oidait wish=9ass="line9ry-barriers.txt#L569" id9"L56999ame=na47;a;63" nas="line" name===========nas=">namume9rss="line9xt#L579" id="L579" class9"line97ep6nna48;a;63" na9
nam9  valuee            CPUss="line9amp;B),
<5 href="Documen9ation99em6 na5p;a;63" na1na1  be"L3 busy dona1" c9f="Docume9 name="L56e" name="L543"9 543<94me6"na52;a;63" nav=sierespeculcum9must linav=s>na12=ty:hreearanteesntattxt#Le#L453basic Cersrs.txt#L388" id>
 4g tA" name===========na> 4>na1 a 9ass="line9" class="line" name="L569"> 5696mo6yna54;a;63" nas="line" name=          nas=">na1 n/m+ ta> 444TYPEentation/memMANDAT    Documentation/mMP CONDIme8aALss="line9" class="line" name="L569"> 5696mo6yna55;a;63" na516
na1l    c = 3;   574        a /pre>                    nana1             GENERALentation/mb()VIDE io+a>     |a>  smp_mb()ss="line9tation/memory-barriers.t9t#L5797 564na57;a;63" nas="line" name===========nas=">na1==rrrrrrrrrrrWRITEentation/mewmb()VIDE io+a>     |a> smp_wmb()ss="line9tation/memory-barriers.t9t#L5797 564na58;a;63" na9
e" name===========na9na1        |a>                  rmb()VIDE io+a>     |a> smp_rmb()ss="line9tation/memory-barriers.t9t#L5797 564na59;a;63" na  speculcu-ereis discardna  s>na18"> 588  DATA DEPENDENCY;blas_.t9t#L5_=owas s()VIsmp_rlas_.t9t#L5_=owas s()ss="line9tation/memory-barriers.t9t#L5797 564na6p;a;63" nadgare"Documdnadga 9ass="line9" class="line" name="L569"> 5696mo6yna61;a;63" natid=uad                 natid>nad" c9f="Docume9 name="L56e" name="L543"9 543<94me6"na62;a;63" na "Cache Coherency&qna &q>nad2=ty:Aliers.txt#L388" id=ex====4 |a~  63                     sme" 6ae ompil i="Docume9 name="L56e" name="L543"9 543<94me6"na63;a;63" na "Cache Coherency&qna &q>nad a 9aL388" ca D 63          i  |dome9aismeveeeL3mdaddie" n3      il i  2
nad4">9594
<9 href="Document#L49"red 9n an 99" nana65;a;63" na--section on "Cachena--s>nadl    Ase t&  eve.gu     ofa5 63          i  ,     com il i wouldmory txt#nere i94
<9 href="Document#L49"red 9n an 99" nana66;a;63" na              CPU 2
nad6entatisuelueeoidjust#L388" corhec1  6d i (eg. `a[b]` wouldmt#L4 ="L472" L453" id=94
<9 href="Document#L49"red 9n an 99" nana67;a;63" natyeis= 578eplyeintuitiv=natye>nad7ead morb
   [b]), h   oidaa>   acume9c    up wia>>     C  +t1ifiuseden94
<9 href="Document#L49"red 9n an 99" nana68;a;63" nav="L 584
<9 href="Document#L49"red 9n an 99" nana69;a;63" na3s transitiv=tye(also ctna3s >nad8"> 5a
 5787/a6 na7p;a;63" namory-barriers.txt#L503" namor>namo"> 5problemDoorae ompil i"L453"  ~~~~ write t#L ~~~53" c9  [b],   us t#L ~~~a new i="Docume9 name="L56e" name="L543"9 543<94me6"na71;a;63" naame="L588"> 588   ==naame>nam1ers.topyDoorb
errn  [b]. A causensus hecausto be
  { X44<0,tY44<0483nam a 9ass="line9" class="line" name="L569"> 5696mo6yna74;a;63" nawritX=e="L588"> 588nam4">95mMP rs.txt#L388" id=ad="L3ducere is ompil i ss9"lin |a> uni#Locessors ompil "94
<9 href="Document#L49"red 9n an 99" nana75;a;63" na516
naml           ="Docume8rDocum>
                  3"nanam6T   fndrer al 6d i ooidlw i ~~~access=9tcorhec1lyaaaaa res=oretuo=#nfelfass="line9ry-barriers.txt#L569" id9"L56999ame=na77;a;63" na              CPU 2
namume9rss="line9xt#L579" id="L579" class9"line97ep6nna78;a;63" na 6 ==/a>'sntxt#nfromna 6 >nam8alue[!] Notelows1 mMP rs.txt#L388" id=_ c9&_L453" c9e is ontrol     o2
 5686mo6ynam9;a;63" naa 3s t  6 ==/a>'sntxnaa 3>nam9"li==/ id="ces=
  0" just ba> mMP        ,y-barriers.on/memorlock hr.txt#e2"94
<9 href="Document#L49"red 9n an 99" nana8p;a;63" na andg l 6 ==/a>'sntxna an>na aentatiosuffiui"Doass="line9ry-barriers.txt#L569" id9"L56999ame=na81;a;63" na. 4T   quesu-ereis s="lina. 4>na " c9f="Docume9 name="L56e" name="L543"9 543<94me6"na82;a;63" naefore the write barrier naefo>na 2=ty:Mfndattxt#L388" id=shouldmusto453" c9e is ontrol mMP tion/m ,ysi4444mfndattxt="Docume9 name="L56e" name="L543"9 543<94me6"na83;a;63" na/a>'sntxt#nfrom>na  a 9aL388" cs unnecessari" 63meveeeooidhxt#L3n UP         CTs.txeed, h   oid,o45="Docume9 name="L56e" name="L543"9 543<94me6"na84;a;63" na lasexp6--m l 6 ==/a3na la>na 4">95" c9e is ontrol MMIO8tion/m |a> access=9terrarri"L45ax 0" just bI/Oaaandow9ass="line9ry-barriers.txt#L569" id9"L56999ame=na85;a;63" na-cu-ereis areexaaple  L5na-cu>na 5=ty:hreeeeLd="L3quihereemorya> non-mMP        L453" .txaion/me    o2
   returnasnt>na    valuee9;s=ore 6d i#L472" mass="line9ry-barriers.txt#L569" id9"L56999ame=na88;a;63" naturn s    lcumr valueentnatur>na act9ass="line9amp;B),
<5 href="Documen9ation99em6 na89;a;63" nar always has to be therenar a>na hou9tation/me9ory-barriers.txt#L591" i9="L5999name109p;a;63" naux kernel,duse  L5generanaux >naux=ty:hrereeLd="88" imhref6">63a d ss9"lin funs ianaty.>nau" c9f="Docume9 name="L56e" name="L543"9 543<94me6"na92;a;63" naandgits=txt#nfromnau2     (*) set_mb(vad,oref=")ss="line9tation/memory-barriers.t9t#L5797 564na93;a;63" nan 1entation/memory-barrinan 1>nau a 9ass="line9" class="line" name="L569"> 5696mo6yna94;a;63" namp;A, Q = class="line" nnamp;>nau n/m+ ta> s    Q =ign#L388" id="L388388" iarrierstxt#L45tionsert#Layfuliers.txtss="line9" class="line" name="L569"> 5696mo6yna95;a;63" naransitiv=tyeis -not-.guanaran>naul    c = 3txt#L453"rite it,       503" id388"funs i
<9 href="Document#L49"red 9n an 99" nana96;a;63" nae,hsuppos>    6 ==/a>nae,h>nau          onserteL3merrngimhreferrn  e ompil i ss9"lin ll46 UP  ompilcumenass="line9ry-barriers.txt#L569" id9"L56999ame=na97;a;63" na   La " id="L581" cas 3hna   >nauume9rss="line9xt#L579" id="L579" class9"line97ep6nna98;a;63" naired effect because thernaire>nauact9ass="line9amp;B),
<5 href="Documen9ation99em6 na99;a;63" naame="L588"> 588   ==naame>nau9     (*) smp_mb__ 174 (*) smp_mb__"rite_attmic_dec()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 1m1;a;63" n1sy. 4T  s=ass=,9ilian1sy.> 17read b(*) smp_mb__ 102 (*) smp_mb__"rite_attmic_i44()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 1m3;a;63" n1s 1entation/memory-barrin1s 1> 10 a 9ass="line9" class="line" name="L569"> 5696mo6yn174;a;63" n1sp;A, Q = class="line" nn1sp;> 10 n/m+ ta> s eeeeLd="csi n/meaaaa attmicdadd/a>abtractm 5696mo6yn175;a;63" n1sansitiv=tyeis -not-.guan1san> 1mmmmmmmta> funs i 5696mo6yn176;a;63" n1s,hsuppos>    6 ==/a>n1s,h> 10          counL503.> s eeeefuns i 1cume9f8"Docume9  the
 1c8;a;63" n1sred effect because thern1sre> 10        |aAL3 ol +tion/, cause thca"piece|af  odelows1 markL3 olobjn/meas0   ~~~de2"94
<9 href="Document#L49"red 9n an 99" nan179;a;63" n1sme="L588"> 588   ==n1sme> 108"> 588n13" c9Lss="line9#L512" id6"L512" class="9ine" 9ame="n131;a;63" n1ame="L588"> 588   ==n1ame>n1    =         obj id="de2" = 1aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 1m2;a;63" n1s="line" name        { Ln1s=">n174        smp_mb__                  3"n1n1     =        attmic_dec(&tio;obj id="mem_counL)aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 1m4;a;63" n1s="line" name=        DIn1s=">n114">9594
<9 href="Document#L49"red 9n an 99" nan1m5;a;63" n1516
n1     =     s    makeiosurelows1  |a~ eath mark" id388"objn/mecum  |ceivd effect set94
<9 href="Document#L49"red 9n an 99" nan1m6;a;63" n1                  n1   c = 3;  *                  3"n1n11ume9f8"Docume9  the
 1m8;a;63" n1ired effect because thern1ire>n11        |aSee  the
 1m9;a;63" n1 an4n118"> 588  a in1usou9tation/me9ory-barriers.txt#L591" i9="L5999name1121;a;63" n1<.txt#L locect b, s="lin12" c9f="Docume9 name="L56e" name="L543"9 543<94me6"n1u2;a;63" n1 "Cache Coherency&qn1 &q>n122 (*) smp_mb__                    n1n1iiiiiii(*) smp_mb__"rite_clear_bit(void)aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 1u4;a;63" n1s="line" name=          n1s=">n1u4">9594
<9 href="Document#L49"red 9n an 99" nan1u5;a;63" n1516
n125n/m+ ta> s eeeeLd="csi n/mesimilcrL388388"attmicdXnc/dec#L388" ida> s eeeeLd=94
<9 href="Document#L49"red 9n an 99" nan1u6;a;63" n1                    n1n1         |atypic     " c9eers.bitwieeeunlock hr.ap==tyiio+/a>ry-bd="md="L453take ca>
n1=======ta> trereeLd="noisme ic   rs.txt#L388" id=rereext#ndiass="line9ry-barriers.txt#L569" id9"L56999ame=n128;a;63" n19
e" name===========n19n12act9ass="line9amp;B),
<5 href="Documen9ation99em6 n129;a;63" n1  a>  be"L3 busy don1a> ti      Cause thcsme ess=" ~~~aneunlock.ap==tyiio|af 88" imust 44bytclear ~~~ass="line9amp;B),
<5 href="Documen9ation99em6 n13p;a;63" n1v=sierespeculcum9must lin1v=s>n1=======  |alock hr.bitxt#nfroclear_bit() wouldmL45tined effect en9atiod elikerrrrr>
 4g tA" name===========n1> 4>n1v" c9f="Docume9 name="L56e" name="L543"9 543<94me6"n1v2;a;63" n1mmmmmmmmmmmmmmmmmmmmmmmmn1mmm>n134        smp_mb__                    n1n1       ta> 444clear_bit( ... )aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 134;a;63" n1s="line" name="L5       n1s=">n1v4">9594
<9 href="Document#L49"red 9n an 99" nan135;a;63" n1516
n13    =     s    rremortho just bap==tyiio+aba href="Doclear leak hr.ffe3rite itireSee94
<9 href="Document#L49"red 9n an 99" nan136;a;63" n1                    n1n1       ta> /me+mubLes in1=======ta> sme ictyiio+ass="line9ry-barriers.txt#L569" id9"L56999ame=n138;a;63" n19
e" name===========n19n13act9ass="line9amp;B),
<5 href="Documen9ation99em6 n1v9;a;63" n1n1///////ta> See  the
 14p;a;63" n1mory-barriers.txt#L503" n1mor>n140"> 588  a in13" c9f="Docume9 name="L56e" name="L543"9 543<94me6"n132;a;63" n1s=owas are"Documgoidan in1s=o>n1mrma9ly be exp9cted to
n1m3LireMMIO8WRITEe     CP94
<9 href="Document#L49"red 9n an 99" nan144;a;63" n1mp;A, Q = class="line" nn1mp;>n1m4">95t; for a 9aa 9a 9aasIn/mem9t#L567" id="L567" class=9line"96="6in145;a;63" n1516
n142" 8aref="Doc8t#L567" id="L567" class=8line"86="6i 146;a;63" n1                    n1n146=ty:hreearanteesntattaid="xt#Lays=ori   ss9"lin fsi n/meaaaa 7" clasm> iddbI/Oref="Doc8t#L567" id="L567" class=8line"86="6i 147;a;63" n1s="line" name===========n1s=">n1mume9r" id=9>

n1///////ta> 444mmiowb()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 15p;a;63" n11n15sou9tation/me9ory-barriers.txt#L591" i9="L5999name1151;a;63" n1  a>  be"L3 busy don11" c9fs    s#Lay iarr in112=ty: 6d iddbI/O regi 4g tA" name===========n1> 4>n11 a 9aCPU id="Hardwarefinitefac4    |actu     aion/me    hardwarefs1 88" ideoilass="line9ry-barriers.txt#L569" id9"L56999ame=n154;a;63" n1s="line" name=          n1s=">n154">9594
<9 href="Document#L49"red 9n an 99" nan155;a;63" n1516
n11l    See 388"subLes i  a i
<9 href="Document#L49"red 9n an 99" nan156;a;63" n1                    n1n15ume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"n157;a;63" n1s="line" name===========n1s=">n15ume9f8"Docume9  the
 158;a;63" n19
e" name===========n19n11     ""lin00/6bemory-b    1/ 1/a 1/ass="line9tation/memory-barriers.t9t#L5797 564n159;a;63" n1  speculcu-ereis discardn1  s>n118"> 5IMPLICIT KERNEL             CPUss="line9amp;B),
<5 href="Documen9ation99em6 n16p;a;63" n1dgare"Documdn1dga 9a""lin00/6bemory-b    1/ 1/a 1/ass="line9tation/memory-barriers.t9t#L5797 564n161;a;63" n1tid=uad                 n1tid>n1d" c9f="Docume9 name="L56e" name="L543"9 543<94me6"n162;a;63" n1 "Cache Coherency&qn1 &q>n1d2=ty:S8" iof     o#ndidfuns i>     lranteesntattsme   rs.txt#L388" id, among9&y be exp9/memory-barriers.txt#L599" id=99ame=n1d3;a;63" n1 "Cache Coherency&qn1 &q>n1d a 9a3     aref47ck hr.   |st#Ldul hr.funs i
<9 href="Document#L49"red 9n an 99" nan164;a;63" n1TYsection on "Cachen1TYs>n1d4">9594
<9 href="Document#L49"red 9n an 99" nan165;a;63" n1--section on "Cachen1--s>n16v=ty:hrf=a +t1ifiuseden s#Lay_minimum_6emory-bar;eL3mdparti40" r archid=cst 44eed94
<9 href="Document#L49"red 9n an 99" nan166;a;63" n1              CPU 2
n1d6entaL3 exaa.mhrefsubLry-bi   "L388" c9&, bCPUu8atxteedge9aib="L45iddbup
<9 href="Document#L49"red 9n an 99" nan167;a;63" n1tyeis= 578eplyeintuitiv=n1tye>n1d7ead morarcha +t1ifiu  odei94
<9 href="Document#L49"red 9n an 99" nan168;a;63" n1v="L 584n16hou9tation/me9ory-barriers.txt#L591" i9="L5999name117p;a;63" n1mory-barriers.txt#L503" n1mor>n1mo"> 5LOCKING FUNCme8aUss="line9amp;B),
<5 href="Documen9ation99em6 n171;a;63" n1ame="L588"> 588   ==n1ame>n1m1ers.; for a 9aa 9a 9aasIn/mem9t#L567" id="L567" class=9line"96="6in172;a;63" n1s="line" name        { Ln1s=">n17rma9ly be exp9cted to
  { X44<0,tY44<0483n173=ty:hreearanteesntattxt#La numb i ofa47ck hr.ccu--=u/m >
 588n174">9594
<9 href="Document#L49"red 9n an 99" nan175;a;63" n1516
n1al    c(*) sp>> 47ck>
                  3"n1n1       (*) R/W sp>> 47ck>
n1mume9r (*) mutex9>
'sntxt#nfromn1 6 >n1m8alue (*) sem> hhre>
'sntxn1a 3>n179     (*) R/W sem> hhre>
'sntxn1 an>n184 (*) RCUgt;
n1 2=ty:In allm    s trereeLd=" iarrnm |a> t;ntatLOCK8" c9haap==tyiio+a>niers.txtUNLOCK8" c9haap==tyiio+="Docume9 name="L56e" name="L543"9 543<94me6"n183;a;63" n1/a>'sntxt#nfrom>n1  a 9aers.ext#.ccu--=u/ma> s eeeeap==tyiio+a>lttsme   certa>> 3"9 543<>
n184">9594
<9 href="Document#L49"red 9n an 99" nan185;a;63" n1-cu-ereis areexaaple  L5n1-cu>n18l    c(1) LOCKbap==tyiio sme ictyiio>
   return1snt>n18======ta> Mjust bap==tyiio+atisuede3rite e.guaOCKber albapcom letede3rite e.guaOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n188;a;63" n1turn s    lcumr valueentn1tur>n18        |aap==tyiio xt#Lcom letedi94
<9 href="Document#L49"red 9n an 99" nan189;a;63" n1r always has to be theren1r a>n1 hou9tation/me9ory-barriers.txt#L591" i9="L5999name119p;a;63" n1ux kernel,duse  L5generan1ux >n190=====ta> Mjust bap==tyiio+atisuedeba href="DoaOCKbeedgbapcom letede3rite e.guaOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n191;a;63" n1ty. 4T  s=ass=,9ilian1ty.>n191       |aap==tyiio xt#Lcom letedi94
<9 href="Document#L49"red 9n an 99" nan192;a;63" n1andgits=txt#nfromn19rma9ly be exp9cted to
n19iiiiii(2)eUNLOCKbap==tyiio sme ictyiio>
n194">9594
<9 href="Document#L49"red 9n an 99" nan195;a;63" n1ransitiv=tyeis -not-.guan1ran>n1ul    c = 3Mjust bap==tyiio+atisuedeba href="DoUNLOCKber albapcom letedeba href="D94
<9 href="Document#L49"red 9n an 99" nan196;a;63" n1e,hsuppos>    6 ==/a>n1e,h>n1u          UNLOCKbap==tyiio xt#Lcom letedi94
<9 href="Document#L49"red 9n an 99" nan197;a;63" n1   La " id="L581" cas 3hn1   >n1uume9rss="line9xt#L579" id="L579" class9"line97ep6nn198;a;63" n1ired effect because thern1ire>n198=====ta> Mjust bap==tyiio+atisuede3rite e.guUNLOCKbeedgbapcom letedeba href="D94
<9 href="Document#L49"red 9n an 99" nan199;a;63" n1ame="L588"> 588   ==n1ame>n188"> 588
<9 href="Document#L49"red 9n an 99" nan2mp;a;63" n2ss="line" name        { L274"> 20sou9tation/me9ory-barriers.txt#L591" i9="L5999name12m1;a;63" n2sy. 4T  s=ass=,9ilian2sy.> 27read b(3) LOCKbvs LOCKbsme ictyiio>
 20rma9ly be exp9cted to
 27      ta> AlieLOCKbap==tyiio+atisuedeba hrefano#ndidLOCKbap==tyiio er albapcom letedy be exp9cted to
 20 n/m+ ta> ba href="atdLOCKbap==tyiioi94
<9 href="Document#L49"red 9n an 99" nan2m5;a;63" n2sansitiv=tyeis -not-.guan2san> 272" 8aref="Doc8t#L567" id="L567" class=8line"86="6i 276;a;63" n2s,hsuppos>    6 ==/a>n2s,h> 20      (4) LOCKbvs UNLOCKbsme ictyiio>
 2cume9f8"Docume9  the
 2c8;a;63" n2sred effect because thern2sre> 20        |aAlieLOCKbap==tyiio+atisuedeba hrefanaUNLOCKbap==tyiio er albapcom letedy be exp9cted to
 588   ==n2sme> 208"> 588n23" c9Lss="line9#L512" id6"L512" class="9ine" 9ame="n231;a;63" n2ame="L588"> 588   ==n2ame>n2    =      AlieUNLOCKbap==tyiio+atisuedeba hrefadLOCKbap==tyiio er albapcom letedy be exp9cted to

<9 href="Document#L49"red 9n an 99" nan213;a;63" n2                  3"n2n21 a 9ass="line9" class="line" name="L569"> 5696mo6yn2m4;a;63" n2s="line" name=        DIn2s=">n214">95 (5) Fail ".ccudie" n3  LOCKbsme ictyiio>

n212" 8aref="Doc8t#L567" id="L567" class=8line"86="6i 2m6;a;63" n2                  n2   c = 3;  Certa>>  iarrnm |aff="DoaOCKbap==tyiiobeedgfail,txt#ndidd="L388   ~~ref="Doc8t#L567" id="L567" class=8line"86="6i 2m7;a;63" n2                  3"n2n21======ta> unriers388getlueeoidckbsmmediately,L388d="L388L388iv ~~~aneunbidckedy be exp9cted to
n21        |a=ign3  whilsmeasleep waiL503"ers.ueeoidckb388  c8" iavailrier.  Fail "y be exp9cted to
n218"> 588
<9 href="Document#L49"red 9n an 99" nan22p;a;63" n2ust li typeng t       dun2ust>n2usou9tation/me9ory-barriers.txt#L591" i9="L5999name1221;a;63" n2<.txt#L locect b, s="lin22" c9fs xt#nfrom<9;s=o(1),i(2)e>nie(4) anaUNLOCKb ol ==edeby~aneunccudie" n3  LOCKbs+="Docume9 name="L56e" name="L543"9 543<94me6"n2u2;a;63" n2 "Cache Coherency&qn2 &q>n2223quival"L5Lffe3 fulie3"9 543, bCPUadLOCKb ol ==edeby~aneUNLOCKbscausti94
<9 href="Document#L49"red 9n an 99" nan223;a;63" n2                    n2n22 a 9ass="line9" class="line" name="L569"> 5696mo6yn2u4;a;63" n2s="line" name=          n2s=">n2u4">95[!] Note: on iof     causequ="ces=of LOCK+a>nieUNLOCKs0   ~~~on    ne-wed94
<9 href="Document#L49"red 9n an 99" nan2u5;a;63" n2516
n225n/m+ ta>L388" id= llows1     tion/m |af.txt#=u/miio+a utse tDoorae rie"c3  Les i
<9 href="Document#L49"red 9n an 99" nan2u6;a;63" n2                    n2n2         |eedgseep in388388"inse tDoor    crie"c3  Les i
<9 href="Document#L49"red 9n an 99" nan227;a;63" n2s="line" name===========n2s=">n2uume9rss="line9xt#L579" id="L579" class9"line97ep6nn228;a;63" n29
e" name===========n29n22act9aAdLOCKb ol ==edeby~aneUNLOCKbeedge9aib="a
L388" iss="line9xt#L579" id="L579" class9"line97ep6nn229;a;63" n2  a>  be"L3 busy don2a> ti "Docume8rDocumpossiiersers.a> access rreced#L472" iLOCKbt="xtppe carite e.gss="line9xt#L579" id="L579" class9"line97ep6nn23p;a;63" n2v=sierespeculcum9must lin2v=s>n23o"> 5LOCK,    |a> access  ol ==#L472" iUNLOCKbt="xtppe cba href="DoUNLOCK, txt#L45ss="line9ry-barriers.txt#L569" id9"L56999ame=n231;a;63" n2> 4g tA" name===========n2> 4>n2v" c9ftwo~access=9tca>    mselv s tren cross>
n23rma9ly be exp9cted to
                    n2n2       ta> 444*A =  aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 234;a;63" n2s="line" name="L5       n2s=">n23 n/m+ ta> 444aOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n235;a;63" n2516
n23l    c = 3;  UNLOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n236;a;63" n2                    n2n23             *B = baasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 237;a;63" n2s="line" name===========n2s=">n2vume9rss="line9xt#L579" id="L579" class9"line97ep6nn238;a;63" n29
e" name===========n29n23act9aeedgoccu53" >
n23hou9tation/me9ory-barriers.txt#L591" i9="L5999name124p;a;63" n2mory-barriers.txt#L503" n2mor>n240n/m+ ta> 444aOCK,/memory*B,/memory*A, UNLOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n241;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9f="Docume9 name="L56e" name="L543"9 543<94me6"n232;a;63" n2s=owas are"Documgoidan in2s=o>n2mrma9lLocks    |sem> hhre&beedge9aiL3 exaa.L3md    up wiaooro2
n2m3Lire       ,y   |sry-bne9aib="counLi#L3n >> su   aa=itutyiiobffe3ctu     achiev5ss="line9ry-barriers.txt#L569" id9"L56999ame=n244;a;63" n2mp;A, Q = class="line" nn2mp;>n2m4">95L3merrngis1 allm- es=ori     waaa res=oretuo=I/O access=9m- un  ss combred ss="line9ry-barriers.txt#L569" id9"L56999ame=n245;a;63" n2516
n242" 8awaaa initerupta53srie hr.ap==tyiio+i94
<9 href="Document#L49"red 9n an 99" nan246;a;63" n2                    n2n24ume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"n247;a;63" n2s="line" name===========n2s=">n2mume9rSee aid="u8a Les i
<9 href="Document#L49"red 9n an 99" nan248;a;63" n29
n24hou9tation/me9ory-barriers.txt#L591" i9="L5999name125p;a;63" n21n25sou9tAL3 ol +tion/, cause thc388"fol ==#L4>
  be"L3 busy don21" c9f="Docume9 name="L56e" name="L543"9 543<94me6"n252;a;63" n2v=sierespeculcum9must lin2v=s>n252     ta> 444*A =  aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 253;a;63" n2> 4g tA" name===========n2> 4>n253            *B = baasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 254;a;63" n2s="line" name=          n2s=">n25 n/m+ ta> 444aOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n255;a;63" n2516
n21l    c = 3;  *C = caasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 256;a;63" n2                    n2n21             *D = daasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 257;a;63" n2s="line" name===========n2s=">n21==rrrrrrrrrrrUNLOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n258;a;63" n29
e" name===========n29n21        |a>  *E = eaasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 259;a;63" n2  speculcu-ereis discardn2  s>n218"> 588  *F = faasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 26p;a;63" n2dgare"Documdn2dga 9ass="line9" class="line" name="L569"> 5696mo6yn261;a;63" n2tid=uad                 n2tid>n26" c9fs x  ol ==#L47sequ="ceaooremorthoi9;acceptrier>
n26rma9ly be exp9cted to
n263n/m+ ta> 444aOCK,/{*F,*A}, *E,/{*C,*D}, *B, UNLOCK="Docume9ry-barriers.txt#L568" id9"L56896ar6"n264;a;63" n2TYsection on "Cachen2TYs>n2d4">9594
<9 href="Document#L49"red 9n an 99" nan265;a;63" n2--section on "Cachen2--s>n26l    c = 3;  [+] Notelows1 {*F,*A} indictyes  e ombred eaccessi94
<9 href="Document#L49"red 9n an 99" nan266;a;63" n2              CPU 2
n26ume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"n267;a;63" n2tyeis= 578eplyeintuitiv=n2tye>n2d7ead But nontDoor     ol ==#L47arr>
n26act9ass="line9amp;B),
<5 href="Documen9ation99em6 n269;a;63" n23s transitiv=tye(also ctn23s >n268"> 588  {*F,*A}, *B, 444aOCK,/*C, *D,rrrUNLOCK, *Ess="line9amp;B),
<5 href="Documen9ation99em6 n27p;a;63" n2mory-barriers.txt#L503" n2mor>n270     ta> 444*A, *B, *C,  444aOCK,/*D,rrrrrrrUNLOCK, *E,/*Fss="line9amp;B),
<5 href="Documen9ation99em6 n271;a;63" n2ame="L588"> 588   ==n2ame>n271     ta> 444*A, *B,  ta> 444aOCK,/*C,  444rrUNLOCK, *D, *E,/*Fss="line9amp;B),
<5 href="Documen9ation99em6 n272;a;63" n2s="line" name        { Ln2s=">n272     ta> 444*B,  ta> 444 444aOCK,/*C, *D,rrrUNLOCK, {*F,*A}, *Ess="line9amp;B),
<5 href="Documen9ation99em6 n273;a;63" n2  { X44<0,tY44<0483n2m a 9ass="line9" class="line" name="L569"> 5696mo6yn274;a;63" n2writX=e="L588"> 588n274">9594
<9 href="Document#L49"red 9n an 99" nan275;a;63" n2516
n272" 8aref="Doc8t#L567" id="L567" class=8line"86="6i 276;a;63" n2                  3"n2n2      INTERRUPT DISABLING FUNCme8aUss="line9amp;B),
<5 href="Documen9ation99em6 n277;a;63" n2              CPU 2
n2mume9rot; for a 9aa 9a 9a 9aa 9a 9aasIn/mem9t#L567" id="L567" class=9line"96="6in2m8;a;63" n2 6 ==/a>'sntxt#nfromn2 6 >n27act9ass="line9amp;B),
<5 href="Documen9ation99em6 n2m9;a;63" n2a 3s t  6 ==/a>'sntxn2a 3>n279    Funs inieenriee initeruptsss="line9amp;B),
<5 href="Documen9ation99em6 n28p;a;63" n2 andg l 6 ==/a>'sntxn2 an>n284(UNLOCKb3quival"L5)eer alw/meas0 ompil i ss9"lin |a>lyireSoers.rs.txt>orbI/Oref="Doc8t#L567" id="L567" class=8line"86="6i 281;a;63" n2. 4T   quesu-ereis s="lin2. 4>n2 " c9fss9"lin |Ld="L3quihere>> su   aa=itutyiio,3" .txmd="L453L3 exaad<9;s=o88" ref="Doc8t#L567" id="L567" class=8line"86="6i 282;a;63" n2efore the write barrier n2efo>n2 2=ty:o#ndidmeao+i94
<9 href="Document#L49"red 9n an 99" nan283;a;63" n2/a>'sntxt#nfrom>n28 a 9ass="line9" class="line" name="L569"> 5696mo6yn284;a;63" n2 lasexp6--m l 6 ==/a3n2 la>n284">9594
<9 href="Document#L49"red 9n an 99" nan285;a;63" n2-cu-ereis areexaaple  L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUss="line9amp;B),
<5 href="Documen9ation99em6 n286;a;63" n2ows1antxt#nfromn28ume9a; for a 9aa 9a 9a 9aa 9a 9aasIn/mem9t#L567" id="L567" class=9line"96="6in287;a;63" n2sntxt#nmust eia>   return2snt>n28ume9rss="line9xt#L579" id="L579" class9"line97ep6nn288;a;63" n2turn s    lcumr valueentn2tur>n28     Sleep hr.   |wak hr.a> anremort flaggere>> globala5 63 ca> 453vie=edet#La/94
<9 href="Document#L49"red 9n an 99" nan289;a;63" n2r always has to be theren2r a>n2 hou9tiniteas i
<9 href="Document#L49"red 9n an 99" nan29p;a;63" n2ux kernel,duse  L5generan2ux >n290====    tmort txt#L45 globala5 63 " c9e isindictye     tmorta> so makeosurelows194
<9 href="Document#L49"red 9n an 99" nan291;a;63" n2ty. 4T  s=ass=,9ilian2ty.>n291    u8atxt> id="Lffextppe c>>     r#L453o2
>     #Locess94
<9 href="Document#L49"red 9n an 99" nan292;a;63" n2andgits=txt#nfromn29rma9loorgo hr.ffesleep, txt#L45 primiL5vedlofeiniL5tye a|wake uptsme   certa>>94
<9 href="Document#L49"red 9n an 99" nan293;a;63" n2n 1entation/memory-barrin2n 1>n29 a 9aL388" csi94
<9 href="Document#L49"red 9n an 99" nan294;a;63" n2mp;A, Q = class="line" nn2mp;>n294">9594
<9 href="Document#L49"red 9n an 99" nan295;a;63" n2ransitiv=tyeis -not-.guan2ran>n2ul    Firstly,Lu8a Lleepdidn>  a     ol ==so88" errngilikerrrrr7sequ="ceaooremorth>
    6 ==/a>n2e,h>n29ume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"n297;a;63" n2   La " id="L581" cas 3hn2   >n29==rrrrrrrrrrrers.(;;) {="Docume9ry-barriers.txt#L568" id9"L56896ar6"n298;a;63" n2ired effect because thern2ire>n29        |a>          set_currrie_statt(TASK_UNINTERRUPTIBLE)aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 299;a;63" n2ame="L588"> 588   ==n2ame>n299       |a>          rs.(emort_indictyed)ss="line9tation/memory-barriers.t9t#L5797 564n3mp;a;63" n3ss="line" name        { L374"> 300       |a>                  breakaasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3m1;a;63" n3sy. 4T  s=ass=,9ilian3sy.> 301       |a>          st#Ldule()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3m2;a;63" n3sndgits=txt#nfrom 302     ta> 444}asIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3m3;a;63" n3s 1entation/memory-barrin3s 1> 30 a 9ass="line9" class="line" name="L569"> 5696mo6yn3m4;a;63" n3sp;A, Q = class="line" nn3sp;> 30 n/m+A genteaiers.txt>L388" ioi9;initepo" nedetuto a ic     by set_currrie_statt()ss="line9tation/memory-barriers.t9t#L5797 564n3m5;a;63" n3sansitiv=tyeis -not-.guan3san> 372" 8a3rite ittxt#Lalt iddb    taskLstatt>
    6 ==/a>n3s,h> 30ume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"n3m7;a;63" n3s  La " id="L581" cas 3hn3s  > 30==rrrrrrrrrrrluee1="Docume9ry-barriers.txt#L568" id9"L56896ar6"n3m8;a;63" n3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/ass="line9tation/memory-barriers.t9t#L5797 564n3m9;a;63" n3sme="L588"> 588   ==n3sme> 309       |a>  set_currrie_statt()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 31p;a;63" n3mory-barriers.txt#L503" n3mor>n310       |a>    set_mb()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 311;a;63" n3ame="L588"> 588   ==n3ame>n311       |a>      memorycurrrie id="stattasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 312;a;63" n3s="line" name        { Ln3s=">n374            <genteaiecl9ss="id="asIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 313;a;63" n3                  3"n3n313n/m+ ta> 444aOAD emort_indictyedasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 314;a;63" n3s="line" name=        DIn3s=">n314">9594
<9 href="Document#L49"red 9n an 99" nan3m5;a;63" n3516
n312" 8aset_currrie_statt()beedgbapwr> iddbby>
                  n31ume9a="Docume9ry-barriers.txt#L568" id9"L56896ar6"n3m7;a;63" n3                  3"n3n31==rrrrrrrrrrrprepare_to_waiL()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 318;a;63" n3ired effect because thern3ire>n318=rrrrrrrrrrrprepare_to_waiL_exclus5ve()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 319;a;63" n3 an4n31hou9tation/me9ory-barriers.txt#L591" i9="L5999name132p;a;63" n3ust li typeng t       dun3ust>n3usou9t3     t xt#nfro aid="sme   L genteaiers.txt>L388" io3rite sett#L472" istatti94
<9 href="Document#L49"red 9n an 99" nan321;a;63" n3<.txt#L locect b, s="lin32" c9fs x whole7sequ="ceaaboveoi9;availrier >>  iarou9tca>nc9eers  ,y  al f63    ss="line9ry-barriers.txt#L569" id9"L56999ame=n3u2;a;63" n3 "Cache Coherency&qn3 &q>n322initepo" ned2" irs.txt>L388" ioi>     r#L453plac4>
                    n3n32 a 9ass="line9" class="line" name="L569"> 5696mo6yn3u4;a;63" n3s="line" name=          n3s=">n32 n/m+ ta> 444waiL_emort()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3u5;a;63" n3516
n325n/m+ ta> 444waiL_emort_initeruptiier()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3u6;a;63" n3                    n3n326n/m+ ta> 444waiL_emort_initeruptiier_exclus5ve()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 327;a;63" n3s="line" name===========n3s=">n327n/m+ ta> 444waiL_emort_initeruptiier_timeout()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3u8;a;63" n39
e" name===========n39n328n/m+ ta> 444waiL_emort_killrier()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 3u9;a;63" n3  a>  be"L3 busy don329n/m+ ta> 444waiL_emort_timeout()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 33p;a;63" n3v=sierespeculcum9must lin3v=s>n330n/m+ ta> 444waiL_on_bit()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 331;a;63" n3> 4g tA" name===========n3> 4>n331n/m+ ta> 444waiL_on_bit_lock()aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 332;a;63" n3mmmmmmmmmmmmmmmmmmmmmmmmn3mmm>n33rma9ly be exp9cted to
                    n3n33 a 9ass="line9" class="line" name="L569"> 5696mo6yn334;a;63" n3s="line" name="L5       n3s=">n33 n/m+Seccudly,L odelows1 perers   a|wake uptn>  a     ol ==so88" errngilikerrrrr>

n332" 8aref="Doc8t#L567" id="L567" class=8line"86="6i 336;a;63" n3                    n3n33             emort_indictyed = 1aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 337;a;63" n3s="line" name===========n3s=">n337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasIn/mem9s.txt#L577" id="L577" cl9ss="l97ame= 338;a;63" n39
e" name===========n39n33act9ass="line9amp;B),
<5 href="Documen9ation99em6 n3v9;a;63" n3n33hou9tor>
n34ga 9ass="line9" class="line" name="L569"> 5696mo6yn341;a;63" n3mory-barriers.txt#L503" n3mor>n341m3nan2u5;ata> 444*A =  aasIn/mem9s.tt_waiL_qu=ue)aasIn/mem9s.txt#L577" 94me634237;a;63" n3s="line"_    r#L588da> 4nn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasbe exp9cte3 to
                    n3n33 a 9ass="line9ry-3arriers.txt#L569" id9"L56399ame343m4;a;6n11" cA, Q = class="line"In2se" nam="line" i /dlo     ifc9fss9="li;63" n3                    n3n33 a 9ass=
nieenriee initeruptss3
<9 hr3f="Document#L49"red 9n an399" n3n246;aays has t   L588"> >n290====    tmort t#nfrom >nro  re>n2RUNNING3" n3n33hou9tor>n/mem9s.txarriers.txt#L568" id9"L56396ar634287;a;63" n2sntxt#nmust eia>   return2snt>n28ume9rs3
<9 hr3f="Document#L49"red 9n an399" n343u8;a;63" n39  La                              La2;63" n2sntxt#nmust eia>   return2snt>n28ume9rs3<"line9amp;B),
<5 href="Documen9atio399em63n1m9;a;63" n1 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/assion/me9ory3barriers.txt#L591" i9="L5399nam3533p;a;63" n3vme="L588"> 588              L588">                3"n3n313n/m+ ta> 444aOAD emort_indictyedas;
 444wake_up(&tio;emort_waiL_qu=ue)aasDocume9 na3e="L56e" name="L543"9 543394me635312;a;63" n3s="liL588"> 588   ==n3am3" n3s="line" n11" c9fs    n3s=">n374            <genteaiecl9ss="id="asIn/mem9s.t3t#L577" id="L577" cl9ss="397ame3 253;a;63" n2>="line" name        { Ln3s= ;63" n3s="liL588"> 588   ==n3am">n374            <genteaiecl9ss="id="asI"line9ry-3t#L577" id="L577" cl9ss="397ame3 254;a;63" n2s=">                  3"n3n313n/m+ ta> 444aOAD emort_indictyedasDocume9ry-3arriers.txt#L568" id9"L56396ar635335;a;63" n3516
n332" 8areIn/mem9s.t3t#L577" id="L577" cl9ss="397ame35146;a;63"lin="liche Coherency&a>ndtepo" ned2" irs.txt>L388" ioi>     r#L453plac4>In/mem9s.t3t#L577" id="L577" cl9ss="397ame3n157;a;63" n1s="line" name===========n1s=">n15ume9f83Docume9ry-3arriers.txt#L568" id9"L56396ar63n258;a;63" n29yiio+ati i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasD"line9amp;t#L577" id="L577" cl9ss="397ame35937;a;63" n3s="line" i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasIn/mem9s.t3t#L577" id="L577" cl9ss="397ame36037;a;63" n3s="line"_m+S i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasI
 5396mo636137;a;63" n3s="line"_eculcum9must lin3v=s>n330n/m+ ta> 444waiL_on_bit()aas;
n325n/m+ ta> 444waiL_emort_initeruptiier()aasbe exp9cte3 to
 444wake_up(&tio;emort_waiL_qu=ue)aasI"line9ry-3arriers.txt#L568" id9"L56396ar6364d3;a;63" n2 ="line"_re          n_nr i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasIocume9ry-3f="Document#L49"red 9n an399" n365d3;a;63" n2 ="line"_re          n_po+S i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasIn/mem9s.t3f="Document#L49"red 9n an399" n366d3;a;63" n2 ="line"_re          n_syn1s=">n174        smp_mb__ 444wake_up(&tio;emort_waiL_qu=ue)aasIocume9ry-3Documentation/memory8barr389 1636837;a;63" n3s="line"_oidckb i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aasI"line9amp;B),
<5 href="Documen9atio399em636937;a;63" n3s="line"_oidckb_po+S i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aas="line9amp3B),
<5 href="Documen9atio399em637037;a;63" n3s="line"_nr i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aas="line9amp3B),
<5 href="Documen9atio399em637137;a;63" n3s="line"_po+S i337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aas=
 444wake_up(&tio;emort_waiL_qu=ue)aas=e exp9cte3B),
<5 href="Documen9atio399em63n273;a;63" n2  { X44<0,tY44<0483n2m a 9as3="line9" c3ass="line" name="L569"> 5396mo63n274;a;63" n2writX=e="L588"> 588n274">9593
<9 hr3f="Document#L49"red 9n an399" n3n275;a;63" n2s 588n274">9593n291 multip<.txte"Docn13    =   ="li-up" nn2mp;>n2m4">95load       os.txte"D  3"n3n313n/m+ ta> 444aOAD emort_indictyedas="line9amp3B),
<5 href="Documen9atio399em63n277;avalun26ln1ire>n19iv=tyeis m+Sedvme="L588"> 588 leepor>n1    ce, ifc9fs 3"n3n313n/m+ ta> 444aOAD emort_indictyedas=ocume9ry-367" id="L567" class=9line396="63n2m8;aiv=tyeisdo n1s="line" name===========n1s=">n1mume9r" id=9&g3="line9amp3B),
<5 href="Documen9atio399em637319;a;63" n3 an4n31hou9tat="line9amp3B),
<5 href="Documen9atio399em63833p;a;63" n3vme="L588"> 588re>n2       |a>          set_currrie_statt(TASK_UNINTERRUPTIBLE)aa3f="Doc8t#L367" id="L567" class=8line386="638137;a;63" n3s"> 588   ==n2ame>n299       |a>          rs.(emort_indictyed)ssf="Doc8t#L367" id="L567" class=8line386="638312;a;63" n3s="liiiii     { L374"> 300       |a>                  breakaas
<9 hr3f="Document#L49"red 9n an399" n382d3;a;63" n2 __me="L588"> 588re>n2RUNNING       set_currrie_statt(TASK_UNINTERRUPTIBLE)aa3f"line9" c3ass="line" name="L569"> 5396mo6384d3;a;63" n2 do_odelows1 (my_gene       set_currrie_statt(TASK_UNINTERRUPTIBLE)aa3f/a>
<9 hr3f="Document#L49"red 9n an399" n38335;a;63" n3516
n332" 8are="line9amp3B),
<5 href="Documen9atio399em63n286;anfromn1mume9r" id=9&g3In/mem9t#L367" id="L567" class=9line396="63n287;a;63" n2sntxt#nmust eia>   return2snt>n28ume9rs3="line9xt#3579" id="L579" class9"lin397ep638837;a;63" n3smy_gene = valun      set_currrie_statt(TASK_UNINTERRUPTIBLE)aa3f"line9amp3f="Document#L49"red 9n an399" n38937;a;63" n3sory-barriers.txt#L503" n3mor>n341m3nan2u5;ata> 444*A =  aasIn/mem9s
<9 hr3f="Document#L49"red 9n an399" n39037;a;63" n3s="line" name===========n3s=">n337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aas
<9 hr3f="Document#L49"red 9n an399" n39251;a;63" n2  a>  be"L3 busy don21" c9f=3
<9 hr3f="Document#L49"red 9n an399" n3n292;a3ust 'ie3"rma9lLocks a hre    changta> uory-barriers.txtCKbap==tyeiierse" na;63" n2  a>  be"L3 busy don21" c9f=3
<9 hr3f="Document#L49"red 9n an399" n3n293;ansitiv=tyeisnxn2 an2turn1ire>n19changta> umy_geney: 6is s="lincir be    ce, 9fs 3"n3n313n/m+ ta> 444aOAD emort_indictyedas
<9 hr3f="Document#L49"red 9n an399" n3n294;aline"alwaon2m////s9"lin ;63" n3 &quoi n25wn A, Q = class="neays has t   3"n3n313n/m+ ta> 444aOAD emort_indictyedas
<9 hr3f="Document#L49"red 9n an399" n393m5;a;6p9lLquogene rrngis1 eculcu=====ect b, iv=tyeisou2 udo1s="line" name===========n1s=">n1mume9r" id=9&g3;
    6 ==/a>n2e,h>n29ume9a=3Docume9ry-3arriers.txt#L568" id9"L56396ar63n297;a;63" n2 me="L588"> 588re>n2       |a>          set_currrie_statt(TASK_UNINTERRUPTIBLE)aa3Docume9ry-3arriers.txt#L568" id9"L56396ar63n298;a;63" n2i"> 588   ==n2amed="L581" cas 3hn2   >n29==rrrrrrrrrrrers.(;;) {=3In/mem9s.t3t#L577" id="L577" cl9ss="397ame3 299;a;63" n2ame="L588smp_rrriers.txt#L503" n3mor>n310       |a>    set_mb()aa4="line9tat4on/memory-barriers.t9t#L5497 564n3mp;a;63" n3ss="line"do_odelows1 (my_gene       set_currrie_statt(TASK_UNINTERRUPTIBLE)aa4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 3m1;a;63" n3sndgits=txt#nfrom 302     ta> 444}a4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4n2m2;a;63" n2sndgits=txt#nfrom 20rma9ly4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 3m3;anfromn1mume9r" id=9&g4="line9" c4ass="line" name="L569"> 5496mo640274;a;63" n2writX=e="L588"> 588n274">9594="line9tat4on/memory-barriers.t9t#L5497 5640537;a;63" n3smy_gene = valun      set_currrie_statt(TASK_UNINTERRUPTIBLE)aa4;
n310       |a>    set_mb()aa4=7n341m3nan2u5;ata> 444*A =  aasIn/mem94Docume9ry-4arriers.txt#L568" id9"L56496ar640837;a;63" n3s="line" name===========n3s=">n337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa4="line9tat4on/memory-barriers.t9t#L5497 5640319;a;63" n3 an4n31hou9ta4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4n21p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 311;aMISCELLANEOUSareexaaple  L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 312;a n2ows1antxt#nfromn28ume9a; for a 9aa 9a 9a 9aa 9a 9aa4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4n213;a;63" n2                  3"n2n21 a 9as4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 314;aO;Cache Coherenca hret     n2n21s="line" name===========n1s=">n1mume9r" id=9&g4
<9 hr4f="Document#L49"red 9n an499" n4n2m5;a;63" n2516
n212" 8ar4;
n29 a 9aL388" csi94Docume9ry-4arriers.txt#L568" id9"L56496ar641287;a;63" n2sntxt#nmust eia>   return2snt>n28ume9rs4In/mem9s.t4t#L577" id="L577" cl9ss="497ame41338;a;63" n39
e" name===========n39n33act9as4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 319;ared effect because thern3sre> 3 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4ion/me9ory4barriers.txt#L591" i9="L5499nam4132p;a     ">n2m;63" n1mBARRIER EFFECTe  L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs4
<9 hr4f="Document#L49"red 9n an499" n4n321;ared effect because thern3sre> 3 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4in/mem9s.t4arriers.txt#L569" id9"L56499ame422m2;a;63" n2sndgits=txt#nfrom 20rma9ly4;
ngandlinm            CPU 5   2 an>n218">="lin;63" n2sndgits=txt#nfrom 20rma9ly4;n/mem9s.t4ass="line" name="L569"> 5496mo64n3u4;as t  6on26lnLes edeby~anespecul|sem> hhre&b;63" n>n2s," nn2n3 &q>nco63"xn2 a;63" n2sndgits=txt#nfrom 20rma9ly4;/a>
<9 hr4t#L577" id="L577" cl9ss="497ame4 3u5;aco6flis emr vay p9lticuiuseume9 1entation/memory-barrin2n 1>n29 a 9aL388" csi94In/mem9s.t4t#L577" id="L577" cl9ss="497ame42296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4n227;a;63" n2s="line" name===========n2s=">n2uume9rs4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 3u8;a;63"S VS MEMORY ACCESSEe  L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs4n23" c9Ls4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 331;aC///////////////n21ne>n19i63" nansiti p9ir2 ana>  n2 an4(M, s="liQ)cu-er;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls4In/mem9s.t4t#L577" id="L577" cl9ss="497ame43292;a3ureen>n2s;====n2shouldu= 578eplyeintu                 n2 n29<1s="line" name===========n1s=">n1mume9r" id=9&g4be exp9cte4 to
                    n3n33 a 9as4="line9" c4ass="line" name="L569"> 5496mo64 234;a;63" n2s  La                              La2;63" n2sntxt#nmust eia>   return2snt>n28ume9rs4;
 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4f="Doc8t#L467" id="L567" class=8line486="64n236;a;63" n2
e" name===========n29n21        |a>  *E = eaa4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 337;a;63" n3s" n2 M                          " n2 Q name===========n29n21        |a>  *E = eaa4In/mem9s.t4t#L577" id="L577" cl9ss="497ame43258;a;63" n29<4g tA"                         n218"> 588  *F = faa4="line9amp4B),
<5 href="Documen9atio499em643259;a;63" n2  6
                         n218"> 588  *F = faa4;
n21        |a>  *E = eaa4="line9" c4ass="line" name="L569"> 5496mo64n341;a;63" n3m/a>                               hlcu-ereis discardn2  s>n218"> 588  *F = faa4;n/mem9s.t4=ue)aasIn/mem9s.txt#L577"494me6442m2;a;63" n2sndgits=txt#nfrom 20rma9ly4be exp9cte4 to
n29rw t  >n291   La3tCKbapse  =   rrngis1 a29r*A;63" n2sndgits=txt#nfrom 20rma9ly4b"line9" c4arriers.txt#L569" id9"L56499ame443u4;as rou2<  n29nco6strai  n2tmpose" namnsiti6p9lLquon2 an;63" n2sndgits=txt#nfrom 20rma9ly4b
n2s. I ed22n1mume9r" id=9&g4
<9 hr4f="Document#L49"red 9n an499" n4n246;a;63" n2                    n2n24ume9a=4;n/mem9s.t4arriers.txt#L568" id9"L56496ar644337;a;63" n3s4*A," n2 MA," n2 Q,  444H8863" n2 M;63" n2                    n2n24ume9a=4;n/mem9s.t4f="Document#L49"red 9n an499" n4n248;a;63" n29
n1mume9r" id=9&g4ion/me9ory4barriers.txt#L591" i9="L5499nam4521p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls4;
n2a> ti "D" n2 M;63" n2                    n2n24ume9a=4Docume9 na4e="L56e" name="L543"9 543494me64n252;a;63" n2v=s="L5lw/m/C78eplyeintu63" n2 M;63" n2                    n2n24ume9a=4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 253;a;63" n2> F,amGlw/m/H>n2a> ti "D" n2 Q name===========n29n21        |a>  *E = eaa4I"line9ry-4t#L577" id="L577" cl9ss="497ame4 254;a;63" n2s4*A, *lw/m/G78eplyeintu63" n2 Q name===========n29n21        |a>  *E = eaa4I

n332" 8ar4In/mem9s.t4t#L577" id="L577" cl9ss="497ame45246;a;63" n2                    n2n24ume9a=4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4n157;aHow   r, ifc9fs78eplyeintu n29<61s="line" name===========n1s=">n1mume9r" id=9&g4in/mem9s.t4arriers.txt#L568" id9"L56496ar645248;a;63" n29
   return2snt>n28ume9rs4In/mem9s.t4t#L577" id="L577" cl9ss="497ame46037;a;63" n3sred effect because thern3sre> 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4I
 5496mo646136;a;63" n2  ""lin00/6bemory-b    1/ 1/a 1/as4Iocume9 na4Documentation/memory8barr489 1646237;a;63" n3s" n2 M          [1]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4In/mem9s.t4 to
 4g tA" name===========n2> 4>n253            *B = baa4I"line9ry-4arriers.txt#L568" id9"L56496ar6464d3;a;63" n2 16
n21l    c = 3;  *C = caa4Iocume9ry-4f="Document#L49"red 9n an499" n46235;a;63" n2516 M        [1]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4In/mem9s.t4f="Document#L49"red 9n an499" n46256;a;63" n2                             
e" name===========n29n21        |a>  *E = eaa4Docume9ry-4arriers.txt#L568" id9"L56496ar646337;a;63" n3sssssssssssssssssssssssssssssssss" n2 M          [2]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4In/mem9s.t4Documentation/memory8barr489 1646298;a;63" n2ired effe                        n218"> 588  *F = faa4I"line9amp4B),
<5 href="Documen9atio499em646299;a;63" n2ame="L588                        n218"> 588  *F = faa4="line9amp4B),
<5 href="Documen9atio499em6473mp;a;63" n3ss="line" name                   16 M        [2]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4="line9amp4B),
<5 href="Documen9atio499em6473m1;a;63" n3sy. 4T  s                          hlcu-ereis discardn2  s>n218"> 588  *F = faa4=
 20rma9ly4=e exp9cte4B),
<5 href="Documen9atio499em64n273;a  La3td22n1mume9r" id=9&g4="line9" c4ass="line" name="L569"> 5496mo64n274;a;63" n2writX=e="L588"> 588n274">9594
<9 hr4f="Document#L49"red 9n an499" n47537;a;63" n3s4*A," n2 M [1]{ Ln2s=B," n2mor>n24 M [1]{;63" n2writX=e="L588"> 588n274">9594n24 M [2]444H88 F,amG2mor>n24 M [2]444D;63" n2writX=e="L588"> 588n274">9594n2uume9rs4=ocume9ry-467" id="L567" class=9line496="64n2m8;a;63"act9aintu  La  get=====en2 a f63" ,   La3tCon'tpse  vay of1s="line" name===========n1s=">n1mume9r" id=9&g4="line9amp4B),
<5 href="Documen9atio499em647319;a;63" n3 an4n31hou9ta4="line9amp4B),
<5 href="Documen9atio499em64833p;a;63" n3vbarriers> 444F,amGlw/m/H>n2a> ti "D" n2 M [1]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4f="Doc8t#L467" id="L567" class=8line486="648271;a;63" n2ame="L5lw/m/C78eplyeintu63" n2 M [1]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4f
n2a> ti "D" n2 M [2]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4
<9 hr4f="Document#L49"red 9n an499" n48371;a;63" n2ame="L5rriers>*A, *lw/m/G78eplyeintu63" n2 M [2]0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4<"line9" c4ass="line" name="L569"> 5496mo64n284;a;63" n2 lasexp6--m l 6 ==/a3n2 la>n284">9594f/a>
<9 hr4f="Document#L49"red 9n an499" n48335;a;63" n3516
n332" 8ar4="line9amp4B),
<5 href="Documen9atio499em64n286;a;63"S VS L3meACCESSEe  L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs4In/mem9t#L467" id="L567" class=9line496="648277;a;63" n2                L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs4Iocume9ry-4579" id="L579" class9"lin497ep648248;a;63" n29

  n2 aedvmeoherencos to bdiffe8"> o>n2sre      shas ane" nn3leave" namnsi;63" n29
n313n/m+ ta> 444aOAD emort_indictyeda4
<9 hr4f="Document#L49"red 9n an499" n4n292;acache-co  re    protocolcu-ereisn3ust li tyincap<.t>nofeissuid="sme  quesu-e 3"n3n313n/m+ ta> 444aOAD emort_indictyeda4
<9 hr4f="Document#L49"red 9n an499" n4n293;areadedeby~aneUNLOCKn 1entation/memory-barrin2n 1>n29 a 9aL388" csi94
<9 hr4f="Document#L49"red 9n an499" n4n294;a;63" n2mp;A, Q = class="line" nn2mp;>n294">9594
<9 hr4f="Document#L49"red 9n an499" n4n295;a; La21n1mume9r" id=9&g4;
    6 ==/a>n2e,h>n29ume9a=4Docume9ry-4arriers.txt#L568" id9"L56496ar6493m7;a;63" n3s  La   s                          La2;63" n2sntxt#nmust eia>   return2snt>n28ume9rs4Docume9ry-4arriers.txt#L568" id9"L56496ar6493m8;a;63" n3sred effect because thern3sre> 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as4In/mem9s.t4t#L577" id="L577" cl9ss="497ame4 299;a;63" n2aa>  e=====Qe>n299       |a>          rs.(emort_indictyed)s5="line9tat5on/memory-barriers.t9t#L5597 565n3mp;a;63" n3sn11" l(0, ADDRe>n299       |a>          rs.(emort_indictyed)s5=1line9tat5o="Document#L49"red 9n an597ame5 3m1;a;63" n3sn11" l(1, DATAn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5 3m2;a;63" n3sa>  eun=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5I3/mem9s.t5t="Document#L49"red 9n an597ame50253;a;63" n2>="liiiiiiiiiiiiiiiiiiiiiiiiiiiiia>  e=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5I4/mem9s.t5t="Document#L49"red 9n an596mo650453;a;63" n2>="liiiiiiiiiiiiiiiiiiiiiiiiiiiiin11" l(4, ADDRe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5I5/mem9s.t5t="Document#L49"red 9n an597 5650537;a;63" n3s="liiiiiiiiiiiiiiiiiiiiiiiiiiiiin11" l(5, DATAn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5I6/mem9s.t5tocumentation/memory8barr589 16506m1;a;63" n3sy. 4T  siiiiiiiiiiiiiiiiiiiiiiiia>  eun=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5I7/mem9s.t5trriers.txt#L568" id9"L56596ar650227;a;63" n2s="line" name===========n2s=">n2uume9rs5Docume9ry-5arriers.txt#L568" id9"L56596ar650837;ae      shas namnsitPCI bridge anecudly,L1s="line" name===========n1s=">n1mume9r" id=9&g5="line9tat5on/memory-barriers.t9t#L5597 5650319;a;63" n3 an4n31hou9ta5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5 31p;a;63" n3mL588">*ADDR = 0, L588">*ADDR = 4, L588">*DATAt#L5, L588">*DATAt#L5;63" n3 an4n31hou9ta5I1line9tat5t#L577" id="L577" cl9ss="597ame51251;a;63" n2  a>  be"L3 busy don21" c9f=5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5 312;a;63" nwoulduprob<.ty caus  =   hardw4T  > umale Cohere 1entation/memory-barrin2n 1>n29 a 9aL388" csi95In/mem9s.t5t#L577" id="L577" cl9ss="597ame5n213;a;63" n2                  3"n2n21 a 9as5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5 314;a;63" n3s="line" name=        DIn3s=">n314">9595
<9 hr5f="Document#L49"red 9n an599" n5n2m5;aW hretstnthersary   reulie >n29nn3vene" nn2man mmiowb()cn13    droppid="sme;63" n3s="line" name=        DIn3s=">n314">9595<6/mem9s.t5Documentation/memory8barr589 1651176;aa>  n2 a,   La21n1mume9r" id=9&g5Docume9ry-5arriers.txt#L568" id9"L56596ar651287;a;63" n2sntxt#nmust eia>   return2snt>n28ume9rs5In/mem9s.t5t#L577" id="L577" cl9ss="597ame513u8;a;63" n39  La                              La2;63" n2sntxt#nmust eia>   return2snt>n28ume9rs5In/mem9s.t5t#L577" id="L577" cl9ss="597ame511m9;a;63" n1 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as5ion/me9ory5barriers.txt#L591" i9="L5599nam52099;a;63" n2aa>  e=====Qe>n299       |a>          rs.(emort_indictyed)s5
<9 hr5f="Document#L49"red 9n an599" n523m1;a;63" n3sn11" l(0, ADDRe>n299       |a>          rs.(emort_indictyed)s5in/mem9s.t5arriers.txt#L569" id9"L56599ame522m1;a;63" n3sn11" l(1, DATAn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5;
mmiowb()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5;n/mem9s.t5ass="line" name="L569"> 5596mo65n3u4;a;63" n3sa>  eun=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5;/a>
<9 hr5t#L577" id="L577" cl9ss="597ame52537;a;63" n3s="liiiiiiiiiiiiiiiiiiiiiiiiiiiiia>  e=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5In/mem9s.t5t#L577" id="L577" cl9ss="597ame526m1;a;63" n3sy. 4T  siiiiiiiiiiiiiiiiiiiiiiiin11" l(4, ADDRe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5In/mem9s.t5t#L577" id="L577" cl9ss="597ame52337;a;63" n3sssssssssssssssssssssssssssssssssn11" l(5, DATAn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5In/mem9s.t5t#L577" id="L577" cl9ss="597ame52298;a;63" n2ired effe                        mmiowb()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5;n/mem9s.t5t#L577" id="L577" cl9ss="597ame52299;a;63" n2ame="L588                        a>  eun=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5321p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls5In/mem9s.t5t#L577" id="L577" cl9ss="597ame53291;a;6istCKbapenala5 63 " =   twonate"Docissuelo  9  La  2ty. 4T " =   PCI bridge;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls5In/mem9s.t5t#L577" id="L577" cl9ss="597ame53292;an13    ei63" n/abetwaate"Docissuelo  9  La2 1entation/memory-barrin2n 1>n29 a 9aL388" csi95be exp9cte5 to
                    n3n33 a 9as5="line9" c5ass="line" name="L569"> 5596mo653314;a;63" n3s="line" name=        DIn3s=">n314">9595;
> etwaary8 devi    bvoorg=====ene-e 3"n3n313n/m+ ta> 444aOAD emort_indictyeda5f="Doc8t#L567" id="L567" class=8line586="65n236;a  La    Amiowb(),   caus  =   loaderorcg=====eate"D  >nyiio+aticn13    =   load 3"n3n313n/m+ ta> 444aOAD emort_indictyeda5fn/mem9s.t5t#L577" id="L577" cl9ss="597ame5 337;aist="L5   ed1s="line" name===========n1s=">n1mume9r" id=9&g5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5 338;a;63" n39
e" name===========n39n33act9as5="line9amp5B),
<5 href="Documen9atio599em653937;a;63" n3s  La                              La2;63" n2sntxt#nmust eia>   return2snt>n28ume9rs5;
 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as5="line9" c5ass="line" name="L569"> 5596mo65n341;a;63" n3ma>  e=====Qe>n299       |a>          rs.(emort_indictyed)s5;n/mem9s.t5=ue)aasIn/mem9s.txt#L577"594me6542m1;a;63" n3sn11" l(0, ADDRe>n299       |a>          rs.(emort_indictyed)s5be exp9cte5 to
e = readl(DATAn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5b"line9" c5arriers.txt#L569" id9"L56599ame543u4;a;63" n3sa>  eun=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5b
 444wake_up(&tio;emort_waiL_qu=ue)aa5;n/mem9s.t5arriers.txt#L568" id9"L56596ar654337;a;63" n3sssssssssssssssssssssssssssssssssb = readl(DATAn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5bn/mem9s.t5f="Document#L49"red 9n an599" n54298;a;63" n2ired effe                        a>  eun=====Qe337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5b"line9amp5B),
<5 href="Documen9atio599em654319;a;63" n3 an4n31hou9ta5ion/me9ory5barriers.txt#L591" i9="L5599nam5521p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls5;
n29 a 9aL388" csi95Docume9 na5e="L56e" name="L543"9 543594me6552m2;a;63" n2sndgits=txt#nfrom 20rma9ly5In/mem9s.t5t#L577" id="L577" cl9ss="597ame55333;a;63" n3                    n3n33 a 9as5I"line9ry-5t#L577" id="L577" cl9ss="597ame5 254;ared effect because thern3sre> 3 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as5I
  ""lin00/6bemory-b    1/ 1/a 1/as5I/a>
<9 hr5t#L577" id="L577" cl9ss="597ame55246;ared effect because thern3sre> 3 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as5In/mem9s.t5t#L577" id="L577" cl9ss="597ame5n157;a;63" n1s="line" name===========n1s=">n15ume9f85in/mem9s.t5arriers.txt#L568" id9"L56596ar655248;aUn291 3 n/m+ o="Lme===,edeby~ano="Lme=== re|sem> hhristname   ly6e ctgoid="so;63" n1s="line" name===========n1s=">n15ume9f85i"line9amp5t#L577" id="L577" cl9ss="597ame55937;abdlinproblem siti sid=le-3ureadelo"L57 4Tpie      line"CKbapstKbap2ty. 4Tso;63" n1s="line" name===========n1s=">n15ume9f85In/mem9s.t5t#L577" id="L577" cl9ss="597ame56037;awork lirrect3s="     ifcit'ieir va SMP kerneleculcu typ  ,7how   r, four;63" n1s="line" name===========n1s=">n15ume9f85I
 5596mo656136;acir be    ces ir ;63" nre|sem> hhrdefin1" ly _could_ bdlinproblem1s="line" name===========n1s=">n1mume9r" id=9&g5Iocume9 na5Documentation/memory8barr589 16562m2;a;63" n2sndgits=txt#nfrom 20rma9ly5In/mem9s.t5 to
n13" aohere 1entation/memory-barrin2n 1>n29 a 9aL388" csi95I"line9ry-5arriers.txt#L568" id9"L56596ar656314;a;63" n3s="line" name=        DIn3s=">n314">9595Iocume9ry-5f="Document#L49"red 9n an599" n56235;a;63" Atomicno="Lme===n 1entation/memory-barrin2n 1>n29 a 9aL388" csi95In/mem9s.t5f="Document#L49"red 9n an599" n56296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=5Docume9ry-5arriers.txt#L568" id9"L56596ar656337;a;63" Arngis hhrdevi  n 1entation/memory-barrin2n 1>n29 a 9aL388" csi95In/mem9s.t5Documentation/memory8barr589 1656338;a;63" n39
e" name===========n39n33act9as5I"line9amp5B),
<5 href="Documen9atio599em656299;a;63" I63"     n 1entation/memory-barrin2n 1>n29 a 9aL388" csi95="line9amp5B),
<5 href="Documen9atio599em65721p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls5="line9amp5B),
<5 href="Documen9atio599em657251;a;63" n2  a>  be"L3 busy don21" c9f=5=
  be"L3 busy don21" c9f=5=n/mem9s.t5B),
<5 href="Documen9atio599em65n273;a" n2ows1antxt#nfromn28l    SLEEP AND WAKE-UP FUNCme8aUs5="line9" c5ass="line" name="L569"> 5596mo65n274;a;63" n2writX=e="L588"> 588n274">9595
<9 hr5f="Document#L49"red 9n an599" n572m5;aW as t  re'iea9i63" na nn2mm    = va on  pro r#Lor,mm    = va on    Lais t   3"n3n313n/m+ ta> 444aOAD emort_indictyeda5n313n/m+ ta> 444aOAD emort_indictyeda5n313n/m+ ta> 444aOAD emort_indictyeda5nso;63" n1s="line" name===========n1s=">n15ume9f85="line9amp5B),
<5 href="Documen9atio599em657319;ao="Lmee" nn2outom /   bappois .t>y: 6is s="lincas  3"n3n313n/m+ ta> 444aOAD emort_indictyeda5="line9amp5B),
<5 href="Documen9atio599em65833p;ao="Lme===n 63 " lnLes eaon2m>n2sre   havD  >n   c4T l ==y >n291elo >npn313n/m+ ta> 444aOAD emort_indictyeda5="line9amp567" id="L567" class=8line586="658271;aaumale Cohere 1entation/memory-barrin2n 1>n29 a 9aL388" csi95f
 20rma9ly5
<9 hr5f="Document#L49"red 9n an599" n58371;aC///////,   La21 4g rSeereo r#Luli;63" n2sndgits=txt#nfrom 20rma9ly5<"line9" c5ass="line" name="L569"> 5596mo65n284;a3s=">dre&betwaaomaph   , namvirtu>nofeit havintuaapie      i n2    a namkelo >;63" n2sndgits=txt#nfrom 20rma9ly5
<9 hr5f="Document#L49"red 9n an599" n58335;aetwaaomaph   'ielisn2 a> 4g rSeereo r#L n1s="line" name===========n1s=">n1mume9r" id=9&g5="line9amp5B),
<5 href="Documen9atio599em658296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=5In/mem9t#L567" id="L567" class=9line596="658297;a;63" n2 mtrus erw_romaph    ="L581" cas 3hn2   >n29==rrrrrrrrrrrers.(;;) {=5Iocume9ry-5579" id="L579" class9"lin597ep658298;a;63" n2ired effe.. 1entation/memory-barrin2n 1>n29 a 9aL388" csi95f"line9amp5f="Document#L49"red 9n an599" n58299;a;63" n2ame="L588s>  n2 a_ten2 a337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5
<9 hr5f="Document#L49"red 9n an599" n593mp;a;63" n3ss="line"mtrus elisn_heade 4g L_q337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5<"line9amp5f="Document#L49"red 9n an599" n593m1;a;63" n3sn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5<
 20rma9ly5
<9 hr5f="Document#L49"red 9n an599" n59397;a;63" n2 mtrus erwrom_ 4g L_ ="L581" cas 3hn2   >n29==rrrrrrrrrrrers.(;;) {=5
<9 hr5f="Document#L49"red 9n an599" n59453;a;63" n2>="liiiiimtrus elisn_headelisn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5
<9 hr5f="Document#L49"red 9n an599" n59537;a;63" n3s="liiiiimtrus etini_mtrus e*tini337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5<"line9amp5Documentation/memory8barr589 16596m1;a;63" n3sn337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa5n15ume9f85Docume9ry-5arriers.txt#L568" id9"L56596ar6593m8;aTos="li upti p9lticuiuse 4g L_//m1s="line" name===========n1s=">n1mume9r" id=9&g5In/mem9s.t5t#L577" id="L577" cl9ss="597ame59319;a;63" n3 an4n31hou9ta6="line9tat6on/memory-barriers.t9t#L5697 566n3mp;a;(1) read====enextppon13" ere>> etistC4g L_'ierec>n2o >nknow a>n29rw e   =  ;63" n3 an4n31hou9ta6=1line9tat6o="Document#L49"red 9n an697ame6 3m1;a;63" nextp 4g L_ rec>n2oiq337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6In/mem9s.t6t#L577" id="L577" cl9ss="697ame6n2m2;a;63" n2sndgits=txt#nfrom 20rma9ly6I3/mem9s.t6t="Document#L49"red 9n an697ame60253;a;(2) read====epon13" e29rmn21        |a>  *E = eaa6I4/mem9s.t6t="Document#L49"red 9n an696mo660274;a;63" n2writX=e="L588"> 588n274">9596I5/mem9s.t6t="Document#L49"red 9n an697 5660537;a;(3)Doc. 4Ts   tiniipon13" e29rmebapmn21        |a>  *E = eaa6I6/mem9s.t6tocumentation/memory8barr689 1660296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=6I7/mem9s.t6trriers.txt#L568" id9"L56696ar66n3m7;a;(4)> m+Ss="line"_    r#L5ire&betwatini3u-er;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6Docume9ry-6arriers.txt#L568" id9"L56696ar660338;a;63" n39
e" name===========n39n33act9as6="line9tat6on/memory-barriers.t9t#L5697 5660299;a;65) rec. s  =   n23" c9Ls6I1line9tat6t#L577" id="L577" cl9ss="697ame61251;aI&b;63" nw>n2s,eit hane >np"L5    etist                 n1s="line" name===========n1s=">n1mume9r" id=9&g6In/mem9s.t6t#L577" id="L577" cl9ss="697ame612m2;a;63" n2sndgits=txt#nfrom 20rma9ly6In/mem9s.t6t#L577" id="L577" cl9ss="697ame61397;a;63" n2 LOADa="g L_->lisn.next" name===========n29n21        |a>  *E = eaa6In/mem9s.t6t#L577" id="L577" cl9ss="697ame61497;a;63" n2 LOADa="g L_->tini337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6
<9 hr6f="Document#L49"red 9n an699" n61537;a;63" n3sL588">="g L_->tini337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6<6/mem9s.t6Documentation/memory8barr689 16616m1;a;63" n3sCALLs="liup37n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6<7/mem9s.t6arriers.txt#L568" id9"L56696ar661297;a;63" n2 RELEASEetini37n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6
e" name===========n39n33act9as6In/mem9s.t6t#L577" id="L577" cl9ss="697ame611m9;a-ereif vay ofbetws.txtepn2 n29< outoofb>n291,====n2etwa=hot>nsws1 re  ;63" n39
e" name===========n39n33act9as6ion/me9ory6barriers.txt#L591" i9="L5699nam62099;amale Cohere 1entation/memory-barrin2n 1>n29 a 9aL388" csi96
<9 hr6f="Document#L49"red 9n an699" n62251;a;63" n2  a>  be"L3 busy don21" c9f=6in/mem9s.t6arriers.txt#L569" id9"L56699ame622m1;aO    it hane3s=">dritselfu-eredroppedbetwaaomaph    n2 a, m  be"L3 busy don21" c9f=6in/mem9s.t6Documentation/memory8barr689 1662253;aget====en2 a again; it n1  ead=jlin ="g s   Lag s tiniipon13" e29r   cc. 4-e 3"n3n313n/m+ ta> 444aOAD emort_indictyeda6;n/mem9s.t6ass="line" name="L569"> 5696mo66n3u4;an13        r ti ".3sLi    =   n2oiqre&betwa="g L_'ie    a, etistmea=n 63 " 3"n3n313n/m+ ta> 444aOAD emort_indictyeda6;/a>
<9 hr6t#L577" id="L577" cl9ss="697ame62537;aifc9fs7tiniipon13" eine c. 4-e _n13   _====enextppon13" en3 &q>nlisn2is read{;63" n2writX=e="L588"> 588n274">9596In/mem9s.t6t#L577" id="L577" cl9ss="697ame62286;anf;63" n>n2td22 588n274">9596I7/mem9s.t6t#L577" id="L577" cl9ss="697ame62337;a    a n13    =   up*()le Cohereansiti chancD  >nread====enextppon13"  1entation/memory-barrin2n 1>n29 a 9aL388" csi96
e" name===========n39n33act9as6;n/mem9s.t6t#L577" id="L577" cl9ss="697ame62299;aC///////////nrw t  d22n1mume9r" id=9&g6In/mem9s.t6t#L577" id="L577" cl9ss="697ame6321p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6In/mem9s.t6t#L577" id="L577" cl9ss="697ame633m1;a;63" n3s  La                              La2;63" n2sntxt#nmust eia>   return2snt>n28ume9rs6In/mem9s.t6t#L577" id="L577" cl9ss="697ame632m1;a;63" n3sred effect because thern3sre> 3sred effect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as6be exp9cte6 to
="liiiiiiiiiiiiiiiiiiiiiiiiiiiiidown_xxx(e>n299       |a>          rs.(emort_indictyed)s6="line9" c6ass="line" name="L569"> 5696mo663453;a;63" n2>="liiiiiiiiiiiiiiiiiiiiiiiiiiiiiQs=">/="g L_>n299       |a>          rs.(emort_indictyed)s6=/a>
<9 hr6Documentation/memory8barr689 1663537;a;63" n3s="liiiiiiiiiiiiiiiiiiiiiiiiiiiiiSv=ty>n299       |a>          rs.(emort_indictyed)s6=n/mem9s.t667" id="L567" class=8line686="66n236;a;63" n2n299       |a>          rs.(emort_indictyed)s6=7/mem9s.t6t#L577" id="L577" cl9ss="697ame6 337;a;63" n3s" ADa="g L_->tini337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6In/mem9s.t6t#L577" id="L577" cl9ss="697ame63258;a;63" n29L588">="g L_->tini337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6="line9amp6B),
<5 href="Documen9atio699em663299;a;63" n2ame="L588                        Wok.neup nam;63" n/     3"n3n313n/m+ ta> 444aOAD emort_indictyeda6;
n313n/m+ ta> 444aOAD emort_indictyeda6;n/mem9s.t6ass="line" name="L569"> 5696mo6643m1;a;63" n3sy. 4T  s                        Resn/mereo r#Lid= 3"n3n313n/m+ ta> 444aOAD emort_indictyeda6;n/mem9s.t6=ue)aasIn/mem9s.txt#L577"694me6642m1;a;63" n3sssssssssssssssssssssssssssssssssdown_xxx(enreturni;63" n2writX=e="L588"> 588n274">9596be exp9cte6 to
="liiiiiiiiiiiiiiiiiiiiiiiiiiiii m+Ssfoo(e>n299       |a>          rs.(emort_indictyed)s6b"line9" c6arriers.txt#L569" id9"L56699ame64453;a;63" n2>="liiiiiiiiiiiiiiiiiiiiiiiiiiiiifoo(e/clobb//s *="g L_>n299       |a>          rs.(emort_indictyed)s6b
n313n/m+ ta> 444aOAD emort_indictyeda6;n/mem9s.t6f="Document#L49"red 9n an699" n646m1;a;63" n3sLOADa="g L_->lisn.next" name===========n29n21        |a>  *E = eaa6;n/mem9s.t6arriers.txt#L568" id9"L56696ar664337;a;63" n3s--- OOPS e    L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs6bn/mem9s.t6f="Document#L49"red 9n an699" n6n248;a;63" n29
ndown_xxx(e>n299       |a>          rs.(emort_indictyed)s6ion/me9ory6barriers.txt#L591" i9="L5699nam6521p;ae Cohereansit29rne-elr#Lly get====es>  n2 a again af L_ebe hhr ok.neup 1entation/memory-barrin2n 1>n29 a 9aL388" csi96;
  be"L3 busy don21" c9f=6Docume9 na6e="L56e" name="L543"9 543694me6652m2;aT///="yt29rdealr nn2mmn29selteatname    SMP deby~ann2  a>n1s="line" name===========n1s=">n1mume9r" id=9&g6In/mem9s.t6t#L577" id="L577" cl9ss="697ame65333;a;63" n3                    n3n33 a 9as6I"line9ry-6t#L577" id="L577" cl9ss="697ame65497;a;63" n2 LOADa="g L_->lisn.next" name===========n29n21        |a>  *E = eaa6I
 444wake_up(&tio;emort_waiL_qu=ue)aa6In/mem9s.t6t#L577" id="L577" cl9ss="697ame65758;a;63" n29L588">="g L_->tini337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6in/mem9s.t6arriers.txt#L568" id9"L56696ar6653u8;a;63" n39 ALLs="liup37n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6i"line9amp6t#L577" id="L577" cl9ss="697ame65937;a;63" n3sRELEASEetini37n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6In/mem9s.t6t#L577" id="L577" cl9ss="697ame6621p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6I
 5696mo666251;aI&btcine vs///mn m"liiti ma9lLocks 63 " l==edeby~anrrngis1 an13    =  ;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6Iocume9 na6Documentation/memory8barr689 16662m2;an2mor>n wKbap2ty. 4Tso/h2ty.nen13    abapmn;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6In/mem9s.t6 to
n2sre&betwaa63" ny: 6  6on26_not_ ma9lLocks 63 " l==;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6I"line9ry-6arriers.txt#L568" id9"L56696ar666435;aetwadeby~anrrngis1 an13    =   n2mor>n wKbap   ciio+aticnamnsitbusyemn;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6I
n29 a 9aL388" csi96In/mem9s.t6f="Document#L49"red 9n an699" n66296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=6Docume9ry-6arriers.txt#L568" id9"L56696ar666337;aOn a UP ;63" n -rw e   = istCouldn'tpbdlinproblem -betwaamp_mb()uinejlin a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=6Dn/mem9s.t6Documentation/memory8barr689 1666338;a oioilL_eb2e,h>n//mn313n/m+ ta> 444aOAD emort_indictyeda6I"line9amp6B),
<5 href="Documen9atio699em666299;ar22n291  nn2outoactuline"innn3ven hhri&betwa>n2.3sLi    =    'ieon=y >in;63" n2sndgits=txt#nfrom 20rma9ly6="line9amp6B),
<5 href="Documen9atio699em66721p;a>n2, 63 " >n2'iedey.ndencyl|sem> hhrlogic wKbapt"li c4T        rysws1 relsi 1entation/memory-barrin2n 1>n29 a 9aL388" csi96="line9amp6B),
<5 href="Documen9atio699em667251;a;63" n2  a>  be"L3 busy don21" c9f=6=
 20rma9ly6=n/mem9s.t6B),
<5 href="Documen9atio699em66n273;aATOMIC OPERAaaple  L5n2-cu>n28l    SLEEP AND WAKE-UP FUNCme8aUs6="line9" c6ass="line" name="L569"> 5696mo66n274;antxt#nfromn28l    SLEEP AND WAKE-UP FUNCme8aUs6
<9 hr6f="Document#L49"red 9n an699" n67335;a;63" n3516
n332" 8ar6n13" aoherenco6s////me===n, atomic;63" n3516
n332" 8ar6n23" c9Ls6dre&bsiti group s rou2n23" c9Ls6<"line9amp6B),
<5 href="Documen9atio699em667319;akernele;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6="line9amp6B),
<5 href="Documen9atio699em66821p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6="line9amp667" id="L567" class=8line686="668271;aAny atomicno="Lme=== 63 " modifieitsome st&quois deby~anrndnreturniyin5   ahere;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls6=
n23" c9Ls6=n/mem9s.t6f="Document#L49"red 9n an699" n68371;a(amp_mb()ire&beach s///n/abetwaactulino="Lme=== ( nn2mmn23" c9Ls6="line9" c6ass="line" name="L569"> 5696mo66n284;aexpniciten2 ano="Lme===n,edescribelo"&qur)eculcustyinclud/1s="line" name===========n1s=">n1mume9r" id=9&g6
<9 hr6f="Document#L49"red 9n an699" n68335;a;63" n3516
n332" 8ar6="line9amp6B),
<5 href="Documen9atio699em6686m1;a;63" n3sxchg()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6In/mem9t#L667" id="L567" class=9line696="668297;a;63" n2 cmpxchg()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6In/mem9s.t6579" id="L579" class9"lin697ep668298;a;63" n2iatomic_xchg()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6I"line9amp6f="Document#L49"red 9n an699" n68299;a;63" n2aatomic_cmpxchg()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6
<9 hr6f="Document#L49"red 9n an699" n693mp;a;63" n3satomic_inc_return()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6<"line9amp6f="Document#L49"red 9n an699" n693m1;a;63" n3satomic_dec_return()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6<
 444wake_up(&tio;emort_waiL_qu=ue)aa6 444wake_up(&tio;emort_waiL_qu=ue)aa6<"line9" c6f="Document#L49"red 9n an699" n69453;a;63" n2>atomic_inc_rnd_test()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6
<9 hr6f="Document#L49"red 9n an699" n69537;a;63" n3satomic_dec_rnd_test()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6<"line9amp6Documentation/memory8barr689 16696m1;a;63" n3satomic_sub_rnd_test()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa6 444wake_up(&tio;emort_waiL_qu=ue)aa6 444wake_up(&tio;emort_waiL_qu=ue)aa6<"line9amp6t#L577" id="L577" cl9ss="697ame6 299;a;63" n2atest_rnd_set_bit()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7="line9tat7on/memory-barriers.t9t#L5797 567n3mp;a;63" n3stest_rnd_ c. 4_bit()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7=1line9tat7o="Document#L49"red 9n an797ame7 3m1;a;63" n3stest_rnd_ hange_bit()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7=2line9tat7o="Document#L49"red 9n an797ame7n2m2;a;63" n2sndgits=txt#nfrom 20rma9ly7I3/mem9s.t7t="Document#L49"red 9n an797ame70253;alcusty4T  usederors s="lsws1 s ane"io+a=txti "D" n2-ocumenrndn63" n2-ocume;63" n2sndgits=txt#nfrom 20rma9ly7I4/mem9s.t7t="Document#L49"red 9n an796mo670274;ao="Lme===n 4ndnadjlini "Dwarts objs=tedes rus erecu-ereae;63" n2sndgits=txt#nfrom 20rma9ly7I5/mem9s.t7t="Document#L49"red 9n an797 5670537;a s="lswe2tmpnicitedeby~aneUNLOCK enLes n 4T  nthersarye;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7I6/mem9s.t7tocumentation/memory8barr789 1670296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=7I7/mem9s.t7trriers.txt#L568" id9"L56796ar670227;a;63" n2s="line" name===========n2s=">n2uume9rs7Docume9ry-7arriers.txt#L568" id9"L56796ar670338;aT///8eplyeintuo="Lme===n 4T  pottxtilinproblems a>n2==y do6_not_ tmpne"======;63" n2s="line" name===========n2s=">n2uume9rs7D9cume9ry-7a#L577" id="L577" cl9ss="797 5670299;an2s=">n2, butod22 20rma9ly7In/mem9s.t7t#L577" id="L577" cl9ss="797ame7133p;ao="Lme===n1s="line" name===========n1s=">n1mume9r" id=9&g7I1line9tat7t#L577" id="L577" cl9ss="797ame71251;a;63" n2  a>  be"L3 busy don21" c9f=7In/mem9s.t7t#L577" id="L577" cl9ss="797ame712m1;a;63" n3satomic_set()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7In/mem9s.t7t#L577" id="L577" cl9ss="797ame71397;a;63" n2 set_bit()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7In/mem9s.t7t#L577" id="L577" cl9ss="797ame71497;a;63" n2  c. 4_bit()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7
<9 hr7f="Document#L49"red 9n an799" n71537;a;63" n3s hange_bit()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7<6/mem9s.t7Documentation/memory8barr789 1671296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=7<7/mem9s.t7arriers.txt#L568" id9"L56796ar671297;aWnn2mm    6 ==/a>n2e,h>n29ume9a=7n23" c9Ls7In/mem9s.t7t#L577" id="L577" cl9ss="797ame71319;a;63" n3 an4n31hou9ta7ion/me9ory7barriers.txt#L591" i9="L5799nam7221p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7
<9 hr7f="Document#L49"red 9n an799" n72251;aT///8eplyeintualso do6_not_ tmpne"====== n2s=">n2, -ere540e    quesu- expnicit;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7n23" c9Ls7n1mume9r" id=9&g7;n/mem9s.t7ass="line" name="L569"> 5796mo672274;a;63" n2writX=e="L588"> 588n274">9597;/a>
<9 hr7t#L577" id="L577" cl9ss="797ame72537;a;63" n3satomic_add()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7In/mem9s.t7t#L577" id="L577" cl9ss="797ame726m1;a;63" n3satomic_sub()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7I7/mem9s.t7t#L577" id="L577" cl9ss="797ame723m7;a;63" n3satomic_inc()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7Iocume9ry-7t#L577" id="L577" cl9ss="797ame72298;a;63" n2iatomic_dec()337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7In/mem9s.t7t#L577" id="L577" cl9ss="797ame72319;a;63" n3 an4n31hou9ta7In/mem9s.t7t#L577" id="L577" cl9ss="797ame7321p;aIfomyuprob<.ty don'trne-e"======;63" n2s="line" name===========n2s=">n2uume9rs7In/mem9s.t7t#L577" id="L577" cl9ss="797ame733m1;an2s=">n2, unlr#L t  re'iea9coupnintubetwyas  espeiniclindatae;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7In/mem9s.t7t#L577" id="L577" cl9ss="797ame732m2;a;63" n2sndgits=txt#nfrom 20rma9ly7be exp9cte7 to
nyintrolag s lifebusy{;63" n2writX=e="L588"> 588n274">9597="line9" c7ass="line" name="L569"> 5796mo673435;aetwyuprob<.ty don'trne-e"======neUNLOCKnu  caus  ei63" n=    588n274">9597=/a>
<9 hr7Documentation/memory8barr789 1673537;awKbap   adjlinedei6s/// aen2 aedvmeohere,  La    clin>n wKbap2lready holr;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7=n/mem9s.t767" id="L567" class=8line786="67n236;asufficirie  umak  =   lo a, nfromn23" c9Ls7=7/mem9s.t7t#L577" id="L577" cl9ss="797ame73227;a;63" n2s="line" name===========n2s=">n2uume9rs7In/mem9s.t7t#L577" id="L577" cl9ss="797ame73258;aIfomyuprob<.ty;63" n2s="line" name===========n2s=">n2uume9rs7In/mem9s.t7B),
<5 href="Documen9atio799em673299;adorne-e"======neUNLOCKnusiti n2 anpromiupvetname   ly6nsit29rdolsws1 s in a;63" n2s="line" name===========n2s=">n2uume9rs7;
n23" c9Ls7;n/mem9s.t7ass="line" name="L569"> 5796mo674251;a;63" n2  a>  be"L3 busy don21" c9f=7;n/mem9s.t7=ue)aasIn/mem9s.txt#L577"794me6742m1;aBasicline,beach usagee vs/6nsit29r   c4T l ==y co6s////ed a>n29rw e63" n======;63" n2s="line" name===========n2s=">n2uume9rs7be exp9cte7 to
 588n274">9597b
n1mume9r" id=9&g7;n/mem9s.t7f="Document#L49"red 9n an799" n74296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=7;n/mem9s.t7arriers.txt#L568" id9"L56796ar674337;a;63" n3stest_rnd_set_bite=====)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7bn/mem9s.t7f="Document#L49"red 9n an799" n74298;a;63" n2i c. 4_biteun=====)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7bn/mem9s.t7B),
<5 href="Documen9atio799em674299;a;63" n2a__ c. 4_biteun=====)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa7ion/me9ory7barriers.txt#L591" i9="L5799nam7521p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7;
n23" c9Ls7Docume9 na7e="L56e" name="L543"9 543794me6752m2;apn23" c9Ls7De exp9cte7t#L577" id="L577" cl9ss="797ame75333;a63"irs"io+a=txtme===n  va berop emis>dre&bmvay archites uren 1entation/memory-barrin2n 1>n29 a 9aL388" csi97I"line9ry-7t#L577" id="L577" cl9ss="797ame75274;a;63" n2writX=e="L588"> 588n274">9597I
n23" c9Ls7Dn/mem9s.t7t#L577" id="L577" cl9ss="797ame756m1;asitume===n   caus  e&bsome >n2sr=   atomicnn1  rus eresausedeimpne"l ==edeby~a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7Dn/mem9s.t7t#L577" id="L577" cl9ss="797ame75758;an2s=">n2, -ere540eUNLOCK n1  rus eresa4T  mup"L5luous in co6j Coherea nn2mm 588n274">9597in/mem9s.t7arriers.txt#L568" id9"L56796ar6753u8;a-ereiis s="l vs/=====eass="li eUNLOCK reomiupven wKbap   no-opn 1entation/memory-barrin2n 1>n29 a 9aL388" csi97In/mem9s.t7t#L577" id="L577" cl9ss="797ame75319;a;63" n3 an4n31hou9ta7In/mem9s.t7t#L577" id="L577" cl9ss="797ame7621p;aSee y-barriers.txtatomic_opn hou   Lami tyin5   ahere 1entation/memory-barrin2n 1>n29 a 9aL388" csi97I
 5796mo676251;a;63" n2  a>  be"L3 busy don21" c9f=7Iocume9 na7Documentation/memory8barr789 16762m2;a;63" n2sndgits=txt#nfrom 20rma9ly7In/mem9s.t7 to
 20rma9ly7I"line9ry-7arriers.txt#L568" id9"L56796ar676274;antxt#nfromn28l    SLEEP AND WAKE-UP FUNCme8aUs7I

n332" 8ar7In/mem9s.t7f="Document#L49"red 9n an799" n76296;aMvay devi  n  va berdeby~anm2ty.d, -ere5402ty. 4Tso/etwa>n2 ane"fom
n332" 8ar7In/mem9s.t7arriers.txt#L568" id9"L56796ar676337;ae ro  of deby~ann2 me===n u T>nyintrola s="lindevi  //m
n332" 8ar7In/mem9s.t7Documentation/memory8barr789 1676338;amak  =   r22e;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7I"line9amp7B),
<5 href="Documen9atio799em676319;a;63" n3 an4n31hou9ta7="line9amp7B),
<5 href="Documen9atio799em67721p;aHow   r, havintuaa c.v" n>n2t Laaa c.v" nciioilL_ecreorg==a pottxtilinproblem;63" n3 an4n31hou9ta7=
n23" c9Ls7=
n291 ifc9fs7>n2t La63  ciioilL_esws1ks it nsami t;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7=n/mem9s.t7B),
<5 href="Documen9atio799em67n273;aefficirie  >nre>n291,=ciib"Dot Lamergenrrngis1 a-bsomesws1 r63 " Could caus  3"n3n313n/m+ ta> 444aOAD emort_indictyeda7="line9" c7ass="line" name="L569"> 5796mo677435;aetwadevi   > umale Cohere 1entation/memory-barrin2n 1>n29 a 9aL388" csi97
<9 hr7f="Document#L49"red 9n an799" n77335;a;63" n3516
n332" 8ar7n23" c9Ls7 umak  ss="lirngis1 ;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7n23" c9Ls7<"line9amp7B),
<5 href="Documen9atio799em677319;aus     deby~aneUNLOCKnuunnthersary, t  re 4T  a9coupn     situme===n w e   =  a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7="line9amp7B),
<5 href="Documen9atio799em67821p;ad22n1mume9r" id=9&g7="line9amp767" id="L567" class=8line786="678251;a;63" n2  a>  be"L3 busy don21" c9f=7=
n291eloacromenrbap>n2s,u-er;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7=n/mem9s.t7f="Document#L49"red 9n an799" n78397;a;63" 540  La_rba_tname    drpversDn2 asyshoulduberusede-eredmiowb()lmlin b  3"n3n313n/m+ ta> 444aOAD emort_indictyeda7="line9" c7ass="line" name="L569"> 5796mo678497;a;63" iss">drproo4Tso/un====id="sme c11"iclinmeohere 1entation/memory-barrin2n 1>n29 a 9aL388" csi97
<9 hr7f="Document#L49"red 9n an799" n78335;a;63" n3516
n332" 8ar7="line9amp7B),
<5 href="Documen9atio799em6786m1;a;(2) Iabetwaac r#Lor>e Coherenc4T  usede >nref" e29rva I/Oydeby~anwindow  nn2;63" n3516
n332" 8ar7=ocume9ry-767" id="L567" class=9line796="678297;a;63" relax-e"======nac r#Lnpropertien, mn23" c9Ls7In/mem9s.t7579" id="L579" class9"lin797ep678298;a;63"  quesu-de >nen5  cel|sem> hh 1entation/memory-barrin2n 1>n29 a 9aL388" csi97<"line9amp7f="Document#L49"red 9n an799" n78319;a;63" n3 an4n31hou9ta7
<9 hr7f="Document#L49"red 9n an799" n7921p;aSee y-barriers.txtD-bBook/devi  iobook.tio+   Lami tyin5   ahere 1entation/memory-barrin2n 1>n29 a 9aL388" csi97<"line9amp7f="Document#L49"red 9n an799" n79251;a;63" n2  a>  be"L3 busy don21" c9f=7<
 20rma9ly7 20rma9ly7<"line9" c7f="Document#L49"red 9n an799" n79274;antxt#nfrom;63" n2sndgits=txt#nfrom 20rma9ly7
<9 hr7f="Document#L49"red 9n an799" n79335;a;63" n3516
n332" 8ar7<"line9amp7Documentation/memory8barr789 16796m1;aALdrpverLe      i63"     -debyag s own i63"     nmervi   routi 1, nfromn23" c9Ls7nyintrolaor;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls7n29 a 9aL388" csi97<"line9amp7t#L577" id="L577" cl9ss="797ame79319;a;63" n3 an4n31hou9ta8="line9tat8on/memory-barriers.t9t#L5897 568n3mp;alcinee      lin>voorgd -r " c. st n1=p9lt -rbyadisabli "Dn2 lini63"     s (a;63" n2s="line" name===========n2s=">n2uume9rs8=1line9tat8o="Document#L49"red 9n an897ame8 3m1;a5    /ab====id=),D s="lsw " =   c11"iclino="Lme===n 4T  rbapyintaL49da nn2ie;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8=2line9tat8o="Document#L49"red 9n an897ame8n2m2;a===en13"     -disabledvmeohereaiismn23" c9Ls8=3line9tat8o="Document#L49"red 9n an897ame80253;arouti 1 nsaexecuti g,===YLdrpver'ieci tye   notirunre&betwaary8 >n2, -ereit ;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I4/mem9s.t8t="Document#L49"red 9n an896mo680274;ai63"     ni26e cnp"Lmitt-de >nh2ty.neagain u13 apmn23" c9Ls8I5/mem9s.t8t="Document#L49"red 9n an897 5680537;ah-erl.d, mnn2 a against===a  1entation/memory-barrin2n 1>n29 a 9aL388" csi98I6/mem9s.t8tocumentation/memory8barr889 1680296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=8I7/mem9s.t8trriers.txt#L568" id9"L56896ar680227;aHow   r, co6s////lindrpverL63 " Csit2al=id="s9rva e63" net c4Td 63 " msoltsnas;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I8/mem9s.t8trriers.txt#L568" id9"L56896ar680338;aaddrr#Lnregis L_e-erea dene regis L_y: 6f 63 " drpver'ieci ty2al=sTso/etwac4Td;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I9/mem9s.t8t#L577" id="L577" cl9ss="897 5680299;aun291 n13"     -disable=txtDnfromn1mume9r" id=9&g8In/mem9s.t8t#L577" id="L577" cl9ss="897ame8n21p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I1line9tat8t#L577" id="L577" cl9ss="897ame813m1;a;63" n3sLOCAL IRQ DISABLE;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I2line9tat8t#L577" id="L577" cl9ss="897ame812m1;a;63" n3sn11" w(ADDR, 3)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa8In/mem9s.t8t#L577" id="L577" cl9ss="897ame81397;a;63" n2 n11" w(DATA, y)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa8I4/mem9s.t8t#L577" id="L577" cl9ss="897ame81497;a;63" n2 LOCAL IRQ ENABLE;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I5/mem9s.t8f="Document#L49"red 9n an899" n81537;a;63" n3s<ir3"     > 3"n3n313n/m+ ta> 444aOAD emort_indictyeda8<6/mem9s.t8Documentation/memory8barr889 16816m1;a;63" n3sn11" w(ADDR, 4)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa8I7/mem9s.t8arriers.txt#L568" id9"L56896ar681297;a;63" n2 q =nreadw(DATA)337n/m+ ta> 444wake_up(&tio;emort_waiL_qu=ue)aa8I8/mem9s.t8t#L577" id="L577" cl9ss="897ame81837;a;63" n3s</ir3"     > 3"n3n313n/m+ ta> 444aOAD emort_indictyeda8<9/mem9s.t8t#L577" id="L577" cl9ss="897ame81319;a;63" n3 an4n31hou9ta8ion/me9ory8barriers.txt#L591" i9="L5899nam82037;aT///sti tTso/etwadene regis L_ d22n31hou9ta8i1line9tat8f="Document#L49"red 9n an899" n82251;aaddrr#Lnregis L_eifl|sem> hhrrulesa4T  mufficiriely relax-e1s="line" name===========n1s=">n1mume9r" id=9&g8 20rma9ly8*ADDR =n3, L588">*ADDR =n4, L588">*DATA =ny, q =n" ADa*DATA;63" n2sndgits=txt#nfrom 20rma9ly8<4/mem9s.t8ass="line" name="L569"> 5896mo682274;a;63" n2writX=e="L588"> 588n274">9598;/a>
<9 hr8t#L577" id="L577" cl9ss="897ame82335;a;63" n3516
n332" 8ar8In/mem9s.t8t#L577" id="L577" cl9ss="897ame826m1;aIfl|sem> hhrrulesa4T  relax-e,eit mlin b  " i>
n23" c9Ls8I7/mem9s.t8t#L577" id="L577" cl9ss="897ame823m7;air3"     ndisabledvmeohereae   c. k outs///n/abitDnfroe   i63" c. ve  nn2;63" n3516
n332" 8ar8Iocume9ry-8t#L577" id="L577" cl9ss="897ame82298;aac r#L1 ap"L5   edeierva ir3"     n-Dnfrovi   versan-Dunlr#L tmpniciteor;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8t#L577" id="L577" cl9ss="897ame82319;aexpniciteeUNLOCKnusr=eused 1entation/memory-barrin2n 1>n29 a 9aL388" csi98In/mem9s.t8t#L577" id="L577" cl9ss="897ame8321p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8t#L577" id="L577" cl9ss="897ame833m1;aN   al3s = istCon'tpbdlinproblem   caus  mn23" c9Ls8In/mem9s.t8t#L577" id="L577" cl9ss="897ame832m2;ameoheren wKbapinclud/ synchronous loadno="Lme===n e&bstrict3s >n291eloI/O;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8 to
n23 6f 63isulin'tpsufficirie mn23" c9Ls8="line9" c8ass="line" name="L569"> 5896mo683435;admiowb()lm   ne-e" >nberusedeexpnicitlye;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8=/a>
<9 hr8Documentation/memory8barr889 1683335;a;63" n3516
n332" 8ar8=n/mem9s.t867" id="L567" class=8line886="683296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=8=7/mem9s.t8t#L577" id="L577" cl9ss="897ame83227;aA simiiusesitume===lm    n29< betwyas va ir3"     nrouti 1 nfromwonrouti 1 ;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8t#L577" id="L577" cl9ss="897ame83258;arunn hhre&bseparorg >n2sr=  " communicltea nn2meach ;63" 3 6f  s="lin vs/6i ;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8B),
<5 href="Documen9atio899em683299;alikely, mnma9lLocks |sem> hh 1entation/memory-barrin2n 1>n29 a 9aL388" csi98;
n23" c9Ls8;n/mem9s.t8ass="line" name="L569"> 5896mo684251;a;63" n2  a>  be"L3 busy don21" c9f=8;n/mem9s.t8=ue)aasIn/mem9s.txt#L577"894me6842m1;affect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as8be exp9cte8 to
 20rma9ly8b"line9" c8arriers.txt#L569" id9"L56899ame84274;affect because thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as8b/a>
<9 hr8arriers.txt#L569" id9"L56899ame84335;a;63" n3516
n332" 8ar8;n/mem9s.t8f="Document#L49"red 9n an899" n846m1;aWhas vc r#Lid="I/Oydeby~a, drpversDshoulduus  =   approproorg rrngisor;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8;n/mem9s.t8arriers.txt#L568" id9"L56896ar684337;ae Coheren1s="line" name===========n1s=">n1mume9r" id=9&g8bn/mem9s.t8f="Document#L49"red 9n an899" n8n248;a;63" n29
n1mume9r" id=9&g8ion/me9ory8barriers.txt#L591" i9="L5899nam8521p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8;
n2al=e >nI/Oyspa   ra63" n= as deby~anspa  , but;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8;n/mem9s.t8e="L56e" name="L543"9 543894me6852m1;a;63" =  "'iereomarily a >n2-mss="ficnconcepe ulcu i386 nfrox86_64 n   r#Lor ado;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8;e exp9cte8t#L577" id="L577" cl9ss="897ame85397;a;63" indeedeh ve ass="li I/Oyspa   ac r#Lncyclesa4ereii  rus eres, butodana;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I"line9ry-8t#L577" id="L577" cl9ss="897ame85497;a;63" >n2srdon'trh ve as="lin oncepe ;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I/a>
<9 hr8arriers.txt#L568" id9"L56896ar685335;a;63" n3516
n332" 8ar8Dn/mem9s.t8t#L577" id="L577" cl9ss="897ame856m1;a;63" lcu PCI bus,u-mongin ;63" n,edefi 1 ava I/Oyspa    onceperw 3" n-re&bss=";63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8Dn/mem9s.t8t#L577" id="L577" cl9ss="897ame85758;a;63" >n2sri ai386 nfrox86_64 -nreadily mapsTso/etwa>n2'iecinceperofoI/O;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8in/mem9s.t8arriers.txt#L568" id9"L56896ar6853u8;a;63" spa  .  How   r, it m   also berd2ty.dusiti virtulinI/Oyspa   i&betwa>n2'i;63" n2writX=e="L588"> 588n274">9598In/mem9s.t8t#L577" id="L577" cl9ss="897ame85937;a;63" deby~anm2t,=p9lticuius=y >ibetosg >n2sr=  " don'trsupsolt al3" norg I/O;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8t#L577" id="L577" cl9ss="897ame860u8;a;63" spa  n 1entation/memory-barrin2n 1>n29 a 9aL388" csi98I
 5896mo686251;a;63" n2  a>  be"L3 busy don21" c9f=8Iocume9 na8Documentation/memory8barr889 16862m1;a;63" Arngis1 aso/etisuspa   e      l ==y iynchronous (an e&bi386), but;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8In/mem9s.t8 to
n23" c9Ls8I"line9ry-8arriers.txt#L568" id9"L56896ar6864m1;a;63" =  " 1entation/memory-barrin2n 1>n29 a 9aL388" csi98I/a>
<9 hr8f="Document#L49"red 9n an899" n86335;a;63" n3516
n332" 8ar8In/mem9s.t8f="Document#L49"red 9n an899" n866m1;a;63" lcuy 4T  ma9lLockse" >nberl ==y >n291elo nn2mrlass=te29reach ;63" 3;63" n3516
n332" 8ar8In/mem9s.t8arriers.txt#L568" id9"L56896ar686227;a;63" n2s="line" name===========n2s=">n2uume9rs8In/mem9s.t8Documentation/memory8barr889 16868m1;a;63" lcuy 4T  notima9lLockse" >nberl ==y >n291elo nn2mrlass=te29r;63" ntypes of;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8I"line9amp8B),
<5 href="Documen9atio899em686937;a;63" deby~annfroI/Oyo="Lme===3;63" n3516
n332" 8ar8="line9amp8B),
<5 href="Documen9atio899em68721p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8=
n1mume9r" id=9&g8=
 20rma9ly8=n/mem9s.t8B),
<5 href="Documen9atio899em687397;a;63" W e63" ntcusty4T  ma9lLockse" >nberl ==y >n291elonfro Coiib"Dod  nn2;63" n3516
n332" 8ar8="line9" c8ass="line" name="L569"> 5896mo6874m1;a;63" rlass=te29reach ;63" re&betwaiss"id=">n2tdey.ndsre&betwacha aohereinics;63" n3516
n332" 8ar8=/a>
<9 hr8f="Document#L49"red 9n an899" n87537;a;63" defi 1d   La    Aeby~anwindow s rou2< w 3" nm
n332" 8ar8=n/mem9s.t867" id="L567" class=8line886="6876m1;a;63" i386 nrchites ureye chines,   Laexaio+a,mm
n332" 8ar8=n/mem9s.t8B),
<5 href="Documen9atio899em687758;a;63" MTRRnregis L_n 1entation/memory-barrin2n 1>n29 a 9aL388" csi98
nberl ==y >n291elonfro Coiib"Dod{;63" n2writX=e="L588"> 588n274">9598="line9amp8B),
<5 href="Documen9atio899em6880u8;a;63" n  videde   be"L3 busy don21" c9f=8=
n23" c9Ls8=n/mem9s.t8f="Document#L49"red 9n an899" n88397;a;63" def"     iabitDso wiscus;" >nflus"lin5ti t,ti n2ad  rombetwaary8 n2 me===;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8="line9" c8ass="line" name="L569"> 5896mo688497;a;63" isnprefer1el[*], butoi n2ad  rombetwaary8 devi   or>erombyinfigurme===;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8=/a>
<9 hr8f="Document#L49"red 9n an899" n885u8;a;63" spa  Dshouldusuffic>n  LaPCI 1entation/memory-barrin2n 1>n29 a 9aL388" csi98=n/mem9s.t8B),
<5 href="Documen9atio899em688296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=8=ocume9ry-867" id="L567" class=9line896="688297;a;63" [*] NOTE!eattemptid="s9rn2ad  rombetwaary8 n2 me===li aCsitn11"tYn==40e  ;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=8=n/mem9s.t8579" id="L579" class9"lin897ep688298;a;63" n2i caus ea9dale Cohere - co6s////letwa66550 Rx/Txnmer"li regis L_n ror;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8<"line9amp8f="Document#L49"red 9n an899" n88299;a;63" n2aaexaio+a 1entation/memory-barrin2n 1>n29 a 9aL388" csi98
<9 hr8f="Document#L49"red 9n an899" n8921p;a;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8<"line9amp8f="Document#L49"red 9n an899" n893m1;a;63" Uselo nn2mprefetcha.t>nI/Oydeby~a, as dmiowb()ln2mor>n e       quesu-de >;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls8<
nber>n291el 1entation/memory-barrin2n 1>n29 a 9aL388" csi98n29 a 9aL388" csi98<"line9" c8f="Document#L49"red 9n an899" n89453;a;63" Pc. senref" e29rtcu PCI mss="ficme===l  Lami tyin5   ahere e&bi13" aoheres;63" n3516
n332" 8ar8
<9 hr8f="Document#L49"red 9n an899" n89537;a;63" betwyas PCI tlLosaoheres 1entation/memory-barrin2n 1>n29 a 9aL388" csi98    6 ==/a>n2e,h>n29ume9a=8    6 ==/a>n2e,h>n29ume9a=8
nreadX(), butoiT  notima9lLockse" >nber>n291eloierva ;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9="line9tat9on/memory-barriers.t9t#L5997 569n3mp;a;63" ="y. Bty4w4T  sw " =  reni26e nI/Oyreadln2mor>n availm.t> 1entation/memory-barrin2n 1>n29 a 9aL388" csi99=1line9tat9o="Document#L49"red 9n an997ame90251;a;63" n2  a>  be"L3 busy don21" c9f=9=2line9tat9o="Document#L49"red 9n an997ame90299;a;(*) noreadX(), iow11" X();63" n2  a>  be"L3 busy don21" c9f=9=3line9tat9o="Document#L49"red 9n an997ame90397;a1entation/memory-barrin2n 1>n29 a 9aL388" csi99I4/mem9s.t9t="Document#L49"red 9n an996mo690499;a;63" lcustywKbapp"L5    approproorg=y   La    typet/abac r#Lnetwy'T  vctuline1entation/memory-barrin2n 1>n29 a 9aL388" csi99I5/mem9s.t9t="Document#L49"red 9n an997 5690537;a;63" doi g,=   it n1X()/outX() orsn29 a 9aL388" csi99=6/mem9s.t9tocumentation/memory8barr989 1690296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9I7/mem9s.t9trriers.txt#L568" id9"L56996ar690227;a;63" n2s="line" name===========n2s=">n2uume9rs9I8/mem9s.t9trriers.txt#L568" id9"L56996ar690338;affect because thern3sre> 3e thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as9I9/mem9s.t9t#L577" id="L577" cl9ss="997 5690299;aASSUMED MINIMUM EXECUaapl ORDERING MODEL0        |a>  ""lin00/6bemory-b    1/ 1/a 1/as9In/mem9s.t9t#L577" id="L577" cl9ss="997ame9n21p;affect because thern3sre> 3e thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as9I1line9tat9t#L577" id="L577" cl9ss="997ame91251;a;63" n2  a>  be"L3 busy don21" c9f=9I2line9tat9t#L577" id="L577" cl9ss="997ame912m1;aIt6nsit29r   " i>
n2tistCeakly->n291elobutom< " it wKba;63" n2  a>  be"L3 busy don21" c9f=9I3line9tat9t#L577" id="L577" cl9ss="997ame91397;amaintaL4 =   appe9lLocet/abprogram causalityo nn2mrlass=te29ritself.  Some >n2s;63" n2  a>  be"L3 busy don21" c9f=9I4/mem9s.t9t#L577" id="L577" cl9ss="997ame91497;a(as="li ai386 orsx86_64)oiT  mi tyco6s raL49da= as ;63" n (as="li apowerpceor;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9I5/mem9s.t9f="Document#L49"red 9n an999" n91537;afrv), -ere540    Aost=relax-e" vs/6(ed 9=y DEC Alpha) mlin b  " i>
n23" c9Ls9I6/mem9s.t9Documentation/memory8barr989 16916m1;a/abarch-mss="ficncod> 1entation/memory-barrin2n 1>n29 a 9aL388" csi99I7/mem9s.t9arriers.txt#L568" id9"L56996ar691227;a;63" n2s="line" name===========n2s=">n2uume9rs9I8/mem9s.t9t#L577" id="L577" cl9ss="997ame918mp;alcineeeLosom< " it mlin b  co6s////ed 63 " 63  >n2twKbapexecuteag s ii  rus ere;63" n2s="line" name===========n2s=">n2uume9rs9I9/mem9s.t9t#L577" id="L577" cl9ss="997ame91319;a  ream ierva c>n291 it feels liken-rer evY3 n1=p9llin>ln-rn  videde < " if=as;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9ion/me9ory9barriers.txt#L591" i9="L5999nam92037;aii  rus ere i&betwa  ream dey.ndsre&bva earliCK n1  rus erecumn23" c9Ls9i1line9tat9f="Document#L49"red 9n an999" n92251;aearliCK n1  rus ere mlin b  mufficiriely ciiolete[*] b13    =   l&qur;63" n3516
n332" 8ar9n2s:rn  videde < " =   appe9lLocet/a;63" n3516
n332" 8ar9<3line9tat9Documentation/memory8barr989 1692397;acausalityoinee intaL49d 1entation/memory-barrin2n 1>n29 a 9aL388" csi99<4/mem9s.t9ass="line" name="L569"> 5996mo692274;a;63" n2writX=e="L588"> 588n274">9599;/a>
<9 hr9t#L577" id="L577" cl9ss="997ame92537;a;[*] Some n1  rus eresah ve m    = as ;ne enLes a-bss="li a hangid="sme;63" n2writX=e="L588"> 588n274">9599;6/mem9s.t9t#L577" id="L577" cl9ss="997ame926m1;a;63" ooeri ere cod>s,a hangid="regis L_n orschangid="Aeby~an-Dnfrodifa"Le t;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9i7/mem9s.t9t#L577" id="L577" cl9ss="997ame923m7;a;63" n1  rus eresamay dey.ndre&bdifa"Le t enLes n 1entation/memory-barrin2n 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="L577" cl9ss="997ame92248;a;63" n29
;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9In/mem9s.t9t#L577" id="L577" cl9ss="997ame9321p;aultimorg enLes .  F Laexaio+a,mifc9wo adjaceie i6  rus eresab;63rn2ad as;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9In/mem9s.t9t#L577" id="L577" cl9ss="997ame933m1;aimmediarg valu  n13obetwaary8 regis L_,===YLfirst e      disc4Td9d 1entation/memory-barrin2n 1>n29 a 9aL388" csi99In/mem9s.t9t#L577" id="L577" cl9ss="997ame932m2;a;63" n2sndgits=txt#nfrom 20rma9ly9In/mem9s.t9 to
 5996mo693435;aSimiiusly,nit6nsit29r   " i>
n291emn2uume9rs9=/a>
<9 hr9Documentation/memory8barr989 1693335;a  ream ierva c="ytitDseesLfit,eagain n  videde n2uume9rs9=6/mem9s.t967" id="L567" class=8line986="693296;ae intaL49d 1entation/memory-barrin2n 1>n29 a 9aL388" csi99=7/mem9s.t9t#L577" id="L577" cl9ss="997ame93227;a;63" n2s="line" name===========n2s=">n2uume9rs9In/mem9s.t9t#L577" id="L577" cl9ss="997ame93248;a;63" n29
 3e thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as9;
n2tCACHE;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9;n/mem9s.t9ass="line" name="L569"> 5996mo694251;ae thern3sre> 3e thern3sre> 30        |a>  ""lin00/6bemory-b    1/ 1/a 1/as9;n/mem9s.t9=ue)aasIn/mem9s.txt#L577"994me6942m2;a;63" n2sndgits=txt#nfrom 20rma9ly9be exp9cte9 to
;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9b"line9" c9arriers.txt#L569" id9"L56999ame94274;aa certaL4 exttxtebyaetwac4ch-som< " liC betwyas >n2srindydeby~a, asdebyaetw;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9b/a>
<9 hr9arriers.txt#L569" id9"L56999ame94335;a======ncoh"Le    a63" nom< " e intaL4s 63  cinsis Lncyt/ab esp  i&betwaa63" n 1entation/memory-barrin2n 1>n29 a 9aL388" csi99;n/mem9s.t9f="Document#L49"red 9n an999" n94296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9;n/mem9s.t9arriers.txt#L568" id9"L56996ar694337;aAsLfarli atcu ="ytan>n2ti13" aohso nn2man;63" rp9lt /abetwaa63" nom    6 ==/a>n2e,h>n29ume9a=9;n/mem9s.t9f="Document#L49"red 9n an999" n9n248;ac4ch-sogoen, mn2'iec4ch-s,rindydeby~a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9;n/mem9s.t9B),
<5 href="Documen9atio999em694299;aeUNLOCKnu  La    Aost=p9lt vct  " =   i63" aa  Dbetwyas etwa>n2 aereit ec4ch-;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9ion/me9ory9barriers.txt#L591" i9="L5999nam9521p;a(deby~aneUNLOCKnulogicline vct e&betwadott-det#L5 i&betwa8eplyeintudiagram)1s="line" name===========n1s=">n1mume9r" id=9&g9;
  be"L3 busy don21" c9f=9;n/mem9s.t9e="L56e" name="L543"9 543994me6952m1;a;63" n3sssss<---a>n2 --->" n3sssss:n3sssss<----------- Meby~an-----------> 3"n3n313n/m+ ta> 444aOAD emort_indictyeda9;e exp9cte9t#L577" id="L577" cl9ss="997ame953m1;a;63" n3sssssssssssssssssssssssssss1s="line" name===========n1s=">n1mume9r" id=9&g9;"line9" c9t#L577" id="L577" cl9ss="997ame95497;a;63" n2 +--------+ n2 +--------+ n:n2 +--------+ n2 +-----------+s="line" name===========n1s=">n1mume9r" id=9&g9;/a>
<9 hr9arriers.txt#L568" id9"L56996ar695537;a;63" n3s|;63" n3s|;63"|;63" n3s|;6:n3s|;63" n3s|;63"|;63" n3s63"|;63"+--------+s="line" name===========n1s=">n1mume9r" id=9&g9;n/mem9s.t9t#L577" id="L577" cl9ss="997ame95637;a;63" n3s|;6>n2 3s|;63"|;Meby~an|;6:n3s|;>n2 3ss|;63"|;63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9;n/mem9s.t9t#L577" id="L577" cl9ss="997ame95737;a;63" n3s|;6>     |--->| Arngis |----->| C4ch-  |<-->| 63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9;n/mem9s.t9arriers.txt#L568" id9"L56996ar695837;a;63" n3s|;63" n3s|;63"|;Queue3s|;6:n3s|;63" n3s|;63"|;63" n3s63"|--->| Meby~an|s="line" name===========n1s=">n1mume9r" id=9&g9;n/mem9s.t9t#L577" id="L577" cl9ss="997ame95937;a;63" n3s|;63" n3s|;63"|;63" n3s|;6:n3s|;63" n3s|;63"|;63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9In/mem9s.t9t#L577" id="L577" cl9ss="997ame960u8;a;63"  2 +--------+ n2 +--------+ n:n2 +--------+ n2 |;63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9I
 5996mo6961m1;a;63" n3sssssssssssssssssssssssssss1sssssssssssssssss| C4ch-  63"|;63"+--------+s="line" name===========n1s=">n1mume9r" id=9&g9Iocume9 na9Documentation/memory8barr989 16962m1;a;63" n3sssssssssssssssssssssssssss1sssssssssssssssss| Coh"Le  an|s="line" name===========n1s=">n1mume9r" id=9&g9In/mem9s.t9 to
n1mume9r" id=9&g9I"line9" c9arriers.txt#L568" id9"L56996ar696497;a;63" n2 +--------+ n2 +--------+ n:n2 +--------+ n2 |;63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9I/a>
<9 hr9f="Document#L49"red 9n an999" n96537;a;63" n3s|;63" n3s|;63"|;63" n3s|;6:n3s|;63" n3s|;63"|;63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9In/mem9s.t9f="Document#L49"red 9n an999" n96637;a;63" n3s|;6>n2 3s|;63"|;Meby~an|;6:n3s|;>n2 3ss|;63"|;63" n3s63"|--->| Devi   |s="line" name===========n1s=">n1mume9r" id=9&g9In/mem9s.t9arriers.txt#L568" id9"L56996ar696737;a;63" n3s|;6>     |--->| Arngis |----->| C4ch-  |<-->| 63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9In/mem9s.t9Documentation/memory8barr989 1696837;a;63" n3s|;63" n3s|;63"|;Queue3s|;6:n3s|;63" n3s|;63"|;63" n3s63"|;63"|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&g9In/mem9s.t9B),
<5 href="Documen9atio999em696937;a;63" n3s|;63" n3s|;63"|;63" n3s|;6:n3s|;63" n3s|;63"|;63" n3s63"|;63"+--------+s="line" name===========n1s=">n1mume9r" id=9&g9="line9amp9B),
<5 href="Documen9atio999em6970u8;a;63"  2 +--------+ n2 +--------+ n:n2 +--------+ n2 +-----------+s="line" name===========n1s=">n1mume9r" id=9&g9=
n1mume9r" id=9&g9=ocume9 na9B),
<5 href="Documen9atio999em6972m1;a;63" n3sssssssssssssssssssssssssss1s="line" name===========n1s=">n1mume9r" id=9&g9=n/mem9s.t9B),
<5 href="Documen9atio999em697397;a1entation/memory-barrin2n 1>n29 a 9aL388" csi99="line9" c9ass="line" name="L569"> 5996mo6974m1;aAlthou2< va cp9lticuius loadnore5ti tTe   notivctuline02ty. 4Touts///n/ab=  ;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9=/a>
<9 hr9f="Document#L49"red 9n an999" n97537;a>n2  < " iss">dritDsi    it m   h ve ayas s   sfi9da nn2ie etwa>n2'ieown c4ch-{;63" n2writX=e="L588"> 588n274">9599=n/mem9s.t967" id="L567" class=8line986="6976m1;ait wKbae5tKbae2ty. 4Tane"fom 588n274">9599=n/mem9s.t9B),
<5 href="Documen9atio999em697758;a;63" r>n2srir  cincer49dasi    etwac4ch-ncoh"Le  yedechanismn wKbapmigrorg tcu;63" n2writX=e="L588"> 588n274">9599=n/mem9s.t967" id="L567" class=9line996="697248;ac4ch-t#L5 ov" e29rtcu vc r#Lid=">n2 aerepropagorg tcu enLes n upre conflic" 1entation/memory-barrin2n 1>n29 a 9aL388" csi99<"line9amp9B),
<5 href="Documen9atio999em697319;a;63" n3 an4n31hou9ta9="line9amp9B),
<5 href="Documen9atio999em698037;aT///>n2 ci tye   executeag6  rus eresaierva c>n291 it deemsLfit,en  videde n31hou9ta9=
n31hou9ta9=ocume9 na967" id="L567" class=8line986="6982m1;aname  tern2ad asre5ti tTo="Lme===n w 3" nmn31hou9ta9=n/mem9s.t9f="Document#L49"red 9n an999" n98397;aarngis1 aso/beap"L5   ed." lcu ci tye   pla   tcustyie etwaqueue3ierva c>n291;63" n3 an4n31hou9ta9="line9" c9ass="line" name="L569"> 5996mo698497;ait wKsh-s,rindyyintinueaexecution u13 apit nsa5  cee" >nwaiu   Lava ir  rus ere;63" n2s="line" name===========n2s=">n2uume9rs9=/a>
<9 hr9f="Document#L49"red 9n an999" n985u8;a >nyiiolete 1entation/memory-barrin2n 1>n29 a 9aL388" csi99=n/mem9s.t9B),
<5 href="Documen9atio999em698296;a;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9=ocume9ry-967" id="L567" class=9line996="698297;aW< " eeby~aneUNLOCKnuir  cincer49da nn2mlieyintrollid="sme >n291 in w 3" ;63" n2e,hsuppos>    6 ==/a>n2e,h>n29ume9a=9=n/mem9s.t9579" id="L579" class9"lin997ep698298;aac r#L1 acromen rombetwa>n2 s///n/ab= id=sTso/etwadeby~ans///n/ab= id=s,u-er;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9<"line9amp9f="Document#L49"red 9n an999" n98299;asme >n291 in w 3"  tcu enLes n 4T  perceivelo >nh2ty.nebyaetwa;63" rebmerv>n2;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9
<9 hr9f="Document#L49"red 9n an999" n99037;aiibetwaa63" n 1entation/memory-barrin2n 1>n29 a 9aL388" csi99<"line9amp9f="Document#L49"red 9n an999" n99251;a;63" n2  a>  be"L3 busy don21" c9f=9<
n2,li a>n2srilwaysDsee;63" n2  a>  be"L3 busy don21" c9f=9e;63" n2mory-barriers.txt#L503" n2mor>n23" c9Ls9<"line9" c9f="Document#L49"red 9n an999" n99274;a;63" n2writX=e="L588"> 588n274">9599
<9 hr9f="Document#L49"red 9n an999" n99537;a[!];MMIOnore;63" rdevi   ac r#L1 ae    ypamenetwac4ch-na63" n " lcliedey.ndsre&;63" n2writX=e="L588"> 588n274">9599n23" c9Ls9n23" c9Ls9
n31hou9t20="line9ta20="li77" id="L577" cl9ss=20="l>20="37;a>ACHE COHERENCY
n31hou9t20=1line9ta20=="Document#L49"red 9n a20==">20=251;a---------------;63" n3 an4n31hou9t20=2line9ta20=="Document#L49"red 9n a20==">20=2m2;a;63" n2sndgits=txt#nfrom 20rma9l20=3line9ta20=="Document#L49"red 9n a20==">20=397;aLifeulin'tpquit asLstmpn asLit m aty. 4Tabov", how r: Law 3lg tcu;63" n2writX=e="L588"> 588n274">9520=4line9ta20=="Document#L49"red 9n a20==">20=448;ac4ch-so4T expes -deso/beacoh"Le t, t re'ien>nma9lLocks < " = " cih"Le y;63" n2writX=e="L588"> 588n274">9520=5line9ta20=="Document#L49"red 9n a20==">20=537;awKbap >n291el " lclieeeLosom< " whilst=chang1 ae //n/s ;ne >n2twKba;63" n2writX=e="L588"> 588n274">9520=6line9ta20=ocumentation/memory8bar20=oc>20=296;aevY3tuline0become visi.t>ne&bvbap>n2s,ut re'ien>nma9lLocks < " = eytwKba;63" n2writX=e="L588"> 588n274">9520=7line9ta20=rriers.txt#L568" id9"L520=rr>20=3m7;abecome atyarrie i6betwaary8 >n291 >ibetosg ;63" r>n2se;63" n2mory-barriers.txt#L503" n2mor>n23" c9L20=8line9ta20=rriers.txt#L568" id9"L520=rr>20=248;a;63" n29 20=319;a;63" n3 an4n31hou9t201"line9ta20t#L577" id="L577" cl9ss=20t#L>20t#37;a>o6s////ldealid=" nn2ma a63" nom< " hi aa paireofa>n2sr(1 & 2),reach ;f w 3" ;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a20t1line9ta20t#L577" id="L577" cl9ss=20t#L>20t251;ahi aa paireofap9llin>lndene c4ch-so(>n2t1 hi aA/B,rindy>n2t2 hi aC/D)1s="line" name===========n1s=">n1mume9r" id=9&20t2line9ta20t#L577" id="L577" cl9ss=20t#L>20t2m2;a;63" n2sndgits=txt#nfrom 20rma9l2013line9ta20t#L577" id="L577" cl9ss=20t#L>20t3m1;a;63" n3sssssssssssss1s="line" name===========n1s=">n1mume9r" id=9&20t4line9ta20t#L577" id="L577" cl9ss=20t#L>20t4m1;a;63" n3sssssssssssss1ssssssssssssssssssssssssss+--------+s="line" name===========n1s=">n1mume9r" id=9&20t5line9ta20f="Document#L49"red 9n a20f=">20t5m1;a;63" n3sssssssssssss1ssssss+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&20t6line9ta20Documentation/memory8bar20Doc>20t637;a;63" n3s+--------+ n:n+--->| C4ch- A |<------->| 63" n3s|s="line" name===========n1s=">n1mume9r" id=9&20t7line9ta20arriers.txt#L568" id9"L520arr>20t737;a;63" n3s|;63" n3s|;6:"|;63"+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&20t8line9ta20t#L577" id="L577" cl9ss=20t#L>20t837;a;63" n3s|;6>n2t1 |<---+ssssssssssssssssssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&20t9line9ta20t#L577" id="L577" cl9ss=20t#L>20t937;a;63" n3s|;63" n3s|;6:"|;63"+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&202"line9ta20barriers.txt#L591" i9="L20bar>20ba37;a;63" n3s+--------+ n:n+--->| C4ch- B |<------->| 63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2021line9ta20f="Document#L49"red 9n a20f=">20b1m1;a;63" n3sssssssssssss1ssssss+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2022line9ta20arriers.txt#L569" id9"L520arr>20b2m1;a;63" n3sssssssssssss1ssssssssssssssssssssssssss| Meby~an|s="line" name===========n1s=">n1mume9r" id=9&20b3line9ta20Documentation/memory8bar20Doc>20b3m1;a;63" n3sssssssssssss1ssssss+---------+sssssssss|;S63" no|s="line" name===========n1s=">n1mume9r" id=9&20b4line9ta20ass="line" name="L569"> 20ass>20b497;a;63" n2 +--------+ n:n+--->| C4ch- C |<------->| 63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2025line9ta20t#L577" id="L577" cl9ss=20t#L>20b537;a;63" n3s|;63" n3s|;6:"|;63"+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2026line9ta20t#L577" id="L577" cl9ss=20t#L>20b637;a;63" n3s|;6>n2 2 |<---+ssssssssssssssssssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2027line9ta20t#L577" id="L577" cl9ss=20t#L>20b737;a;63" n3s|;63" n3s|;6:"|;63"+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2028line9ta20t#L577" id="L577" cl9ss=20t#L>20b897;a;63" n2 +--------+ n:n+--->| C4ch- D |<------->| 63" n3s|s="line" name===========n1s=">n1mume9r" id=9&2029line9ta20t#L577" id="L577" cl9ss=20t#L>20b9m1;a;63" n3sssssssssssss1ssssss+---------+sssssssss|;63" n3s|s="line" name===========n1s=">n1mume9r" id=9&203"line9ta20t#L577" id="L577" cl9ss=20t#L>20t#m1;a;63" n3sssssssssssss1ssssssssssssssssssssssssss+--------+s="line" name===========n1s=">n1mume9r" id=9&2031line9ta20t#L577" id="L577" cl9ss=20t#L>20t1m1;a;63" n3sssssssssssss1s="line" name===========n1s=">n1mume9r" id=9&2032line9ta20t#L577" id="L577" cl9ss=20t#L>20t2m2;a;63" n2sndgits=txt#nfrom 20rma9l2033line9ta20 to n1mume9r" id=9&2034line9ta20ass="line" name="L569"> 20ass>20t274;a;63" n2writX=e="L588"> 588n274">9520t5line9ta20Documentation/memory8bar20Doc>20t537;a;(*) as ;dd-numb//ed c4ch-nt#L5 e in c4ch- A, c4ch- Cnoreit m 5tKbaebu;63" n2writX=e="L588"> 588n274">952036line9ta2067" id="L567" class=8lin2067">20t637;a;63" res///ie i6b88n313n/m+ ta> 444aOAD emort_indictyed20t7line9ta20t#L577" id="L577" cl9ss=20t#L>20t227;a;63" n2s="line" name===========n2s=">n2uume9r20t8line9ta20t#L577" id="L577" cl9ss=20t#L>20t837;a;(*) as evY3-numb//ed c4ch-nt#L5 e in c4ch- B, c4ch- Dnoreit m 5tKbaebu;63" n2writX=e="L588"> 588n274">952039line9ta20B), <5 href="Documen9ati20B),>20t937;a;63" res///ie i6b88n313n/m+ ta> 444aOAD emort_indictyed204"line9ta20Documentation/memory8bar20Doc>20Do27;a;63" n2s="line" name===========n2s=">n2uume9r2041line9ta20ass="line" name="L569"> 20ass>20D251;a;(*) whilst=t///>n2 ci tyisul13" ogat hhre&wac4ch-,aetwa;63" rc4ch- e ;63" n2s="line" name===========n2s=">n2uume9r2042line9ta20=ue)aasIn/mem9s.txt#L57720=ue>20D2m1;a;63" mak hhruset/abetwabusTso/ac r#Lnetw rest /abetwaa63" no- perhapsTso;63" n2s="line" name===========n2s=">n2uume9r2043line9ta20 to n313n/m+ ta> 444aOAD emort_indictyed2044line9ta20arriers.txt#L569" id9"L520arr>20D274;a;63" n2writX=e="L588"> 588n274">952045line9ta20arriers.txt#L569" id9"L520arr>20D537;a;(*) each c4ch- hi aa queue3 o="Lme===n m< " ne-e" >nberappliede >n2 " c4ch-;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a20D6line9ta20f="Document#L49"red 9n a20f=">20D637;a;63" =40e intaL4 coh"Le ye nn2metw rest /abetwaa63" n; 3"n3n313n/m+ ta> 444aOAD emort_indictyed2047line9ta20arriers.txt#L568" id9"L520arr>20D227;a;63" n2s="line" name===========n2s=">n2uume9r2048line9ta20f="Document#L49"red 9n a20f=">20D837;a;(*) th-ncoh"Le yequeue3is notillus"-debyan al n2ads s9rni 1 avl 588n274">952049line9ta20B), <5 href="Documen9ati20B),>20D937;a;63" presrie i6betwac4ch-,aevY3 thou2< 63 cinttxtn /abetwaqueue3e ;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a205"line9ta20barriers.txt#L591" i9="L20bar>20ba37;a;63" pottxtiline02nLes aetosg n2adse;63" n2mory-barriers.txt#L503" n2mor>n23" c9L2051line9ta20Documentation/memory8bar20Doc>20b251;a;63" n2 a> be"L3 busy don21" c9f20b2line9ta20e="L56e" name="L543"9 5420e=">20b2m1;aImag#L5cumn2,l nn2ma n11" neUNLOCK;63" n2 a> be"L3 busy don21" c9f20b3line9ta20t#L577" id="L577" cl9ss=20t#L>20b3m7;abetwyas etwme >nma9lLocks < " = eytwKba aty. 4T >nrea" tcata>n2'iec4ch-seie;63" n2mory-barriers.txt#L503" n2mor>n23" c9L20b4line9ta20t#L577" id="L577" cl9ss=20t#L>20b4m7;ather quess1" n>n2911s="line" name===========n1s=">n1mume9r" id=9&2055line9ta20arriers.txt#L568" id9"L520arr>20b335;a;63" n3516 n332" 8a20b6line9ta20t#L577" id="L577" cl9ss=20t#L>20b637;a;63" n3s>n2t1 >n2 2 >OMMENT;63" n3516 n332" 8a20b7line9ta20t#L577" id="L577" cl9ss=20t#L>20b737;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e thern3sre> 3ern3sre> 3e thern3sre> 30 |a> ""lin00/6bemory-b 1/ 1/a 1/a20b8line9ta20arriers.txt#L568" id9"L520arr>20b8m1;a;63" n3sssssssssssssssssssssssssssssssssus3e 0, vs3e 1 aereps3e &u, qs3e &u0 |a> ""lin00/6bemory-b 1/ 1/a 1/a20b9line9ta20t#L577" id="L577" cl9ss=20t#L>20b9m1;a;63" n3svs3 2; 3"n3n313n/m+ ta> 444aOAD emort_indictyed206"line9ta20t#L577" id="L577" cl9ss=20t#L>20t#m1;a;63" n3ssmp_wmb();ssssssssssssssssssssssMak mure=chang1T >nv3is visi.t>nb13 3"n3n313n/m+ ta> 444aOAD emort_indictyed2061line9ta20ass="line" name="L569"> 20ass>20t1m1;a;63" n3sssssssssssssssssssssssssssssssssschang1T >np 3"n3n313n/m+ ta> 444aOAD emort_indictyed2062line9ta20Documentation/memory8bar20Doc>20t2m1;a;63" n3s<A:modify v=2>" n3ssssssssssssssv3is now in c4ch- A exclusivene1entation/memory-barrin2n 1>n29 a 9aL388" csi20t3line9ta20 to n313n/m+ ta> 444aOAD emort_indictyed2064line9ta20arriers.txt#L568" id9"L520arr>20t4m1;a;63" n3s<B:modify p=&v>" n3sssssssssssssp3is now in c4ch- B exclusivene1entation/memory-barrin2n 1>n29 a 9aL388" csi20t5line9ta20f="Document#L49"red 9n a20f=">20t335;a;63" n3516 n332" 8a2066line9ta20f="Document#L49"red 9n a20f=">20t653;alcu =11" neeby~aneUNLOCKa5 cesaetwa;63" r>n2sriibetwaa63" nT >nperceive &qat;63" n2mory-barriers.txt#L503" n2mor>n23" c9L20t7line9ta20arriers.txt#L568" id9"L520arr>20t3m7;athern2 mla>n2'iec4ch-seh ve atyarriene0beas updateloier63 cirres aosem>e But;63" n2mory-barriers.txt#L503" n2mor>n23" c9L20t8line9ta20Documentation/memory8bar20Doc>20t8m1;anow imag#L5 et " = seooer >n2twaxtn >nreadaetosg valu n1s="line" name===========n1s=">n1mume9r" id=9&2069line9ta20B), <5 href="Documen9ati20B),>20t319;a;63" n3 an4n31hou9t207"line9ta20B), <5 href="Documen9ati20B),>20B)37;a;63" n3s>n2t1 >n2 2 >OMMENT;63" n3516 n332" 8a2071line9ta20B), <5 href="Documen9ati20B),>20B137;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e thern3sre> 3ern3sre> 3e thern3sre> 30 |a> ""lin00/6bemory-b 1/ 1/a 1/a2072line9ta20B), <5 href="Documen9ati20B),>20B2m1;a;63" n3s..e;63" n2mory-barriers.txt#L503" n2mor>n23" c9L2073line9ta20B), <5 href="Documen9ati20B),>20B3m1;a;63" n3sssssssssssssssssqs3 p; 3"n3n313n/m+ ta> 444aOAD emort_indictyed2074line9ta20ass="line" name="L569"> 20ass>20B4m1;a;63" n3sssssssssssssssssxs3 *q; 3"n3n313n/m+ ta> 444aOAD emort_indictyed2075line9ta20f="Document#L49"red 9n a20f=">20B335;a;63" n3516 n332" 8a2076line9ta2067" id="L567" class=8lin2067">20B653;alcu abov" paireofaread ae mnh2ty.neier63 expes -deosem>,li atcu;63" n2writX=e="L588"> 588n274">9520B7line9ta20B), <5 href="Documen9ati20B),>20B748;ac4ch-t#L5 holdintupae get updateloiere&wa/abetwaaeooer >n2'iec4ch-sewhilst;63" n2writX=e="L588"> 588n274">9520B8line9ta208#L5 hg valu n1sf="Doc id=9&g9="line9amp9BupdatsTso/etwac4ch-t#L5 holdintsv3isdelayteloier63 a;63" r/abetwaaeooet;63" n2writX=e="L588"> 588n274">952069line9ta29B), <5 href="Documen9ata29B)g9="9537;a>n2'iec4ch-sby sSome ;63" rc4ch-aevY3n1s="line" name===========n1s=">n1mume9r" id=9&287"line9ta29B), <5 href="Documen9ata29B)>a29B335;a;63" n3516 n332" 8a2871line9ta2967" id="L567" class=8lia2967>a291)37;a;63" n3s>n2t1 >n2 2 >OMMENT;63" n3516 n332" 8a2872line9ta2967" id="L567" class=8lia2967>a292137;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e thern3sre> 3ern3sre> 3e thern3sre> 30 |a> ""lin00/6bemory-b 1/ 1/a 1/a2873line9ta29f="Document#L49"red 9n a29f=>a2963m1;a;63" n3sssssssssssssssssssssssssssssssssus3e 0, vs3e 1 aereps3e &u, qs3e &u0 |a> ""lin00/6bemory-b 1/ 1/a 1/a2874line9ta29ass="line" name="L569">a29as>a2949m1;a;63" n3svs3 2; 3"n3n313n/m+ ta> 444aOAD emort_indictyed2875line9ta29f="Document#L49"red 9n a29f=>a295#m1;a;63" n3ssmp_wmb(); 3"n3n313n/m+ ta> 444aOAD emort_indictyed2876line9ta29B), <5 href="Documen9ata29B)>a2962m1;a;63" n3s<A:modify v=2>"s<C:busy-> 3"n3n313n/m+ ta> 444aOAD emort_indictyea29B7line9ta2967" id="L567" class=9lia2967>a2973m1;a;63" n3sssssssssssssssss<C:aqueue v=2> 3"n3n313n/m+ ta> 444aOAD emort_indictyea29B8line9ta29579" id="L579" class9"la2957>a2983m1;a;63" n3sps3 &vssssssssssqs3 p; 3"n3n313n/m+ ta> 444aOAD emort_indictyed2869line9ta29f="Document#L49"red 9n a29f=>a29b9m1;a;63" n3sssssssssssssssss<D:r qurestp2> 3"n3n313n/m+ ta> 444aOAD emort_indictyea297"line9ta29f="Document#L49"red 9n a29f=>a29f4m1;a;63" n3s<B:modify p=&v>s<D: comity p=&v> 3"n3n313n/m+ ta> 444aOAD emort_indictyea2971line9ta29f="Document#L49"red 9n a29f=>a29t1m1;a;63" n3sssssssssssssssss<D:r eadp2> 3"n3n313n/m+ ta> 444aOAD emort_indictyea2972line9ta29f="Document#L49"red 9n a29f=>a2972m1;a;63" n3sssssssssssssssssxs3 *q; 3"n3n313n/m+ ta> 444aOAD emort_indictyed2973line9ta29f="Document#L49"red 9n a29f=>a2963m1;a;63" n3sssssssssssssssss<C:r ead*qv>" n3Rread n romv] b13 vt updateloie c4ch-;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a2974line9ta29f="Document#L49"red 9n a29f=>a29B4m1;a;63" n3sssssssssssssssss<C:unbusy-> 3"n3n313n/m+ ta> 444aOAD emort_indictyea2975line9ta29f="Document#L49"red 9n a29f=>a29t5m1;a;63" n3sssssssssssssssss<C: comity v=2> 3"n3n313n/m+ ta> 444aOAD emort_indictyea2976line9ta29Documentation/memory8baa29Do>a298296;a;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a29B7line9ta29arriers.txt#L568" id9"La29ar>a2973m1;Basgiclin,) whilstab;63ac4ch-t#LstywKbap updatelon >n2 2aevY3tulins,ut re'a;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a29B8line9ta29arriers.txt#L568" id9"La29ar>a29t8m1;an>nma9lLocks < 2,l nnoutsul13"evY3ierecum<8 >n291 f9BupdatsywKbap betwaarya;63" n2e,hsuppos> 6 ==/a>n2e,h>n29ume9a2969line9ta29t#L577" id="L577" cl9ssa29t#>a29b9m1;asd 63 " cimitatelon >n21.e;63" n2mory-barriers.txt#L503" n2mor>n23" c9L10="line9ta10="li77" id="L577" cl9ss=10="l>10B335;a;63" n3516 n332" 8a10=1line9ta10=="Document#L49"red 9n a10==">190251;a;63" n2 a> be"L3 busy don21" c9>1921line9ta10f="Document#L49"red 9n a10==">10=2m2;Tosul13"evYe2,le" ne-e" >ul13"po l&q a deneedey.nLe yneUNLOCK Lafareaa;63" n2 a> be"L3 busy don21" c9>1931line9ta10f="Document#L49"red 9n a10==">10=397;neUNLOCKDbetwyas etw n2ads " lcliywKba 5 cenetwac4ch-a >nyimityeit ecih"Le y;63" n2writX=e="L588"> 588n274">9510=4line9ta10=="Document#L49"red 9n a10==">10=448;aqueue b13 n r#Lid="ny fur;63" r quresy-barri2mory-2ment#L418"> 510OAD emort_indictyed2075line9ta20f="Document#L49"red1//n/s ;ne 1n2twKba;63" n2writX=e="L518"> 510 n3516>n332" 8a20b6line9ta20t#L577" id="L577" cl9ss=20t#L>20b637;a;63" n3s>n2t1 >n2 1cks < " =1eytwKba;63" n2writX=e="L518"> 510 n3516>n332" 8a20b7line9ta20t#L577" id="L577" cl9ss=20t#L>20b737;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e thern3sre> 3ern3s1betosg ;631 r>n2se;63" n2mory-barrie1s.txt10ory-b 1/ 1/a 1/a20b8line9ta20arriers.txt#L568" id9"L520arr>20b8m1;a;63" n3sssssssssssssssssssssssssssssssssus3e 0, vs3e 1 aereps3e 19"L520=rr>10=248;a;63" n29 20b19ss=20=#L>10=319;a;63" n3 an420b19ss=10="l>1f w 3" ;63" n2e,hsuppos> 1 6 =111AD emort_indictyed2876line9ta29B), <5 href="Documen9ata29B)>a2962m1;a;63" n3s<A:modify v=2&1ndy>n2t2 h1 aC/D)1s="line" name=====1=====11OAD emort_indictyea2972line9ta2967" id="L567" class=9lia2967>a2973m1;a;63" n3sssssssssssssssss19ss=20t#L>10t2m2;a;63" n2sndgits=txt1nfrom111>n29 a 9aL388" csi20t3l972line9t79" id="L579" class9"la2957>a2983m1;a;63" n3sps3 &am1" n3ssssss1ssssss1s="line" name=====1=====11s=">n1mume9r" id=9&20t4line9ta296="Document#L49"red 9n a29f=>a29b9m1;a;63" n3sssssssssssssssss1ssssssss+-1------+s="line" name=====1=====11s=">n1mume9r"ictyea297"line9ta29f="Document#L49"red 9n a29f=>a29f4m1;a;63" n3s<B:modify p=&v>s<D: 1ssssssss|;13" n3s|s="line" name=====1=====11s=">n1mume9r" id=9&20t4line9ta296="Document#L49"red 9n a29f=>a29t1m1;a;63" n3ssssssssssssss1---->| 13" n3s|s="line" name=====1=====11OAD emort_indictyea29B7line9tictyDocu_3ssssss_MMIOnorat9o="Document#L49"red 9n an997ame90299;a;(*) n=11etosg ;6313" n3s|s="line" name=====1=====11ory-b 1/ 1/a 1/a20b8line9ta29f="Document#L49"red 9n a29f=>a29B4m1;a;63" n3ssssssssssssss1ssssssss|;13" n3s|s="line" name=====1=====11OAD emort_indictyed2869line9ta29f="Document#L49"red 9n a29f=>a29t5m1;a;63" n3sssssssssssssssss&1ssssssss|;13" n3s|s="line" name=====1=====12s=">n1mume9r" id=9&203"liiiiia29f="Document#L49"red 9n a29f=>a2972m1;a;63" n3sssss1---->| 13" n3s|s="line" name=====1=====11s=">n1mume9r" id=9&2021line9ta29f="Document#L49"red 9n a29f=>a29aff=";63" n3sssssssssssssssss<C:r ead*qv>" n3Rread n romv] b13 1ssssssss|;13" n3s|s="line" name=====1=====12s=">n1mume9r" id=9&2032line9ta20t#L577" id="L577" c1ssssssss| 1eby~an|s="line" name=====1=====12s=">n1mume9r" id=9&g9=n/mem9s.t9B), <5 href="Docum=12 n3ssssss163" no|s="line" name=====1=====11s=">n="DocsoL56996510ble9= nmbetou0f="969linred 9n an9510=4liorsbov" paDocumena1mume9r" id=9&g9=n/mem9s.t9B), <5 href="Docum=12sssssss+-13" n3s|s="line" name=====1=====11s=">nsplit9n a10==>n29umT///ers9=n/mem16933by">n2uume1" f=";9r2042line9L49"rcum9t#L577" id="L577" cl9ssa29t#>a29b9m1;asd 63 " cssssssss|;13" n3s|s="line" name=====1=====11s=">nW9a29B7n/mem"red do9umT205"#L49"red 9n a10==">10=2m2;nocumentcumw" idaame tern2ad asre5ti tTo="Lme===n w 3" nmn)aasIn/9barriers.txentcu,e="L56entdo," c9;a;(*) ="L5bment37;a;on9t#L577" id="L577" cl9ssa29t#>a29b9m1;asd 63 " csetosg ;6313" n3s|s="line" name=====1=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="L577" =1 sssssss|;13" n3s|s="line" name=====1=====11s=">nOt#L49"red n2mact9ascumensplit9n a10s,1;aItne9tacoordinumen1" c9>1931livarioutab;63ac4ch-t#LstywKbap updatelon >n2 2aevY31ssssssss|;13" n3s|s="line" name=====1=====11s=">nta29aret29ume9red 9n " 8a206r9f="Doc.t9f="Dsem16tici20B),>209n an9r 8avev" paireofaread ae mnh2ty.neier63 exp1ssssssss+-1------+s="line" name=====1=====11s=">n1lineume9coordinumi" c9Ls9ionabse693335;" 8a2066line9tm9t#L577" id="L577" cl9ssa29t#>a29b9m1;asd 63 " c" n3ssssss1ssssss1s="line" name=====1=====11s=">n1mume9r" id=9&2032line9ta20t#L577" id="L577" c19ss=20t#L>10t2m2;a;63" n2sndgits=txt1nfrom1YLretun2snd> 20rma9ly9In/mem9s.t9 to nn3 an>n31hou9t2 VS DMAn2snd> 20rma9ly9In/mem9s.t9 to 518 20rma9ly9In/mem9s.t9 to 513OAD emort_indictyea2976line9ta29Documentation/memor1es///ie i6188n313n/m+ 1a> 441aOAD eN"L56ent=">20ts29ume9a20D6ef="Documen9aticl9ss="997ame913rr989 16douumeDMA.t9Inma9lLocks < " = eytwKba aty. 4T >nrea" tcata19ss=20t#L>10t227;a;63" n2s="line" na1e====1======"997aDocuL1 a/a> <9 hr f=mptuumeDMA n2maob9a20Dstale9L49"r9f=>aRAM">95ss="line" name="L569"> 20ass>20D251;a;(*) whilst=t///>nt#L49========u;61" n2w1itX=e=n2s=">n2uum"red 9n8line9t"> 588n23" c9Lsc9Lumen1" =6line9999" 56entd9f=>aRAM">95ss="line" name="L569"> 20ass>20D251,>20t937;a163" res///ie i6b88 <9 hrre tnt#Lack9atistalye" n2Tolcu--me9a20D6i/a>nape9tar.txt#ers.txt9f=>aRAM">95ss="line" name="L569"> 20ass>20D251,y.neier63 emory8bar20Doc>20Do27;a;61" n2s1"line"nka=9=lplit9n48lina29arrverlapen/memi href=n2uum"on8"> 5832" (999" 5620D251;a;(*) whilst=t///>n2 ci tyisul13" ogat h1re&wac4ch-1aetwa;63" rc4ch- e ;61" n2s14 a2tw rest /a1etwaa63" no- perhapsTso;61" n2s14gits=txt1nfrom1YLretun2snd> 20rma9ly9In/mem9s.t9 to -t#L5 o e21rdoma apecuiutivern2ad; 31n3 20rma9ly9In/mem9s.t9 to -a href="Do9" id9"L520arr>20D274;a;61" n2w1itX=e=n2uum"red 9nbe--4n3e tnt#Lack9atistal9a20DaDocumen9ati20B),"red 9nme1" ="997aha c9>1931livarioutab;63ac4ch-t#LstywKbap update" ne-e" >n1erappliede >n2 " c4ch-;61" n2e1hsupporrie2e,hio999esy d f=",.t9t#2uum"red 9n"> 5881931livarioutab;63ac4ch-t#LstywKbap update"entation/metw rest /abetwaa63" n; 31n3&29ume9a29c9>1931livarioutab;63ac4ch-t#LstywKbap update" >nrea" t8" id9"L520arr>20D227;a;61" n2s1"line"9ta27" cl9ss#3n2e,h>n29ummen9ati20B),"r99"c9;oadatan2wolcu--me9a20D6i/a>c9>1931livarioutab;63ac4ch-t#LstywKbap update"a;(*) whil n2ads s9rni 1 avl 5832";" 8a2066line9tm9t#L577" id="L577" cl9ssa29t#>a23" pottxti1ine02nLes aetosg n2adse;61" n2m1ry-barriers.txt#L503" n2mor>n23" c9L2051line9ta20Doc1mentation/1emory8bar20Doc>20b251;a;61" n2 1a> beSee L503" n2mor>n2===1=tlbta20=====m>n2uun>n29ulineuoni20B),"=2nage" n2;" 8a2066line9tm9t#L577" id="L577" cl9ssa29t#>a23w rest /a12,l nn2ma n11" neUNLOCK;61" n2 15gits=txt1nfrom1YLretun2snd> 20rma9ly9In/mem9s.t9 to T >nrea" 1cata>n2'iec4ch-seie;61" n2m15313n/m+ ta> 444aOAD emort_indictyed2044line9ta20arr120t#L>20b417;ather quess1" n>n2911s=1line"1name=====1=====11s=">nn3 8"> m+ ta> 444aOAD emort_indictyed2044line9ta20arr12 ne-e" >n18" id9"L520arr>20b335;a;61" n3516 "L518"> 518 20rma9ly9In/mem9s.t9 to 1>n2 2 >OMMENT;61" n3515313n/m+ ta> 444aOAD emort_indictyed2047line9ta20arr1ern3sre> 31rn3sre> 3e thern3sre> 30 1 1|a> "M9ionabm067"d I/O us"> 5887" css.t9f="Do9s.t9Ds9ionabs.txne9ta20arri9<"lirs.txt9f=>aRAM">95ss="line" name="L569"> 20ass>20D251s3e 1 aere1s3e &u, qs3e &u0 1 1|a> "a9599 58820b9m1;a;63" n3svs3 2; 31n3 =staln2slass=8599a2mure=chang1T >nv3is visi.t>nb13 31n3n23" c9L2051line9ta20Doc1ssssssssss1sssssssssssschang1T >np 31n3 588 5887"Dofacn a20== na1e4">9599n23" c9L2051line9ta20Doc1sw rest /a1 in c4ch- A exclusivene1e1tatio1/memor20B)n/me8linc9;y"r99"goln2slas5887onme1" ="997abu 9n " 8ai>n274">98"> 54">9599n23" c9L2051line9ta20Doc1s >nrea" 1m1;a;63" n3sps3 &v; 31n3520=5le588n2earli an999" n99397;aetwireown n2ads asre5ti ts ane"fa1n0t#L>20b41 in c4ch- B exclusivene1e1tatio1/memorA n3516>n33fromn2 ci tyisul13" ogat h1ocument#L41"red 9n a20f=">20t335;a;61" n3516 48line9tae9tacoordinmre r99"rdin8"> 54">959274">959a>n2an2uunD251;a;(*) whilst=t///>n2 ci tyisul13" ogat h1o 1a63" nT >nperceive &qat;61" n2m1ry-bar74">#3n2do9umT202;" 8a2066line9tm9t#L577" id="L577" cl9ssa29t#>a2updateloie163 cirres aosem>e But;61" n2m16ame=====1=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L5er >n2twax1n >nreadaetosg valu n1s=1line"1name===========n1s=">n1mume9r" id=9&2069line9ta20B),1<5 href="D1cumen9ati20B),>20t319;a;61" n3 1n420b737;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e th 1>n2 2 >OMMENT;61" n3516 T1==THINGSrocuS GET UP T m+ ta> 444aOAD emort_indictyed2044line9ta20arr1ern3sre> 31rn3sre> 3e thern3sre> 30 1 1|a> ""L577" cl9ss=20t#L>20b737;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e th w rest /a1B),>20B2m1;a;63" n3s..e;61" n2m1name===========n1s=">n1mume9r" id=9&g9=n/mem9s.t9B)m1n >nrea" 1sssssssssssssssssqs3 p; 31n3n29ocumentcumw" idaame tern2ad asre5ti tTo="Lme===n w 3"1;a;63" n31ssssssssssssssssxs3 *q; 31n3dritDsi it m h ve ayas s sa1ncument#L41"red 9n a20f=">20B335;a;61" n3516 Docume20rma9l2033lineiei" c9Lcodnt#L43 an>n3="Document#L49"red 9n a10==">10=448;aqueue b13 ty.neier631 expes -deosem>,li atcu;61" n2w17313n/m+ ta> 444aOAD emort_indictyed2047line9ta20arr1etwaaeooer1>n2'iec4ch-sewhilst;61" n2w17ame=====1====aid=9A203"liiiiia29f="Document#L49"red 9n a29f=>a2972melayteloie163 a;63" r/abetwaaeooet;61" n2w17ame=====1====*Bid=b203"liiiiia29f="Document#L49"red 9n a29f=>a2972mec4ch-sby 1Some ;63" rc4ch-aevY3n1s=1line"18ame=====1====cid=9C203"liiiiia29f="Document#L49"red 9n a29f=>a2972me 1cumen9ata29B)>a29B335;a;61" n35ome n3sd=9&2 csi20t5lrd)n/me8lincme=====1==967>a291)371a;63" n3s>n2t1*E e 1cumen9ata29B)>a29B335;a;61" n35ome n3sd=9&2 #L>20b737;a;63" n3s3e thern3sre> 3s1e the183sre> 3s3e th w rest /a1B),>20B2m1;a;63" n3s..e;61" 2963m1;a;61" n3sssssssssssssssssssss1sssss18ytwKba agatoulda20f="> Docume20rma9l2033lineiei" c9Lcodnt#line9ta29B1, <5 href="Documen9ata29B1>a29618;aqueue b13 ty.neier631 expes -deosem>,li atcu;61" 7line9ta2917" id="L567" class=9lia2917>a2913m1;a;63" n3ssLOADaae, STOREmel,sLOADaaC,sLOADaaD, STOREmeE 1a63" nT >nperceive &qat;61" n2m1ry-bar74">#3n2ictyea29B81ine9ta29579" id="L579" cl1ss9"l18/mem9s.t9t#L5er >n2twax1n >nreadaetosg valu n1s=1li9line9ta291="Document#L49"red 9n a291=>a2919cl9ssa29t#>a29b9m1;asd 63 " cimitatelon >n21.e;63" ument#L49"1ed 9n a29f=>a29f4m1;a;63"1n3s&l1;B:modReemsLfine9t a20fur1/mem1e1tm-a >2mor>W" clm oga busy custymCil>n2lLocks ument#L49"red 9n a29f=>a2pn3srene9amp9B),4">9520B8line9ta208#L5 hg valu n1sf="Doc id=9&g9="line 1 aereps3e &u, qs3e &u0 |a> ""lin00/6s>n2lLo0arr120t#L>218 hr0/6s>u0 |a> ""lin00/6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2010==>n9a" n2writX=e="L588"> 588n274">952069line9ta2a agatoulda20f="> n21"u9t20r> 58ke" ="99569" id9"L5d="L577"d it87dtxt " ="99Docrli069line9ta2a agatoulda20f="> n313n/m+1ta> 444aOAD"line9" c9==mig>a2e,h>3n2a9l2=9n313n/m+19=====11s="oL569963s3e thern3sre> 3s1e the183sre> 3s3e th w rest //memory8ba129Do>a298296;a;63" n2e,hs1ppos>19id="L567" class=9lia2917>a2913m1;a;63" n3ssLOADaae, 2aevY3tuli1s,ut re'a;63" n2e,hs1ppos>198 6 ====== a>n21erre t="liref="Documen3m1;"> 54">9n2sh2ataainreadbap betwaarya;63" n2e,hs1ppos>19====*Bid=btohr9f="Documunne959aa2039line9ta20B), <5 href="Documen9ati20B),>20t9372 63 " cimi2atelon >n21.e;63" n2mory2barri2rs.txt#L503" n2mor>n23" c9L10="line9ta10="li77" id="2577" cl9ss210="l>10B335;a;63" n3516<2a> n21erre t="liref="Documen3m1;77" cl9ss=24">9nta20etnd>r#L503" n2mor>n23" c9L10="line9ta10="li77" id="2527" cl9ss21 |a> ""lin00/6s>n22 be"L202 #L>20b73ne9ta20wrol9ss>&29class=8lin2067">ln2t_indict29ar>as39line9ta20B), <5 href="Documen9ati20B),>20t9372 37" cl9ss21itX=e="L588"> 588952069line9ta2a agatoulda20f="> nyimit2eit ecih"Le y;63" n2writ2=e="L20 6 ======.txt#L568" idcl9ss=20t10a> <9 hr9f="Dom2;norr" na" id9atmmooordinuume1" 069line9ta2a agatoulda20f="> nyimit2eC:unbusy-> 3"n3n32ent#L20a> 444aOADoni/a>569"2ai>n2520B8lumen139line9ta20B), <5 href="Documen9ati20B),>20t9372 6 >nyimit2eomity v=2> 3"n3n32=e="L208"> 513OAD emort_indictyea2976line9ta29Documentatio2 >n2 1cks2 < " =1eytwKba;63" n2writ2=e="L218"> 51==== a>n21" c9f=91921l==>n29mT///ers9=n/mmentctalkcl9ss=13OAD emort_indictyea2976line9ta29Documentatio2 8>n2 1cks2 ,ut re'a;63" n2e,hs2barri21s.txt10orys=20t100r 5887he,hware37;a;(*)6s>u batnd>r0a> <9 hr92mordjaca1e420arri9<"ss">dritDsi it m h ve ayas s sa1ncument#2eps3e 19"L220=rr>10=248;a;63" n2920b19ss220=#L>10=319;a;63" n3 an42value21pecul11OADe9a29"L521;a;to 1);ac r#L1 acromen rombetwa>n2 s///n/ab= id=sTso/etwe2177" cl9ss210="l>1f w 3" ;63" n2e,hs2ppos>21s.txt#L503" n2mor>n23" c9L2051line9ta20Doc1ssssssss2y v=2&1ndy2n2t2 h1 aC/D)1s="line" na2e====21=====1====.txtis9ionabspd1line9ta2L49"ree9a205"lxt#L568r f1;"> 5=="Docum9ta2-97;neUNLOCKDbetwyas etw n2ads " lcliywKba 5 cenetwac4c2ssssss19ss220t#L>10t2m2;a;63" n2sndg2ts=tx21nfrom111>nmene" ism#L49"redlameverlapis - ume929B1, 9ta9=4">95catan2wrhitretun2snd>CKDbetwyas etw n2ads " lcliywKba 5 cenetwac4c2sa >nyimit2ssssss1ssssss1s="line" na2e====21=====11s="-mentation/memory8bar20=oc>20=296;a0D6ef="Docu2;" 8a2066ar>a29t8mat9tag";63" nCKDbetwyas etw n2ads " lcliywKba 5 cenetwac4c2s5 >nyimit2ssss+-1------+s="line" na2e====21=====11s="#L568"to xt#L568" id9"L520=rr>20=3m7;abecome atyarrie i6betwaary8 2<D: 1sss2ssss|;13" n3s|s="line" na2e====218"> 513OAD emort_indictyea2976line9ta29Documentatio2ssssss1---2>| 13" n3s|s="line" na2e====21=====So5==s.txnxt#L568" , s" c9c ="L55catan2wrodnt#li29ummen9at n351odnt#L43 an>13OAD emort_indictyea2976line9ta29Documentatio2s8>n2 1cks2sg ;6313" n3s|s="line" na2e====217" cl9s6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012ssssss1sss2ssss|;13" n3s|s="line" na2e====21ocument#L49"red 9n a291=>a2919cl9ssa29t#>a29b9m1;as2sssss&1sss2ssss|;13" n3s|s="line" na2e====21=====12s=">n1&qat;61" ...2ictyea{*C,*D}B81ine9ta2" n2m1ry-bnt#L49"red 9n a291=>a2919cl9ssa29t#>a29b9m1;as2s77" cl9ss2>| 13" n3s|s="line" na2e====22s.txt#L503" n2mor>n23" c9L2051line9ta20Doc1ssssssss2b13 1sss2ssss|;13" n3s|s="line" na2e====2======n1s=">n1(Wef=" "ctyea{*C,*D}"5887a2d="bin9>1 a>nMIOnorat9o="Document#L49"red 9n an997ame90299;a2577" c1sss2ssss| 1eby~an|s="line" na2e====21=====12s=">n1mume9r" id=9&g9=n/mem9s.t9B), <5 href=2Docum=12 n2ssssss163" no|s="line" na2e====22a> 444aOAD emort_indictyed2044line9ta20arr120t#L>202Docum=12ss2ssss+-13" n3s|s="line" na2e====21=====H a20==,ain23" c9L2051line9ta20Doc1s >nrea"2 63 " csss2ssss|;13" n3s|s="line" na2e====21=====_.t9_0a> <9 hr9 id="L577"brr>20t3m72wrowri>n2me9a29B8lit#L577s=">n1lumw" idaame tern2ad asre5ti tTo="Lme===n w 3" nm999e=n/mme9ta20f=neiei" c9L an>6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012 63 " cset2sg ;6313" n3s|s="line" na2e====21=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="2577" =1 ss2ssss|;13" n3s|s="line" na2e====2======n1s=">n1Uliiiiia29f="Document#L49"red 9n a29f=>a2972melaytelo22aevY31sss2ssss|;13" n3s|s="line" na2e====2======n1s=">n1*AliiVia29f="Document#L49"red 9n a29f=>a2972melaytelo2277" cl9ss2ssss+-1------+s="line" na2e====2======n1s=">n1*AliiWia29f="Document#L49"red 9n a29f=>a2972melaytelo2213 1sss2ssssss1ssssss1s="line" na2e====23=====n1s=">n1Xliiiiia29f="Document#L49"red 9n a29f=>a2972melaytelo2277" c1sss220t#L>10t2m2;a;63" n2sndg2ts=tx233====n1s=">n1*AliiYia29f="Document#L49"red 9n a29f=>a2972melaytelo22ocum=12 n2ssssss1ertien1s="line" na2e====23=====11s=">n1Zliiiiia29f="Document#L49"red 9n a29f=>a2972melaytelo22ocum=12ss2ssss+-10t274;a;63" n2writ2=e="L238"> 510OAD emort_indictyed2075line9ta20f="Document#2Documm1Yss2ssss|;1tKbaebu;63" n2writ2=e="L218"> 5"> 5>218 c9Lnoine9ta29arrie997a8neiei" c9Lcinflt_ind,ai218 cord 9n10OAD emort_indictyed2075line9ta20f="Document#2Dn13o=11--2/ie i6188n323n/m+23s.txt#L50fic9Lc6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012 tcata19ss220t#L>10t227;a;63" n2s="l2ne" n23=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="2ilst=t///>2t#L49========u;61" n2w1it2=e=n223=====n1s=">n1Uli=5"lxt#Ligic9Lcry8ba#L43*2 VS DMAn2snd> 20rma9ly9In/mem9s.t9 to n1XliiiW VS DMAn2snd> 20rma9ly9In/mem9s.t9 to 20Do27;a;61" n2s1"l2ne"ñ====11s=">n1ZliiiY VS DMAn2snd> 20rma9ly9In/mem9s.t9 to n1*AliiiY VS DMAn2snd> 20rma9ly9In/mem9s.t9 to 20rma9ly9In/mem9s.t9 to -t#L5 o 221rdoma ap2cuiutivern2ad; 31n3n n3549"rin00/i/a>569"2n21"enocumn a20==u" ise2t_indict2w" idaame tern2ad asre5ti tTo="Lme===n w 3" nm20D274;a;61" n2w1it2=e=n22um"reda> <9 hr6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012n1erapplie2e >n2 " c4ch-;61" n2e1hs2pporr248"> 513OAD emort_indictyea2976line9ta29Documentatio2/metw rest2/abetwaa63" n; 31n320D227;a;61" n2s1"l2ne"9t24=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="2il n2ads s2rni 1 avl20B653;buume9a29B8line9ta29arriers.txtse2t_indi49"rv" paDlW9a29anaame tern2ad asre5ti tTo="Lme===n w 3" nm9==mightion/memviewictyed2875line9ta29f1"Docu1ent#L4==n w 3"1;aa h2n2i1ine02nLe2 aetosg n2adse;61" n2m1ry2barri25ka=9=lpliworltan2">20s2d=nsisn2e,d9"L520=rr>20=3m7;abecome atyarrie i6betwaary8 2/1emory8ba220Doc>20b251;a;61" n2 1a>2 beSe25=====11s=">n1mume9r" id=9&2032line9ta20t#L577" id="2a12,l nn2m2 n11" neUNLOCK;61" n2 15g2ts=tx21nfrom11e3 ane9ta2L49"red n2d="bin9,L#3n2e,h1t#L#9fer ela2066s2g9="line92t_indib3" n3ssmp_wmb();ssssssssssssssssssssssMak mure=cha2 1cata>n2&239;iec4ch-seie;61" n2m15323n/m+2rs.txt#L5069"2ne9tasegs.txtmd9"L520=rr>20=3m7;abecome atyarrie i6betwaary8 2/o9" id9"L2uess1" n>n2911s=1line"1na2e====2======n1s=">n1mume9r" id=9&2055line9ta20arriers.txt#2n18" id9"L220arr>20b335;a;61" n3516<2a> "L218"> 5Ft#L>999e=n/6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012 1>n2 2 2 >OMMENT;61" n3515323n/m+2ta> 444aOAD emort_indictyed2047line9ta20arr1ern3sre>231rn3sre> 2e thern3sre> 30 1 1|a2 "M92n00/6bemory-b *AliiVia29f="Document#L49"red 9n a29f=>a2972melaytelo2e1s3e &2u, qs3e &u0 1 1|a2 "a92n00/6bemory-b *AliiWia29f="Document#L49"red 9n a29f=>a2972melaytelo2#1>20b9m1;2;63" n3svs3 2; 31n3n23" c9L10="line9ta10="li77" id="2g1T >nv3is2visi.t>nb13 31n31926s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012s1ssssssss2ssschang1T >np 31n3n1mume9r" id=9&2032line9ta20t#L577" id="2a1 in c4ch2 A exclusivene1e1tatio1/m2mor20263====n1s=">n1*AliiWia29f="Document#L49"red 9n a29f=>a2972melaytelo2#1cata>n2&2n3sps3 &v; 31n3 444aOAD emort_indictyed2044line9ta20arr120t#L>20241 in c4ch2 B exclusivene1e1tatio1/m2morA 2 nsiind,aDocuB8liD20b2m1;aImag#L,ai218 cord 9nass=8le9a2051931livarioutab;63ac4ch-t#LstywKbap updateou2< 63 241"red 9n 220f=">20t335;a;61" n3516<2a> 482ine9ta 9taagdict2V2n21*Alis l9a2. Similarly6s>n2lLo0a ,88"> 372me d503" n2mord 9n a2012s1>n2 2 2nperceive &qat;61" n2m1ry2bar7426a> 444aOAD emort_indictyed2047line9ta20arr1ern3sre>2e163 cirr2s aosem>e But;61" n2m16a2e====2600/6bemory-b *AliiYia29f="Document#L49"red 9n a29f=>a2972melaytelo2x1n >nrea2aetosg valu n1s=1line"1na2e====269====11s=">n1Zliiiiia29f="Document#L49"red 9n a29f=>a2972melaytelo2D1cumen9at220B),>20t319;a;61" n3 1n42val"L27s.txt#L503" n2mor>n23" c9L10="line9ta10="li77" id="2 1>n2 2 2 >OMMENT;61" n3516<2a> T127s.txtf=",aDocuB8liD216>n33from1926s>n2lLo0a ,88"> 372me d503" n2mord 9n a201231rn3sre> 2e thern3sre> 30 1 1|a2 ""L27=====11s=">n1mume9r" id=9&2032line9ta20t#L577" id="2a1B),>20B221;a;63" n3s..e;61" n2m1na2e====273====n1s=">n1*AliiYia29f="Document#L49"red 9n a29f=>a2972melaytelo2 1ssssssss2ssssssssqs3 p; 31n3n1ZliiYia29f="Document#L49"red 9n a29f=>a2972melaytelo2 1 in c4ch2sssssssxs3 *q; 31n3 444aOAD emort_indictyed2075line9ta20f="Document#241"red 9n 220f=">20B335;a;61" n3516<2a> Do278"> 5"> 5ss=8&qat;0/6bemory1n20==" id="L5B8lnr>nDoni/a>569"d9"L520=rr>20=3m7;abecome atyarrie i6betwaary8 231 expes -2eosem>,li atcu;61" n2w17323n/m+2ta> 444aOAD emort_indictyed2047line9ta20arr1etwaaeoo2r1>n2'2ec4ch-sewhilst;61" n2w17a2e====27=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="2e163 a;63"2r/abetwaaeooet;61" n2w17a2e====21====*AND THEN THEREion/mS THE ALPH113OAD emort_indictyea2976line9ta29Documentatio2 1Some ;632 rc4ch-aevY3n1s=1line"18a2e====21====c18 20rma9ly9In/mem9s.t9 to 2 1cumen9at229B)>a29B335;a;61" n35ome2n3sd=28s.txt#L503" n2mor>n23" c9L2051line9ta20Doc1ssssssss2 1cumen9at229B)>a29B335;a;61" n35ome2n3sd=2&2 #L>11e3"969linred69"2xa<5 href="DocW9a29relaxed,4">95entat2xa. 1aOAonl588ss">dritDsi it m h ve ayas s sa1ncument#2a1B),>20B221;a;63" n3s..e;61" 2963m12a;61"2n3ssss52069linee20rm16tici20B),>269"2v" paD9ascumed1line9ta2,9Docrlihr f=2 a>n21v" ps">dritDsi it m h ve ayas s sa1ncument#2a1ssssssss21n3 58895epacumn aimn274">98">ta10ntats">dritDsi it m h ve ayas s sa1ncument#2a1 in c4ch2xclusivenextatcu, leach-s2" rc12 fint3 <93m1;Bd"#L49"red 9n a10=="rean2wrbed="ynchronif="Doot 1/a 1/a2874line9t129ass1"line"3" n2mory-b cene2,ume1exter24cl503" n2mo n3516 748;ac4ce9ta20f=16>n33fD6ef="Do1, <5 hr,ythu/m6933by"i>95e a>58ke pone9ta1/a 1/a2874line9t129ass1"line"3" n2mory-b cene2,1 expes -2eosem>,li atcu;61" 7line92a29172 id="Lne" nas v/anew3m1;Bdoccur9class=8r ="L5athern1/a 1/a2874line9t129ass1"line"3" n2mory-b cene2,1>n2'2OADaaC,sLOADaaD, STOREmeE21a63"28=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="2x1n >nrea2aetosg valu n1s=1li9line92a291=2DocumeTci20B),>210"2x9ta20f=Linuxit9nn21.e;63" ument#249"1e2 9n a29f=>a29f4m1;a;63"1n3s&l1;B:modReemsLfine9t a202ur1/mem1e12m-a >2mor>W" clm oga busy2custy2Cil>n2Se929B1, ubse1-1------"C9n"> C6ef="Doc"5 n3n1/a 1/a2874line9t129ass1"line"3" n2mory-b cene2 1cumen9at2 |a> ""lin00/6s>n22Lo0ar29=====11s=">n1mume9r" id=9&2032line9ta20t#L577" id="2==>n9a" n22ritX=e="L588"> 588n224">952069line9ta2a agatoulda20f="> 3s3e thern3sre> 3s3e th w rest 2mamov27;a;2tC:unbusy-> 3"n3n323n/m+2ta> 44EXAMPLE USESs3e thern3sre> 3s3e thern3sre> 3s3e th w rest 2mume1exter2comity v=2> 3"n3n323n/m+29=====737;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e th w rest 2m1 expes -229Do>a298296;a;63" n2e,hs2ppos>29id="L567" class=9lia2917>a2913m1;a;63" n3ssLOADaae,22aevY3tuli2s,ut re'a;63" n2e,hs2ppos>298 6 =CIRCULAR BUFFERSs3e thern3sre> 3s3e thern3sre> 3s3e th w rest 2m1n >nrea2bap betwaarya;63" n2e,hs2ppos>29====*-----------------------n2snd> 20rma9ly9In/mem9s.t9 to 3 63 " cimi3atelon >n21.e;63" n2mory3barri3rs.txt#L503" n2mor>n23" c9L10="line9ta10="li77" id="3577" cl9ss310="l>10B335;a;63" n3516<3a> 1921l==la2066 cir"Docr bu"> 5nt#Laa29B8lit#L577s=#L503" n2mor>n23" c9L10="line9ta10="li77" id="3527" cl9ss31 |a> ""lin00/6s>n23 be"L302 #L>2mor420a9a20Ds 5nali0/i/a>5produc9r4ce9ta20f=d=nsn23". Se96s>n2lLo0a ,88"> 372me d503" n2mord 9n a2013 37" cl9ss31itX=e="L588"> 588952069line9ta2a agatoulda20f="> nyimit3eit ecih"Le y;63" n2writ3=e="L30=====11s=">n12a agatoulda20cir"Docr-bu"> 531n3<069line9ta2a agatoulda20f="> nyimit3eC:unbusy-> 3"n3n33ent#L318"> 510OAD emort_indictyed2075line9ta20f="Document#3 6 >nyimit3eomity v=2> 3"n3n33=e="L308"> 5ft#L#9tailid9"L520=rr>20=3m7;abecome atyarrie i6betwaary8 3 >n2 1cks3 < " =1eytwKba;63" n2writ3=e="L30id="L567" class=9lia2917>a2913m1;a;63" n3ssLOADaae,3 8>n2 1cks3 ,ut re'a;63" n2e,hs3barri30=====1 1>n29 a 9aL388" csi99<8/mem9s.t9t#L577" id="3eps3e 19"L320=rr>10=248;a;63" n29 3s3e thern3sre> 3s3e th w rest 3#L>20b19ss320=#L>10=319;a;63" n3 an43value31peculREF 8"> ESs3e thern3sre> 3s3e thern3sre> 3s3e th w rest 3177" cl9ss310="l>1f w 3" ;63" n2e,hs3ppos>31s.txt7;a;63" n3s3e thern3sre> 3s3e thern3sre> 3s3e th w rest 3#27" cl9ss3n2t2 h1 aC/D)1s="line" na3e====31=====11s=">n1mume9r" id=9&2032line9ta20t#L577" id="3ssssss19ss320t#L>10t2m2;a;63" n2sndg3ts=tx31nfrom0B),>2AXP Archite1-acn Reff="Do1,Manual, Seen9atEe1" f= (SitesaL388"ene9ekss">dritDsi it m h ve ayas s sa1ncument#3sa >nyimit3ssssss1ssssss1s="line" na3e====31=====Digital Pg>a2MIOnorat9o="Document#L49"red 9n an997ame90299;a3s5 >nyimit3ssss+-1------+s="line" na3e====31=====11s=">n1Chapuume5.2: Phya> Addg>a2 Sine9tCharacuumis"DseIOnorat9o="Document#L49"red 9n an997ame90299;a3s6 >nyimit3ssss|;13" n3s|s="line" na3e====31=====11s=">n1Chapuume5.4: C48;ac4"> 5Wb2m1;Bu"> 53IOnorat9o="Document#L49"red 9n an997ame90299;a3s >n2 1cks3>| 13" n3s|s="line" na3e====31=====11OAD emChapuume5.5: D1;BdSharnt#IOnorat9o="Document#L49"red 9n an997ame90299;a3s8>n2 1cks3sg ;6313" n3s|s="line" na3e====31=====11ory-b Chapuume5.6:#L49"/Wb2m1;OL568r fIOnorat9o="Document#L49"red 9n an997ame90299;a3sps3e 19"L3ssss|;13" n3s|s="line" na3e====31ocument#L49"red 9n a291=>a2919cl9ssa29t#>a29b9m1;as3sssss&1sss3ssss|;13" n3s|s="line" na3e====31=====AMD64 Archite1-acn P=might87"ionabspManual Vol a2 2: S<5 hr P=might8r fIOnorat9o="Document#L49"red 9n an997ame90299;a3s77" cl9ss3>| 13" n3s|s="line" na3e====31=====11s=">n1Chapuume7.1: Mf="Do-A>959a>OL568r fIOnorat9o="Document#L49"red 9n an997ame90299;a3b13 1sss3ssss|;13" n3s|s="line" na3e====3======n1s=">n1Chapuume7.4: Bu"> 5nt#L"> 5C="binnt#LMf="Do"Wb2m13IOnorat9o="Document#L49"red 9n an997ame90299;a3577" c1sss3ssss| 1eby~an|s="line" na3e====31=====12s=">n1mume9r" id=9&g9=n/mem9s.t9B), <5 href=3Docum=12 n3ssssss163" no|s="line" na3e====32a> 44IA-32 Intel Archite1-acn Software3Devel0/6bionabspManual, Vol a2 36s>n2lLo0a ,88"> 372me d503" n2mord 9n a2013Docum=12ss3ssss+-13" n3s|s="line" na3e====31=====S<5 hr P=might8r f Guin>13OAD emort_indictyea2976line9ta29Documentatio3 63 " csss3ssss|;13" n3s|s="line" na3e====32=====11s=">n1Chapuume7.1: L0a99>1Atomic ODocume20r13OAD emort_indictyea2976line9ta29Documentatio3 >n2 1cks3>| 13" n3s|s="line" na3e====32=====11OAD emChapuume7.2: Mf="Do"OL568r fIOnorat9o="Document#L49"red 9n an997ame90299;a3b8>n2 1cks3sg ;6313" n3s|s="line" na3e====32=====11ory-b Chapuume7.4: S 5nalizr f I5ssss1-1--r13OAD emort_indictyea2976line9ta29Documentatio3 3sps3e 19"ssss|;13" n3s|s="line" na3cum=1;13" n3s|s="line" na3ref029=1;13" lkf=>a2372mela id=SPARC=12 n3ssssss16a> 44IA-3a1B),> 9tatio3 3sps3e 19"ssss|;13" n3s|s="line" na3cum=1ght8r fIOnf="Document#L49"red 9n a23f=>a233ame90299;a3s77" cl9ss8t;| 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ss1*AliiWia23f="Document#L49"red 9n a23f=>a2372melaytelo221Ap c4cix D:3o=1ssssS1n3 48l 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ss1"Wb2m13IOnf="Document#L49"red 9n a23f=>a2372melaytelo227Ap c4cix J:Docum=12ss3ss/6s>n23 bl 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ss131=====12sf="Document#L49"red 9n a23f=>a2332melaytelo2#1cata>n2&2n3sps3 &v; 31n3a2372melaUltraSPARC=ss|;13" n3>10t2m2;a;63" n2sytelo2#1cata>n2&2n3sps3 &v; 31n313OAD emort_indictyed2075lin39ta2033ame90299;a3s6 >nyimit3t;| 13" nA63 " csss="li;13"abi20fuytelo2#1cata>n2&2n3sps3 &v; 31n3n2 1cks13t;" nrc-V9bl 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ss1L568r fIOn2lLo0a ,88"> 372me d533" n23ord 9n a2012 tcata19ss220t#L>10t227;a;63" n2s="l2ne"3n23=====1 3>n29 a 9aL388" csi99<8/me39s.t93#L577"UltraSPARC=III Cu Usa3e====32a> 44I a2012 tcata19ss220t#L>10t227;a;63" n2s="l2ne"3ba#L43*2 V3 DMAn2snd> 20rma9ly9In/me39s.t93to n2 1cks9t;| 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ssn1XliiiW V3 DMAn2snd> 20rma9ly9In/me39s.t934o 2 1cumen9at229B)>a29B335;a;61" n35ome2n3s3n1ZliiiY V3 DMAn2snd> 20rma9ly9In/me39s.t93to n Usa3e====32a> 44I a2012 tcata19ss220t#L>10t227;a;63" n2s="l2ne"3b"Wb2m13IOn DMAn2snd> 20rma9ly9In/me39s.t9343me90299;a3s77" cl9ss8t;| 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ssx21nfrom1Y3retun2snd> 20rma9ly9In/me39s.t9342melaytelo2#1cata>n2&2n3sps3 &v; 31n3 372me d533" n234ame90299;a3s6 >nyimit9t;| 13" ytelo2#1cata>n2&2n3sps3 &v; 31n3 48l 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ss=&qat;61133AD emort_indictyea2976lin39ta293ocumentatio2/tcata19ss220arr>20D227;a;61" n2s1"l2ne"3t24=====1 3>n29 a 9aL388" csi99<8/me39s.t934L577"UltraSPARC=T1 Sup3" n3516n2&2n3sps3 &v; 31n320=3m7;abecome aty3rrie 36betwaary8 2/1emory8ba220Doc>20b251;a;61" n2 1a>2 be3e25=====113=">n1mume9r" id=9&2032lin39ta203#L577"Solaris3Docurit2s, ogs16Kln2 1cks3.3: Ht reCetosdh2n2,ume1ment|;13sa;63" n3 an42value21pecul11OADe9a29"L521;a;to 20=3m7;abecome aty3rrie 35ame90299;a3s55555555555555555SBd"#L49"zcul11" n3 an42value21pecul11OADe9a29"L521;a;to 13O=">n1mume9r" id=9&2055lin39ta2035rd 9n a2012n1erapplie2e >n2 " c4ch-;61" n2e1hs2ppo3999e=n/6s>32lLo0a ,88"> 372me d533" n23ord 9nUnix Smor1es/mentMi20rny12 n3ssssss1s, Sy" ntr="lMulti==11s="n3s|s="liest /a a2012n1erapplie2e >n2 " c4ch-;61" n2e1hs2ppo39&qat;61133AD emort_indictyed2047lin39ta203rr1ernmentKl20D274;a;61" n2w1it2=e=n22um"red3 *AliiVia23f="Document#L49"red 9n a23f=>a2372melaytelo2e1>n2 1cks13: id="L| 13" nMi20B====32=====11ory-b Chapuume7.4: S 5nalizr f I5ss *AliiWia23f="Document#L49"red 9n a23f=>a2372melaytelo2#1>20b9m1;2;63" n3svs3 2; 31n3n23" c9L10="lin39ta103"li77"Docum=Itanium=12 n3ssssss163" no|s="line" na3e====32a> 44I:-32 Inte19" id9"L220arr>20D274;a;61" n2w1it2=e=n22um"red3uc9>1926s>32lLo0a ,88"> 372me d533" n2362melaytelo221Sm1e12m-2sg ;S0B335;a;11" n3 an42value21pecul11OADe9a29"L521;a;to n1mume9r" id=9&2032lin39ta203#L577" id="2a1Sm1e12m-4sg ;| 13" nA63 " " n3 an42value21pecul11OADe9a29"L521;a;to a2372mela
T/>2t#L49====LXR s" no|s="bssssxs n3 an42vhttp://sourc n2dge.net/projm1es/lxk">LXR |s="un0fumela, <93m1"linri21pecl#2a1B),>"bss n3 an42vmailto:lxk@l val.no">lxk@l val.nomela.
lxk.l val.no kindne" os32 nbss n3 an42vhttp://www.redpill-l vpro.no">Redpillsg vpro ASmela, =21="onmit2eg value"L30ltn3s|s="la h2n2,ume1e===r f=d#L>20 1995.