build/stlport/src/sparc_atomic64.s

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1         .section        ".text",#alloc,#execinstr
     2         .align 8
     3         .skip 16
     5 !  int _STLP_atomic_exchange (void *pvalue, int value)
     6 !
     8         .type   _STLP_atomic_exchange,#function
     9         .global _STLP_atomic_exchange
    10         .align  8
    12 _STLP_atomic_exchange:
    13 1:
    14   ldx      [%o0], %o2              ! Set the current value
    15         mov      %o1, %o3                ! Set the new value
    16         casx     [%o0], %o2, %o3         ! Do the compare and swap
    17         cmp      %o2, %o3                ! Check whether successful
    18         bne      1b                  ! Retry upon failure
    19         membar  #LoadLoad | #LoadStore  ! Ensure the cas finishes before
    20                                         ! returning
    21         retl                            ! return
    22         mov     %o2, %o0                                ! Set the new value
    23         .size   _STLP_atomic_exchange,(.-_STLP_atomic_exchange)
    26 ! int _STLP_atomic_increment (void *pvalue)
    28         .type   _STLP_atomic_increment,#function
    29         .global _STLP_atomic_increment
    30         .align  8
    31 _STLP_atomic_increment:
    32 0:
    33         ldx      [%o0], %o2              ! set the current
    34         addx     %o2, 0x1, %o3                   ! Increment and store current
    35         casx     [%o0], %o2, %o3         ! Do the compare and swap
    36         cmp     %o3, %o2                ! Check whether successful
    37         bne     0b
    38         membar  #LoadLoad | #LoadStore  ! Ensure the cas finishes before
    39                                         ! returning
    40         retl                            ! return
    41         mov    %o1, %o0                                 ! Set the return value
    43         .size   _STLP_atomic_increment,(.-_STLP_atomic_increment)
    46 !        /* int _STLP_atomic_decrement (void *pvalue) */
    47         .type   _STLP_atomic_decrement,#function
    48         .global _STLP_atomic_decrement
    49         .align  8
    51 _STLP_atomic_decrement:
    52 0:
    53         ldx      [%o0], %o2              ! set the current
    54         subx             %o2, 0x1, %o3                   ! decrement and store current
    55         casx     [%o0], %o2, %o3         ! Do the compare and swap
    56         cmp     %o3, %o2                ! Check whether successful
    57         bne     0b
    58         membar  #LoadLoad | #LoadStore  ! Ensure the cas finishes before
    59                                         ! returning
    60         retl                            ! return
    61   nop
    62         .size   _STLP_atomic_decrement,(.-_STLP_atomic_decrement)

mercurial