Changeset 73838ed in mainline


Ignore:
Timestamp:
2005-09-01T19:21:37Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7df54df
Parents:
437e35a0
Message:

Cleanups so that it compiles on ia-32 & amd-64 cleanly

Files:
5 edited

Legend:

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

    r437e35a0 r73838ed  
    3030#define __amd64_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 !!!
    35  */
    3632
    37 static inline atomic_inc(volatile int *val) {
    38         *val++;
     33/* Count_t is 32-bits on AMD-64 */
     34static inline void atomic_inc(volatile count_t *val) {
     35#ifdef __SMP__
     36        __asm__ volatile ("lock incl (%0)\n" : : "r" (val));
     37#else
     38        __asm__ volatile ("incl (%0)\n" : : "r" (val));
     39#endif /* __SMP__ */
    3940}
    4041
    41 static inline atomic_dec(volatile int *val) {
    42         *val--;
     42static inline void atomic_dec(volatile count_t *val) {
     43#ifdef __SMP__
     44        __asm__ volatile ("lock decl (%0)\n" : : "r" (val));
     45#else
     46        __asm__ volatile ("decl (%0)\n" : : "r" (val));
     47#endif /* __SMP__ */
    4348}
    4449
  • arch/amd64/src/fmath.c

    r437e35a0 r73838ed  
    123123        fmath_ld_union.ldd[7]=((fmath_ld_union.ldd[7])&0x7f)|(sign<<7); // change 64th bit (IA32 is a little endian)
    124124        return fmath_ld_union.bf;
    125 */      return 1.0
     125*/      return 1.0;
    126126}
    127127
  • arch/ia32/include/atomic.h

    r437e35a0 r73838ed  
    3232#include <arch/types.h>
    3333
    34 static inline void atomic_inc(volatile int *val) {
     34static inline void atomic_inc(volatile count_t *val) {
    3535#ifdef __SMP__
    3636        __asm__ volatile ("lock incl (%0)\n" : : "r" (val));
     
    4040}
    4141
    42 static inline void atomic_dec(volatile int *val) {
     42static inline void atomic_dec(volatile count_t *val) {
    4343#ifdef __SMP__
    4444        __asm__ volatile ("lock decl (%0)\n" : : "r" (val));
  • src/proc/scheduler.c

    r437e35a0 r73838ed  
    150150                spinlock_unlock(&CPU->lock);
    151151
    152                 atomic_dec((int *) &nrdy);
     152                atomic_dec(&nrdy);
    153153                r->n--;
    154154
  • src/proc/thread.c

    r437e35a0 r73838ed  
    137137        spinlock_unlock(&r->lock);
    138138
    139         atomic_inc((int *) &nrdy);
     139        atomic_inc(&nrdy);
    140140        avg = nrdy / config.cpu_active;
    141141
Note: See TracChangeset for help on using the changeset viewer.