tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

os_Linux_ppc.s (2022B)


      1 # -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
      2 #
      3 # This Source Code Form is subject to the terms of the Mozilla Public
      4 # License, v. 2.0. If a copy of the MPL was not distributed with this
      5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      6 
      7 #
      8 # Based on the programming examples in The PowerPC Architecture:
      9 # A Specification for A New Family of RISC Processors, 2nd Ed.,
     10 # Book I, Section E.1, "Synchronization," pp. 249-256, May 1994.
     11 #
     12 
     13        .section ".text"
     14 
     15 #
     16 # PRInt32 _PR_ppc_AtomicIncrement(PRInt32 *val);
     17 #
     18        .align  2
     19        .globl  _PR_ppc_AtomicIncrement
     20        .type _PR_ppc_AtomicIncrement,@function
     21 _PR_ppc_AtomicIncrement:
     22 .Lfd1:  lwarx   4,0,3
     23        addi    0,4,1
     24        stwcx.  0,0,3
     25        bne-    .Lfd1
     26        mr      3,0
     27        blr
     28 .Lfe1:  .size _PR_ppc_AtomicIncrement,.Lfe1-_PR_ppc_AtomicIncrement
     29 
     30 #
     31 # PRInt32 _PR_ppc_AtomicDecrement(PRInt32 *val);
     32 #
     33        .align  2
     34        .globl  _PR_ppc_AtomicDecrement
     35        .type _PR_ppc_AtomicDecrement,@function
     36 _PR_ppc_AtomicDecrement:
     37 .Lfd2:  lwarx   4,0,3
     38        addi    0,4,-1
     39        stwcx.  0,0,3
     40        bne-    .Lfd2
     41        mr      3,0
     42        blr
     43 .Lfe2:  .size _PR_ppc_AtomicDecrement,.Lfe2-_PR_ppc_AtomicDecrement
     44 
     45 #
     46 # PRInt32 _PR_ppc_AtomicSet(PRInt32 *val, PRInt32 newval);
     47 #
     48        .align  2
     49        .globl  _PR_ppc_AtomicSet
     50        .type _PR_ppc_AtomicSet,@function
     51 _PR_ppc_AtomicSet:
     52 .Lfd3:  lwarx   5,0,3
     53        stwcx.  4,0,3
     54        bne-    .Lfd3
     55        mr      3,5
     56        blr
     57 .Lfe3:  .size _PR_ppc_AtomicSet,.Lfe3-_PR_ppc_AtomicSet
     58 
     59 #
     60 # PRInt32 _PR_ppc_AtomicAdd(PRInt32 *ptr, PRInt32 val);
     61 #
     62        .align  2
     63        .globl  _PR_ppc_AtomicAdd
     64        .type _PR_ppc_AtomicAdd,@function
     65 _PR_ppc_AtomicAdd:
     66 .Lfd4:  lwarx   5,0,3
     67        add     0,4,5
     68        stwcx.  0,0,3
     69        bne-    .Lfd4
     70        mr      3,0
     71        blr
     72 .Lfe4:  .size _PR_ppc_AtomicAdd,.Lfe4-_PR_ppc_AtomicAdd
     73 
     74 # Magic indicating no need for an executable stack
     75 .section .note.GNU-stack, "", @progbits