Ignore:
Timestamp:
Apr 27, 2004, 8:39:34 PM (21 years ago)
Author:
bird
Message:

GCC v3.3.3 sources.

Location:
branches/GNU/src/gcc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/gcc

    • Property svn:ignore
      •  

        old new  
        2626configure.vr
        2727configure.vrs
         28dir.info
        2829Makefile
        29 dir.info
        3030lost+found
        3131update.out
  • branches/GNU/src/gcc/libjava/sysdep/powerpc/locks.h

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r1390 r1391  
    1212#define __SYSDEP_LOCKS_H__
    1313
     14#ifdef __powerpc64__
     15#define _LARX "ldarx "
     16#define _STCX "stdcx. "
     17#else
     18#define _LARX "lwarx "
     19#ifdef __PPC405__
     20#define _STCX "sync; stwcx. "
     21#else
     22#define _STCX "stwcx. "
     23#endif
     24#endif
     25
    1426typedef size_t obj_addr_t;      /* Integer type big enough for object   */
    1527                                /* address.                             */
    1628
    1729inline static bool
    18 compare_and_swap(volatile obj_addr_t *addr,
    19                                               obj_addr_t old,
    20                                               obj_addr_t new_val)
     30compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
     31                  obj_addr_t new_val)
    2132{
    2233  int ret;
    2334
    2435  __asm__ __volatile__ (
    25            "0:    lwarx %0,0,%1 ;"
     36           "0:    " _LARX "%0,0,%1 ;"
    2637           "      xor. %0,%3,%0;"
    2738           "      bne 1f;"
    28            "      stwcx. %2,0,%1;"
     39           "      " _STCX "%2,0,%1;"
    2940           "      bne- 0b;"
    3041           "1:    "
    31         : "=&r"(ret)
    32         : "r"(addr), "r"(new_val), "r"(old)
     42        : "=&r" (ret)
     43        : "r" (addr), "r" (new_val), "r" (old)
    3344        : "cr0", "memory");
     45
    3446  /* This version of __compare_and_swap is to be used when acquiring
    3547     a lock, so we don't need to worry about whether other memory
     
    4153
    4254inline static void
    43 release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
     55release_set (volatile obj_addr_t *addr, obj_addr_t new_val)
    4456{
    4557  __asm__ __volatile__ ("sync" : : : "memory");
    46   *(addr) = new_val;
     58  *addr = new_val;
    4759}
    4860
    4961inline static bool
    50 compare_and_swap_release(volatile obj_addr_t *addr,
    51                                                      obj_addr_t old,
    52                                                      obj_addr_t new_val)
     62compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
     63                          obj_addr_t new_val)
    5364{
    5465  int ret;
    5566
    5667  __asm__ __volatile__ ("sync" : : : "memory");
     68
    5769  __asm__ __volatile__ (
    58            "0:    lwarx %0,0,%1 ;"
     70           "0:    " _LARX "%0,0,%1 ;"
    5971           "      xor. %0,%3,%0;"
    6072           "      bne 1f;"
    61            "      stwcx. %2,0,%1;"
     73           "      " _STCX "%2,0,%1;"
    6274           "      bne- 0b;"
    6375           "1:    "
    64         : "=&r"(ret)
    65         : "r"(addr), "r"(new_val), "r"(old)
     76        : "=&r" (ret)
     77        : "r" (addr), "r" (new_val), "r" (old)
    6678        : "cr0", "memory");
     79
    6780  return ret == 0;
    6881}
     
    7184// data that was loaded from memory before the barrier.
    7285inline static void
    73 read_barrier()
     86read_barrier ()
    7487{
    7588  __asm__ __volatile__ ("isync" : : : "memory");
     
    7992// processors.
    8093inline static void
    81 write_barrier()
     94write_barrier ()
    8295{
    8396  __asm__ __volatile__ ("sync" : : : "memory");
Note: See TracChangeset for help on using the changeset viewer.