tor-browser

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

os_SunOS_x86.s (2420B)


      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 .text
      8 
      9 .globl	getedi
     10 getedi:
     11 movl	%edi,%eax
     12 ret
     13 .type	getedi,@function
     14 .size	getedi,.-getedi
     15 
     16 .globl	setedi
     17 setedi:
     18 movl	4(%esp),%edi
     19 ret
     20 .type	setedi,@function
     21 .size	setedi,.-setedi
     22 
     23 .globl	__MD_FlushRegisterWindows
     24 .globl _MD_FlushRegisterWindows
     25 
     26 __MD_FlushRegisterWindows:
     27 _MD_FlushRegisterWindows:
     28 
     29 ret
     30 
     31 //
     32 // sol_getsp()
     33 //
     34 // Return the current sp (for debugging)
     35 //
     36 .globl sol_getsp
     37 sol_getsp:
     38 movl	%esp, %eax
     39 ret
     40 
     41 //
     42 // sol_curthread()
     43 //
     44 // Return a unique identifier for the currently active thread.
     45 //
     46 .globl sol_curthread
     47 sol_curthread:
     48 movl	%ecx, %eax
     49 ret
     50 
     51 // PRInt32 _MD_AtomicIncrement(PRInt32 *val)
     52 //
     53 // Atomically increment the integer pointed to by 'val' and return
     54 // the result of the increment.
     55 //
     56    .text
     57    .globl _MD_AtomicIncrement
     58    .align 4
     59 _MD_AtomicIncrement:
     60    movl 4(%esp), %ecx
     61    movl $1, %eax
     62    lock
     63    xaddl %eax, (%ecx)
     64    incl %eax
     65    ret
     66 
     67 // PRInt32 _MD_AtomicDecrement(PRInt32 *val)
     68 //
     69 // Atomically decrement the integer pointed to by 'val' and return
     70 // the result of the decrement.
     71 //
     72    .text
     73    .globl _MD_AtomicDecrement
     74    .align 4
     75 _MD_AtomicDecrement:
     76    movl 4(%esp), %ecx
     77    movl $-1, %eax
     78    lock
     79    xaddl %eax, (%ecx)
     80    decl %eax
     81    ret
     82 
     83 // PRInt32 _MD_AtomicSet(PRInt32 *val, PRInt32 newval)
     84 //
     85 // Atomically set the integer pointed to by 'val' to the new
     86 // value 'newval' and return the old value.
     87 //
     88 // An alternative implementation:
     89 //   .text
     90 //   .globl _MD_AtomicSet
     91 //   .align 4
     92 //_MD_AtomicSet:
     93 //   movl 4(%esp), %ecx
     94 //   movl 8(%esp), %edx
     95 //   movl (%ecx), %eax
     96 //retry:
     97 //   lock
     98 //   cmpxchgl %edx, (%ecx)
     99 //   jne retry
    100 //   ret
    101 //
    102    .text
    103    .globl _MD_AtomicSet
    104    .align 4
    105 _MD_AtomicSet:
    106    movl 4(%esp), %ecx
    107    movl 8(%esp), %eax
    108    xchgl %eax, (%ecx)
    109    ret
    110 
    111 // PRInt32 _MD_AtomicAdd(PRInt32 *ptr, PRInt32 val)
    112 //
    113 // Atomically add 'val' to the integer pointed to by 'ptr'
    114 // and return the result of the addition.
    115 //
    116    .text
    117    .globl _MD_AtomicAdd
    118    .align 4
    119 _MD_AtomicAdd:
    120    movl 4(%esp), %ecx
    121    movl 8(%esp), %eax
    122    movl %eax, %edx
    123    lock
    124    xaddl %eax, (%ecx)
    125    addl %edx, %eax
    126    ret