Changeset 59e07c91 in mainline for arch


Ignore:
Timestamp:
2005-11-10T13:56:26Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0172eba
Parents:
13fe013
Message:

Define atomic_t type.

Location:
arch
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/include/atomic.h

    r13fe013 r59e07c91  
    3232#include <arch/types.h>
    3333
    34 static inline void atomic_inc(volatile int *val) {
     34typedef volatile __u32 atomic_t;
     35
     36static inline void atomic_inc(atomic_t *val) {
    3537#ifdef CONFIG_SMP
    3638        __asm__ volatile ("lock incl %0\n" : "=m" (*val));
     
    4042}
    4143
    42 static inline void atomic_dec(volatile int *val) {
     44static inline void atomic_dec(atomic_t *val) {
    4345#ifdef CONFIG_SMP
    4446        __asm__ volatile ("lock decl %0\n" : "=m" (*val));
  • arch/ia64/include/atomic.h

    r13fe013 r59e07c91  
    3030#define __ia64_ATOMIC_H__
    3131
    32 /*
    33  * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec.
    34  * WARNING: the following functions cause the code to be preemption-unsafe !!!
     32#include <arch/types.h>
     33
     34typedef volatile __u64 atomic_t;
     35
     36static inline atomic_t atomic_add(atomic_t *val, int imm)
     37{
     38        atomic_t v;
     39
     40/*     
     41 *      __asm__ volatile ("fetchadd8.rel %0 = %1, %2\n" : "=r" (v), "=m" (val) : "i" (imm));
    3542 */
    36 
    37 static inline atomic_inc(volatile int *val) {
    38         *val++;
     43        *val += imm;
     44       
     45        return v;
    3946}
    4047
    41 static inline atomic_dec(volatile int *val) {
    42         *val--;
    43 }
     48static inline atomic_t atomic_inc(atomic_t *val) { return atomic_add(val, 1); }
     49static inline atomic_t atomic_dec(atomic_t *val) { return atomic_add(val, -1); }
    4450
    4551#endif
  • arch/mips32/include/atomic.h

    r13fe013 r59e07c91  
    3030#define __mips32_ATOMIC_H__
    3131
     32#include <arch/types.h>
     33
    3234#define atomic_inc(x)   (a_add(x,1))
    3335#define atomic_dec(x)   (a_sub(x,1))
     36
     37typedef volatile __u32 atomic_t;
    3438
    3539/*
     
    4246 * the same location, the SC (store-conditional) instruction fails.
    4347 */
    44 static inline int a_add( volatile int *val, int i)
     48static inline atomic_t a_add(atomic_t *val, int i)
    4549{
    46         int tmp, tmp2;
     50        atomic_t tmp, tmp2;
    4751
    4852        asm volatile (
     
    7074 * Implemented in the same manner as a_add, except we substract the value.
    7175 */
    72 static inline int a_sub( volatile int *val, int i)
     76static inline atomic_t a_sub(atomic_t *val, int i)
    7377
    7478{
    75         int tmp, tmp2;
     79        atomic_t tmp, tmp2;
    7680
    7781        asm volatile (
  • arch/ppc32/include/atomic.h

    r13fe013 r59e07c91  
    3030#define __ppc32_ATOMIC_H__
    3131
     32#include <arch/types.h>
     33
     34typedef volatile __u32 atomic_t;
     35
    3236/*
    3337 * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec.
     
    3539 */
    3640
    37 static inline atomic_inc(volatile int *val) {
     41static inline void atomic_inc(atomic_t *val) {
    3842        *val++;
    3943}
    4044
    41 static inline atomic_dec(volatile int *val) {
     45static inline void atomic_dec(atomic_t *val) {
    4246        *val--;
    4347}
  • arch/sparc64/include/atomic.h

    r13fe013 r59e07c91  
    3030#define __sparc64_ATOMIC_H__
    3131
     32#include <arch/types.h>
     33
     34typedef volatile __u64 atomic_t;
     35
    3236/*
    3337 * TODO: these are just placeholders for real implementations of atomic_inc and atomic_dec.
     
    3539 */
    3640
    37 static inline atomic_inc(volatile int *val) {
     41static inline void atomic_inc(atomic_t *val) {
    3842        *val++;
    3943}
    4044
    41 static inline atomic_dec(volatile int *val) {
     45static inline void atomic_dec(atomic_t *val) {
    4246        *val--;
    4347}
Note: See TracChangeset for help on using the changeset viewer.