Changes in / [c2efbb4:f516bc2] in mainline


Ignore:
Files:
1 added
199 deleted
118 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    rc2efbb4 rf516bc2  
    258258
    259259% Compiler
    260 @ "gcc_cross" GNU C Compiler (cross-compiler)
    261260@ "gcc_native" GNU C Compiler (native)
    262261@ "clang" Clang
     
    264263
    265264
    266 ## Cross-compiler target for abstract architecture
    267 
    268 % Cross-compiler target
    269 @ "arm32" ARM 32-bit
    270 @ "ia32" Intel IA-32
    271 @ "mips32" MIPS 32-bit
    272 ! [PLATFORM=abs32le&COMPILER=gcc_cross] CROSS_TARGET (choice)
    273 
    274 
    275265## Kernel configuration
    276266
     
    294284
    295285% Software integer division support
    296 ! [PLATFORM=abs32le|PLATFORM=ia32|PLATFORM=arm32|PLATFORM=ia64|PLATFORM=mips32|PLATFORM=ppc32] CONFIG_SOFTINT (y)
     286! [PLATFORM=ia32|PLATFORM=arm32|PLATFORM=ia64|PLATFORM=mips32|PLATFORM=ppc32] CONFIG_SOFTINT (y)
    297287
    298288% ASID support
     
    518508% Write core files
    519509! CONFIG_WRITE_CORE_FILES (n/y)
    520 
    521 % Networking architecture
    522 @ "none" No networking
    523 @ "modular" Modular
    524 @ "module" One module
    525 ! NETWORKING (choice)
    526 
    527 % DP8390 (NE2k) network interface
    528 ! [NETWORKING=modular|NETWORKING=module] CONFIG_NETIF_DP8390 (y/n)
    529 
  • boot/Makefile.common

    rc2efbb4 rf516bc2  
    8585        COMPONENTS += $(USPACEDIR)/srv/fs/fat/fat
    8686endif
    87 
    88 CFG =
    89 
    90 NET_SRVS = \
    91         $(USPACEDIR)/srv/net/net/net \
    92         $(USPACEDIR)/srv/net/netif/lo/lo \
    93         $(USPACEDIR)/srv/net/netif/dp8390/dp8390 \
    94         $(USPACEDIR)/srv/net/nil/eth/eth \
    95         $(USPACEDIR)/srv/net/nil/nildummy/nildummy \
    96         $(USPACEDIR)/srv/net/app/echo/echo
    97 
    98 NET_APPS = \
    99         $(USPACEDIR)/srv/net/net/start/netstart \
    100         $(USPACEDIR)/srv/net/app/ping/ping \
    101         $(USPACEDIR)/srv/net/app/nettest1/nettest1 \
    102         $(USPACEDIR)/srv/net/app/nettest2/nettest2
    103 
    104 ifneq ($(NETWORKING), none)
    105 NET_CFG = \
    106         $(USPACEDIR)/srv/net/cfg/$(NETWORKING)/general \
    107         $(USPACEDIR)/srv/net/cfg/$(NETWORKING)/lo \
    108         $(USPACEDIR)/srv/net/cfg/$(NETWORKING)/ne2k
    109 endif
    110 
    111 ifeq ($(NETWORKING), module)
    112         RD_APPS +=      $(NET_APPS)
    113 
    114         RD_SRVS +=      $(NET_SRVS)
    115 
    116         CFG             +=      $(NET_CFG)
    117 else
    118 ifeq ($(NETWORKING), modular)
    119         RD_APPS +=      $(NET_APPS)
    120 
    121         RD_SRVS +=      $(NET_SRVS)
    122 
    123         RD_SRVS +=      $(USPACEDIR)/srv/net/il/ip/ip \
    124                         $(USPACEDIR)/srv/net/il/arp/arp \
    125                         $(USPACEDIR)/srv/net/tl/udp/udp \
    126                         $(USPACEDIR)/srv/net/tl/tcp/tcp \
    127                         $(USPACEDIR)/srv/net/tl/icmp/icmp
    128 
    129         CFG             +=      $(NET_CFG)
    130 endif
    131 endif
    132 
  • boot/arch/amd64/Makefile.inc

    • Property mode changed from 100755 to 100644
    rc2efbb4 rf516bc2  
    3939build: $(BASE)/image.iso
    4040
    41 $(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS) $(CFG)
     41$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
    4242        mkdir -p $(TMP)/boot/grub
    4343        cp arch/$(BARCH)/grub/stage2_eltorito $(TMP)/boot/grub/
     
    5656        done
    5757       
    58         rm -f $(USPACEDIR)/dist/srv/*
    59         rm -f $(USPACEDIR)/dist/app/*
    60         rm -f $(USPACEDIR)/dist/cfg/net/*
    61        
    6258        cp $(KERNELDIR)/kernel.bin $(TMP)/boot/
    6359        for task in $(INIT_TASKS) ; do \
     
    6965        for file in $(RD_APPS) ; do \
    7066                cp $$file $(USPACEDIR)/dist/app/ ; \
    71         done
    72         for file in $(NET_CFG) ; do \
    73                 cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    7467        done
    7568       
     
    8578
    8679clean:
    87         rm -f $(USPACEDIR)/dist/srv/*
    88         rm -f $(USPACEDIR)/dist/app/*
    89         rm -f $(USPACEDIR)/dist/cfg/net/*
    90 
    9180        for file in $(RD_SRVS) ; do \
    9281                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    9584                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    9685        done
    97         for file in $(NET_CFG) ; do \
    98                 rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    99         done
    10086        rm -fr $(TMP)
    10187        rm -f $(BASE)/image.iso
  • boot/arch/arm32/loader/Makefile

    rc2efbb4 rf516bc2  
    3737
    3838clean:
    39         rm -f $(USPACEDIR)/dist/srv/*
    40         rm -f $(USPACEDIR)/dist/app/*
    41         rm -f $(USPACEDIR)/dist/cfg/net/*
    42 
    4339        for file in $(RD_SRVS) ; do \
    4440                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    4743                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    4844        done
    49         for file in $(NET_CFG) ; do \
    50                 rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    51         done
    5245        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
    5346        find . -name '*.o' -follow -exec rm \{\} \;
  • boot/arch/arm32/loader/Makefile.build

    rc2efbb4 rf516bc2  
    7676
    7777$(DEPEND):
    78         rm -f $(USPACEDIR)/dist/srv/*
    79         rm -f $(USPACEDIR)/dist/app/*
    80         rm -f $(USPACEDIR)/dist/cfg/net/*
    81 
    8278        for file in $(RD_SRVS) ; do \
    8379                cp $$file $(USPACEDIR)/dist/srv/ ; \
     
    8581        for file in $(RD_APPS) ; do \
    8682                cp $$file $(USPACEDIR)/dist/app/ ; \
    87         done
    88         for file in $(NET_CFG) ; do \
    89                 cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    9083        done
    9184ifeq ($(RDFMT),tmpfs)
  • boot/arch/ia64/loader/Makefile

    rc2efbb4 rf516bc2  
    4040        $(MAKE) -C gefi clean
    4141        $(MAKE) -C gefi/HelenOS clean
    42 
    43         rm -f $(USPACEDIR)/dist/srv/*
    44         rm -f $(USPACEDIR)/dist/app/*
    45         rm -f $(USPACEDIR)/dist/cfg/net/*
    46 
    4742        for file in $(RD_SRVS) ; do \
    4843                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    5146                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    5247        done
    53         for file in $(NET_CFG) ; do \
    54                 rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    55         done
    5648        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(HELLO) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
    5749        find . -name '*.o' -follow -exec rm \{\} \;
  • boot/arch/ia64/loader/Makefile.build

    rc2efbb4 rf516bc2  
    7777
    7878$(DEPEND):
    79         rm -f $(USPACEDIR)/dist/srv/*
    80         rm -f $(USPACEDIR)/dist/app/*
    81         rm -f $(USPACEDIR)/dist/cfg/net/*
    82 
    8379        for file in $(RD_SRVS) ; do \
    8480                cp $$file $(USPACEDIR)/dist/srv/ ; \
     
    8682        for file in $(RD_APPS) ; do \
    8783                cp $$file $(USPACEDIR)/dist/app/ ; \
    88         done
    89         for file in $(NET_CFG) ; do \
    90                 cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    9184        done
    9285ifeq ($(RDFMT),tmpfs)
  • boot/arch/mips32/loader/Makefile

    rc2efbb4 rf516bc2  
    3737
    3838clean:
    39         rm -f $(USPACEDIR)/dist/srv/*
    40         rm -f $(USPACEDIR)/dist/app/*
    41         rm -f $(USPACEDIR)/dist/cfg/net/*
    42 
    4339        for file in $(RD_SRVS) ; do \
    4440                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    4743                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    4844        done
    49         for file in $(NET_CFG) ; do \
    50                 rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    51         done
    5245        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(RAW) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
    5346        find . -name '*.o' -follow -exec rm \{\} \;
  • boot/arch/mips32/loader/Makefile.build

    rc2efbb4 rf516bc2  
    7777
    7878$(DEPEND):
    79         rm -f $(USPACEDIR)/dist/srv/*
    80         rm -f $(USPACEDIR)/dist/app/*
    81         rm -f $(USPACEDIR)/dist/cfg/net/*
    82 
    8379        for file in $(RD_SRVS) ; do \
    8480                cp $$file $(USPACEDIR)/dist/srv/ ; \
     
    8682        for file in $(RD_APPS) ; do \
    8783                cp $$file $(USPACEDIR)/dist/app/ ; \
    88         done
    89         for file in $(NET_CFG) ; do \
    90                 cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    9184        done
    9285ifeq ($(RDFMT),tmpfs)
  • boot/arch/ppc32/loader/Makefile

    rc2efbb4 rf516bc2  
    3737
    3838clean:
    39         rm -f $(USPACEDIR)/dist/srv/*
    40         rm -f $(USPACEDIR)/dist/app/*
    41         rm -f $(USPACEDIR)/dist/cfg/net/*
    42 
    4339        for file in $(RD_SRVS) ; do \
    4440                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    4743                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    4844        done
    49         for file in $(NET_CFG) ; do \
    50                 rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    51         done
    5245        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
    5346        find . -name '*.o' -follow -exec rm \{\} \;
  • boot/arch/ppc32/loader/Makefile.build

    rc2efbb4 rf516bc2  
    7777
    7878$(DEPEND):
    79         rm -f $(USPACEDIR)/dist/srv/*
    80         rm -f $(USPACEDIR)/dist/app/*
    81         rm -f $(USPACEDIR)/dist/cfg/net/*
    82 
    8379        for file in $(RD_SRVS) ; do \
    8480                cp $$file $(USPACEDIR)/dist/srv/ ; \
     
    8682        for file in $(RD_APPS) ; do \
    8783                cp $$file $(USPACEDIR)/dist/app/ ; \
    88         done
    89         for file in $(NET_CFG) ; do \
    90                 cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    9184        done
    9285ifeq ($(RDFMT),tmpfs)
  • boot/arch/sparc64/loader/Makefile

    rc2efbb4 rf516bc2  
    3737
    3838clean:
    39         rm -f $(USPACEDIR)/dist/srv/*
    40         rm -f $(USPACEDIR)/dist/app/*
    41         rm -f $(USPACEDIR)/dist/cfg/net/*
    42 
    4339        for file in $(RD_SRVS) $(RD_SRVS_GENERIC) ; do \
    4440                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    4743                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    4844        done
    49         for file in $(NET_CFG) ; do \
    50                 rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
    51         done
    5245        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
    5346        find . -name '*.o' -follow -exec rm \{\} \;
  • boot/arch/sparc64/loader/Makefile.build

    rc2efbb4 rf516bc2  
    8888
    8989$(DEPEND):
    90         rm -f $(USPACEDIR)/dist/srv/*
    91         rm -f $(USPACEDIR)/dist/app/*
    92         rm -f $(USPACEDIR)/dist/cfg/net/*
    93 
    9490        for file in $(RD_SRVS) ; do \
    9591                cp $$file $(USPACEDIR)/dist/srv/ ; \
     
    9793        for file in $(RD_APPS) ; do \
    9894                cp $$file $(USPACEDIR)/dist/app/ ; \
    99         done
    100         for file in $(NET_CFG) ; do \
    101                 cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    10295        done
    10396ifeq ($(RDFMT),tmpfs)
  • defaults/amd64/Makefile.config

    rc2efbb4 rf516bc2  
    6161# Mount /data on startup
    6262CONFIG_MOUNT_DATA = n
    63 
    64 # Default networking architecture
    65 NETWORKING = modular
  • defaults/arm32/Makefile.config

    rc2efbb4 rf516bc2  
    3737# Mount /data on startup
    3838CONFIG_MOUNT_DATA = n
    39 
    40 # Default networking architecture
    41 NETWORKING = none
  • defaults/ia32/Makefile.config

    rc2efbb4 rf516bc2  
    6767# Mount /data on startup
    6868CONFIG_MOUNT_DATA = n
    69 
    70 # Default networking architecture
    71 NETWORKING = modular
  • defaults/ia64/Makefile.config

    rc2efbb4 rf516bc2  
    4949# Mount /data on startup
    5050CONFIG_MOUNT_DATA = n
    51 
    52 # Default networking architecture
    53 NETWORKING = modular
  • defaults/mips32/Makefile.config

    rc2efbb4 rf516bc2  
    4343# Mount /data on startup
    4444CONFIG_MOUNT_DATA = n
    45 
    46 # Default networking architecture
    47 NETWORKING = none
  • defaults/ppc32/Makefile.config

    rc2efbb4 rf516bc2  
    4343# Mount /data on startup
    4444CONFIG_MOUNT_DATA = n
    45 
    46 # Default networking architecture
    47 NETWORKING = none
  • defaults/sparc64/Makefile.config

    rc2efbb4 rf516bc2  
    6161# Mount /data on startup
    6262CONFIG_MOUNT_DATA = n
    63 
    64 # Default networking architecture
    65 NETWORKING = modular
  • defaults/sparc64/sun4v/Makefile.config

    rc2efbb4 rf516bc2  
    1212
    1313CONFIG_FB = n
    14 
    15 NETWORKING = none
    16 
  • defaults/special/Makefile.config

    rc2efbb4 rf516bc2  
    33
    44# Compiler
    5 COMPILER = gcc_cross
     5COMPILER = gcc_native
    66
    77# Support for SMP
  • defaults/special/abs32le/Makefile.config

    rc2efbb4 rf516bc2  
    11# Platform
    22PLATFORM = abs32le
    3 
    4 # Cross-compiler target
    5 CROSS_TARGET = ia32
    6 
    7 # Networking architecture
    8 NETWORKING = none
  • kernel/Makefile.build

    rc2efbb4 rf516bc2  
    115115        OBJCOPY = $(BINUTILS_PREFIX)objcopy
    116116        OBJDUMP = $(BINUTILS_PREFIX)objdump
     117        LIBDIR = /usr/lib
    117118        CFLAGS = $(GCC_CFLAGS)
    118119        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
     
    126127        OBJCOPY = $(TOOLCHAIN_DIR)/bin/$(TARGET)-objcopy
    127128        OBJDUMP = $(TOOLCHAIN_DIR)/bin/$(TARGET)-objdump
     129        LIBDIR = $(TOOLCHAIN_DIR)/lib
    128130        CFLAGS = $(GCC_CFLAGS)
    129131        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
     
    137139        OBJCOPY = objcopy
    138140        OBJDUMP = objdump
     141        LIBDIR = /usr/lib
    139142        CFLAGS = $(ICC_CFLAGS)
    140143        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
     
    148151        OBJCOPY = $(BINUTILS_PREFIX)objcopy
    149152        OBJDUMP = $(BINUTILS_PREFIX)objdump
     153        LIBDIR = /usr/lib
    150154        CFLAGS = $(SUNCC_CFLAGS)
    151155        DEFS += $(CONFIG_DEFS)
     
    160164        OBJCOPY = $(BINUTILS_PREFIX)objcopy
    161165        OBJDUMP = $(BINUTILS_PREFIX)objdump
     166        LIBDIR = /usr/lib
    162167        CFLAGS = $(CLANG_CFLAGS)
    163168        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
  • kernel/arch/abs32le/Makefile.inc

    rc2efbb4 rf516bc2  
    3030#
    3131
    32 BFD = binary
    33 
    34 ifeq ($(COMPILER),gcc_cross)
    35         TOOLCHAIN_DIR = $(CROSS_PREFIX)/$(CROSS_TARGET)
    36        
    37         ifeq ($(CROSS_TARGET),arm32)
    38                 TARGET = arm-linux-gnu
    39                 ATSIGN = %
    40         endif
    41        
    42         ifeq ($(CROSS_TARGET),ia32)
    43                 TARGET = i686-pc-linux-gnu
    44         endif
    45        
    46         ifeq ($(CROSS_TARGET),mips32)
    47                 TARGET = mipsel-linux-gnu
    48                 GCC_CFLAGS += -mno-abicalls
    49         endif
    50 endif
    51 
    5232BITS = 32
    5333ENDIANESS = LE
     
    6343        arch/$(KARCH)/src/ddi/ddi.c \
    6444        arch/$(KARCH)/src/smp/smp.c \
    65         arch/$(KARCH)/src/smp/ipi.c \
    6645        arch/$(KARCH)/src/mm/as.c \
    6746        arch/$(KARCH)/src/mm/frame.c \
  • kernel/arch/abs32le/include/asm.h

    rc2efbb4 rf516bc2  
    4040#include <config.h>
    4141
    42 static inline void asm_delay_loop(uint32_t usec)
    43 {
    44 }
     42extern void interrupt_handlers(void);
     43
     44extern void enable_l_apic_in_msr(void);
     45
     46
     47extern void asm_delay_loop(uint32_t);
     48extern void asm_fake_loop(uint32_t);
     49
    4550
    4651static inline __attribute__((noreturn)) void cpu_halt(void)
  • kernel/arch/abs32le/include/atomic.h

    rc2efbb4 rf516bc2  
    5454}
    5555
    56 static inline atomic_count_t atomic_postinc(atomic_t *val)
     56static inline long atomic_postinc(atomic_t *val)
    5757{
    5858        /* On real hardware both the storing of the previous
     
    6060           atomic action. */
    6161       
    62         atomic_count_t prev = val->count;
     62        long prev = val->count;
    6363       
    6464        val->count++;
     
    6666}
    6767
    68 static inline atomic_count_t atomic_postdec(atomic_t *val)
     68static inline long atomic_postdec(atomic_t *val)
    6969{
    7070        /* On real hardware both the storing of the previous
     
    7272           atomic action. */
    7373       
    74         atomic_count_t prev = val->count;
     74        long prev = val->count;
    7575       
    7676        val->count--;
     
    8181#define atomic_predec(val)  (atomic_postdec(val) - 1)
    8282
    83 static inline atomic_count_t test_and_set(atomic_t *val)
    84 {
    85         atomic_count_t prev = val->count;
    86         val->count = 1;
    87         return prev;
     83static inline uint32_t test_and_set(atomic_t *val) {
     84        uint32_t v;
     85       
     86        asm volatile (
     87                "movl $1, %[v]\n"
     88                "xchgl %[v], %[count]\n"
     89                : [v] "=r" (v), [count] "+m" (val->count)
     90        );
     91       
     92        return v;
    8893}
    8994
     95/** ia32 specific fast spinlock */
    9096static inline void atomic_lock_arch(atomic_t *val)
    9197{
    92         do {
    93                 while (val->count);
    94         } while (test_and_set(val));
     98        uint32_t tmp;
     99       
     100        preemption_disable();
     101        asm volatile (
     102                "0:\n"
     103                "pause\n"        /* Pentium 4's HT love this instruction */
     104                "mov %[count], %[tmp]\n"
     105                "testl %[tmp], %[tmp]\n"
     106                "jnz 0b\n"       /* lightweight looping on locked spinlock */
     107               
     108                "incl %[tmp]\n"  /* now use the atomic operation */
     109                "xchgl %[count], %[tmp]\n"
     110                "testl %[tmp], %[tmp]\n"
     111                "jnz 0b\n"
     112                : [count] "+m" (val->count), [tmp] "=&r" (tmp)
     113        );
     114        /*
     115         * Prevent critical section code from bleeding out this way up.
     116         */
     117        CS_ENTER_BARRIER();
    95118}
    96119
  • kernel/arch/abs32le/include/barrier.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup abs32le
     29/** @addtogroup ia32
    3030 * @{
    3131 */
     
    3333 */
    3434
    35 #ifndef KERN_abs32le_BARRIER_H_
    36 #define KERN_abs32le_BARRIER_H_
     35#ifndef KERN_ia32_BARRIER_H_
     36#define KERN_ia32_BARRIER_H_
     37
     38/*
     39 * NOTE:
     40 * No barriers for critical section (i.e. spinlock) on IA-32 are needed:
     41 * - spinlock_lock() and spinlock_trylock() use serializing XCHG instruction
     42 * - writes cannot pass reads on IA-32 => spinlock_unlock() needs no barriers
     43 */
    3744
    3845/*
     
    4047 */
    4148
    42 #define CS_ENTER_BARRIER()
    43 #define CS_LEAVE_BARRIER()
     49#define CS_ENTER_BARRIER()  asm volatile ("" ::: "memory")
     50#define CS_LEAVE_BARRIER()  asm volatile ("" ::: "memory")
    4451
    45 #define memory_barrier()
    46 #define read_barrier()
    47 #define write_barrier()
     52static inline void cpuid_serialization(void)
     53{
     54        asm volatile (
     55                "xorl %%eax, %%eax\n"
     56                "cpuid\n"
     57                ::: "eax", "ebx", "ecx", "edx", "memory"
     58        );
     59}
    4860
    49 #define smc_coherence(addr)
    50 #define smc_coherence_block(addr, size)
     61#if defined(CONFIG_FENCES_P4)
     62        #define memory_barrier()  asm volatile ("mfence\n" ::: "memory")
     63        #define read_barrier()    asm volatile ("lfence\n" ::: "memory")
     64        #ifdef CONFIG_WEAK_MEMORY
     65                #define write_barrier()  asm volatile ("sfence\n" ::: "memory")
     66        #else
     67                #define write_barrier()  asm volatile ("" ::: "memory");
     68        #endif
     69#elif defined(CONFIG_FENCES_P3)
     70        #define memory_barrier()  cpuid_serialization()
     71        #define read_barrier()    cpuid_serialization()
     72        #ifdef CONFIG_WEAK_MEMORY
     73                #define write_barrier()  asm volatile ("sfence\n" ::: "memory")
     74        #else
     75                #define write_barrier()  asm volatile ("" ::: "memory");
     76        #endif
     77#else
     78        #define memory_barrier()  cpuid_serialization()
     79        #define read_barrier()    cpuid_serialization()
     80        #ifdef CONFIG_WEAK_MEMORY
     81                #define write_barrier()  cpuid_serialization()
     82        #else
     83                #define write_barrier()  asm volatile ("" ::: "memory");
     84        #endif
     85#endif
     86
     87/*
     88 * On ia32, the hardware takes care about instruction and data cache coherence,
     89 * even on SMP systems.  We issue a write barrier to be sure that writes
     90 * queueing in the store buffer drain to the memory (even though it would be
     91 * sufficient for them to drain to the D-cache).
     92 */
     93#define smc_coherence(a)           write_barrier()
     94#define smc_coherence_block(a, l)  write_barrier()
    5195
    5296#endif
  • kernel/arch/abs32le/include/context.h

    rc2efbb4 rf516bc2  
    4040
    4141#define context_set(ctx, pc, stack, size) \
    42         context_set_generic(ctx, pc, stack, size)
     42    context_set_generic(ctx, pc, stack, size)
    4343
    4444/*
  • kernel/arch/abs32le/include/context_offset.h

    rc2efbb4 rf516bc2  
    3737
    3838#define OFFSET_PC  0x00
    39 #define OFFSET_IPL 0x04
     39
     40#ifdef KERNEL
     41        #define OFFSET_IPL 0x04
     42#else
     43        #define OFFSET_TLS 0x04
     44#endif
    4045
    4146#endif
  • kernel/arch/abs32le/include/memstr.h

    rc2efbb4 rf516bc2  
    3636#define KERN_abs32le_MEMSTR_H_
    3737
    38 #define memcpy(dst, src, cnt)   _memcpy((dst), (src), (cnt))
    39 #define memsetb(dst, cnt, val)  _memsetb((dst), (cnt), (val))
    40 #define memsetw(dst, cnt, val)  _memsetw((dst), (cnt), (val))
     38#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
     39
     40extern void memsetw(void *, size_t, uint16_t);
     41extern void memsetb(void *, size_t, uint8_t);
     42
     43extern int memcmp(const void *, const void *, size_t);
    4144
    4245#endif
  • kernel/arch/abs32le/include/mm/frame.h

    rc2efbb4 rf516bc2  
    4040
    4141#ifdef KERNEL
     42#ifndef __ASM__
    4243
    4344#include <arch/types.h>
     
    4647extern void physmem_print(void);
    4748
     49#endif /* __ASM__ */
    4850#endif /* KERNEL */
    4951
  • kernel/arch/abs32le/include/mm/page.h

    rc2efbb4 rf516bc2  
    4343#ifdef KERNEL
    4444
    45 #define KA2PA(x)  (((uintptr_t) (x)) - 0x80000000)
    46 #define PA2KA(x)  (((uintptr_t) (x)) + 0x80000000)
     45#ifndef __ASM__
     46        #define KA2PA(x)  (((uintptr_t) (x)) - 0x80000000)
     47        #define PA2KA(x)  (((uintptr_t) (x)) + 0x80000000)
     48#else
     49        #define KA2PA(x)  ((x) - 0x80000000)
     50        #define PA2KA(x)  ((x) + 0x80000000)
     51#endif
    4752
    4853/*
     
    117122#define PTE_EXECUTABLE_ARCH(p)  1
    118123
     124#ifndef __ASM__
     125
    119126#include <mm/mm.h>
    120127#include <arch/interrupt.h>
     
    122129#include <typedefs.h>
    123130
     131/* Page fault error codes. */
     132
     133/** When bit on this position is 0, the page fault was caused by a not-present
     134 * page.
     135 */
     136#define PFERR_CODE_P            (1 << 0)
     137
     138/** When bit on this position is 1, the page fault was caused by a write. */
     139#define PFERR_CODE_RW           (1 << 1)
     140
     141/** When bit on this position is 1, the page fault was caused in user mode. */
     142#define PFERR_CODE_US           (1 << 2)
     143
     144/** When bit on this position is 1, a reserved bit was set in page directory. */
     145#define PFERR_CODE_RSVD         (1 << 3)       
     146
    124147/** Page Table Entry. */
    125148typedef struct {
    126         unsigned int present : 1;
    127         unsigned int writeable : 1;
    128         unsigned int uaccessible : 1;
    129         unsigned int page_write_through : 1;
    130         unsigned int page_cache_disable : 1;
    131         unsigned int accessed : 1;
    132         unsigned int dirty : 1;
    133         unsigned int pat : 1;
    134         unsigned int global : 1;
    135        
    136         /** Valid content even if the present bit is not set. */
    137         unsigned int soft_valid : 1;
    138         unsigned int avl : 2;
    139         unsigned int frame_address : 20;
    140 } __attribute__((packed)) pte_t;
     149        unsigned present : 1;
     150        unsigned writeable : 1;
     151        unsigned uaccessible : 1;
     152        unsigned page_write_through : 1;
     153        unsigned page_cache_disable : 1;
     154        unsigned accessed : 1;
     155        unsigned dirty : 1;
     156        unsigned pat : 1;
     157        unsigned global : 1;
     158        unsigned soft_valid : 1;        /**< Valid content even if the present bit is not set. */
     159        unsigned avl : 2;
     160        unsigned frame_address : 20;
     161} __attribute__ ((packed)) pte_t;
    141162
    142163static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
     
    171192
    172193extern void page_arch_init(void);
    173 extern void page_fault(int, istate_t *);
     194extern void page_fault(int n, istate_t *istate);
     195
     196#endif /* __ASM__ */
    174197
    175198#endif /* KERNEL */
  • kernel/arch/abs32le/include/types.h

    rc2efbb4 rf516bc2  
    5555typedef uint32_t unative_t;
    5656typedef int32_t native_t;
    57 typedef uint32_t atomic_count_t;
    5857
    5958typedef struct {
  • kernel/arch/abs32le/src/abs32le.c

    rc2efbb4 rf516bc2  
    3535#include <arch.h>
    3636#include <arch/types.h>
     37#include <arch/context.h>
    3738#include <arch/interrupt.h>
    3839#include <arch/asm.h>
     
    4041#include <func.h>
    4142#include <config.h>
    42 #include <errno.h>
    4343#include <context.h>
    44 #include <fpu_context.h>
    4544#include <interrupt.h>
    46 #include <syscall/copy.h>
    4745#include <ddi/irq.h>
    4846#include <proc/thread.h>
     
    5149#include <sysinfo/sysinfo.h>
    5250#include <memstr.h>
    53 
    54 char memcpy_from_uspace_failover_address;
    55 char memcpy_to_uspace_failover_address;
    5651
    5752void arch_pre_mm_init(void)
     
    8883unative_t sys_tls_set(unative_t addr)
    8984{
    90         return EOK;
     85        return 0;
    9186}
    9287
     
    114109}
    115110
     111void memsetb(void *dst, size_t cnt, uint8_t val)
     112{
     113        _memsetb(dst, cnt, val);
     114}
     115
     116void memsetw(void *dst, size_t cnt, uint16_t val)
     117{
     118        _memsetw(dst, cnt, val);
     119}
     120
    116121void panic_printf(char *fmt, ...)
    117122{
     
    135140}
    136141
    137 void fpu_init(void)
    138 {
    139 }
    140 
    141 void fpu_context_save(fpu_context_t *ctx)
    142 {
    143 }
    144 
    145 void fpu_context_restore(fpu_context_t *ctx)
    146 {
    147 }
    148 
    149 int memcpy_from_uspace(void *dst, const void *uspace_src, size_t size)
    150 {
    151         return EOK;
    152 }
    153 
    154 int memcpy_to_uspace(void *uspace_dst, const void *src, size_t size)
    155 {
    156         return EOK;
    157 }
    158 
    159142/** @}
    160143 */
  • kernel/arch/abs32le/src/debug/stacktrace.c

    rc2efbb4 rf516bc2  
    4040bool kernel_frame_pointer_validate(uintptr_t fp)
    4141{
    42         return true;
     42        return true;;
    4343}
    4444
  • kernel/arch/amd64/include/atomic.h

    rc2efbb4 rf516bc2  
    4040#include <preemption.h>
    4141
    42 static inline void atomic_inc(atomic_t *val)
    43 {
     42static inline void atomic_inc(atomic_t *val) {
    4443#ifdef CONFIG_SMP
    4544        asm volatile (
     
    5554}
    5655
    57 static inline void atomic_dec(atomic_t *val)
    58 {
     56static inline void atomic_dec(atomic_t *val) {
    5957#ifdef CONFIG_SMP
    6058        asm volatile (
     
    7068}
    7169
    72 static inline atomic_count_t atomic_postinc(atomic_t *val)
     70static inline long atomic_postinc(atomic_t *val)
    7371{
    74         atomic_count_t r = 1;
     72        long r = 1;
    7573       
    7674        asm volatile (
    7775                "lock xaddq %[r], %[count]\n"
    78                 : [count] "+m" (val->count),
    79                   [r] "+r" (r)
     76                : [count] "+m" (val->count), [r] "+r" (r)
    8077        );
    8178       
     
    8380}
    8481
    85 static inline atomic_count_t atomic_postdec(atomic_t *val)
     82static inline long atomic_postdec(atomic_t *val)
    8683{
    87         atomic_count_t r = -1;
     84        long r = -1;
    8885       
    8986        asm volatile (
    9087                "lock xaddq %[r], %[count]\n"
    91                 : [count] "+m" (val->count),
    92                   [r] "+r" (r)
     88                : [count] "+m" (val->count), [r] "+r" (r)
    9389        );
    9490       
     
    9995#define atomic_predec(val)  (atomic_postdec(val) - 1)
    10096
    101 static inline atomic_count_t test_and_set(atomic_t *val)
    102 {
    103         atomic_count_t v;
     97static inline uint64_t test_and_set(atomic_t *val) {
     98        uint64_t v;
    10499       
    105100        asm volatile (
    106101                "movq $1, %[v]\n"
    107102                "xchgq %[v], %[count]\n"
    108                 : [v] "=r" (v),
    109                   [count] "+m" (val->count)
     103                : [v] "=r" (v), [count] "+m" (val->count)
    110104        );
    111105       
     
    113107}
    114108
     109
    115110/** amd64 specific fast spinlock */
    116111static inline void atomic_lock_arch(atomic_t *val)
    117112{
    118         atomic_count_t tmp;
     113        uint64_t tmp;
    119114       
    120115        preemption_disable();
     
    130125                "testq %[tmp], %[tmp]\n"
    131126                "jnz 0b\n"
    132                 : [count] "+m" (val->count),
    133                   [tmp] "=&r" (tmp)
     127                : [count] "+m" (val->count), [tmp] "=&r" (tmp)
    134128        );
    135        
    136129        /*
    137130         * Prevent critical section code from bleeding out this way up.
  • kernel/arch/amd64/include/interrupt.h

    rc2efbb4 rf516bc2  
    5454#define IRQ_PIC_SPUR            7
    5555#define IRQ_MOUSE               12
    56 #define IRQ_DP8390              9
    5756
    5857/* this one must have four least significant bits set to ones */
  • kernel/arch/amd64/include/memstr.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup amd64
     29/** @addtogroup amd64   
    3030 * @{
    3131 */
     
    3838#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    3939
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
     40extern void memsetw(void *dst, size_t cnt, uint16_t x);
     41extern void memsetb(void *dst, size_t cnt, uint8_t x);
     42
     43extern int memcmp(const void *a, const void *b, size_t cnt);
    4244
    4345#endif
  • kernel/arch/amd64/include/types.h

    rc2efbb4 rf516bc2  
    5555typedef uint64_t unative_t;
    5656typedef int64_t native_t;
    57 typedef uint64_t atomic_count_t;
    5857
    5958typedef struct {
  • kernel/arch/amd64/src/amd64.c

    rc2efbb4 rf516bc2  
    228228            (uintptr_t) I8042_BASE);
    229229#endif
    230 
    231 #ifdef CONFIG_NETIF_DP8390
    232         trap_virtual_enable_irqs(1 << IRQ_DP8390);
    233         sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
    234 #endif
    235230}
    236231
  • kernel/arch/amd64/src/debugger.c

    rc2efbb4 rf516bc2  
    201201
    202202        /* Send IPI */
     203#ifdef CONFIG_SMP
    203204//      ipi_broadcast(VECTOR_DEBUG_IPI);
     205#endif 
    204206
    205207        return curidx;
     
    260262        spinlock_unlock(&bkpoint_lock);
    261263        interrupts_restore(ipl);
    262 //      ipi_broadcast(VECTOR_DEBUG_IPI);
     264#ifdef CONFIG_SMP
     265//      ipi_broadcast(VECTOR_DEBUG_IPI);       
     266#endif
    263267}
    264268
  • kernel/arch/arm32/include/atomic.h

    rc2efbb4 rf516bc2  
    4747 *
    4848 */
    49 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     49static inline long atomic_add(atomic_t *val, int i)
    5050{
     51        long ret;
     52
    5153        /*
    5254         * This implementation is for UP pre-ARMv6 systems where we do not have
     
    5557        ipl_t ipl = interrupts_disable();
    5658        val->count += i;
    57         atomic_count_t ret = val->count;
     59        ret = val->count;
    5860        interrupts_restore(ipl);
    5961       
     
    6466 *
    6567 * @param val Variable to be incremented.
    66  *
    6768 */
    6869static inline void atomic_inc(atomic_t *val)
     
    7475 *
    7576 * @param val Variable to be decremented.
    76  *
    7777 */
    7878static inline void atomic_dec(atomic_t *val) {
     
    8484 * @param val Variable to be incremented.
    8585 * @return    Value after incrementation.
    86  *
    8786 */
    88 static inline atomic_count_t atomic_preinc(atomic_t *val)
     87static inline long atomic_preinc(atomic_t *val)
    8988{
    9089        return atomic_add(val, 1);
     
    9594 * @param val Variable to be decremented.
    9695 * @return    Value after decrementation.
    97  *
    9896 */
    99 static inline atomic_count_t atomic_predec(atomic_t *val)
     97static inline long atomic_predec(atomic_t *val)
    10098{
    10199        return atomic_add(val, -1);
     
    106104 * @param val Variable to be incremented.
    107105 * @return    Value before incrementation.
    108  *
    109106 */
    110 static inline atomic_count_t atomic_postinc(atomic_t *val)
     107static inline long atomic_postinc(atomic_t *val)
    111108{
    112109        return atomic_add(val, 1) - 1;
     
    117114 * @param val Variable to be decremented.
    118115 * @return    Value before decrementation.
    119  *
    120116 */
    121 static inline atomic_count_t atomic_postdec(atomic_t *val)
     117static inline long atomic_postdec(atomic_t *val)
    122118{
    123119        return atomic_add(val, -1) + 1;
  • kernel/arch/arm32/include/memstr.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup arm32
     29/** @addtogroup arm32   
    3030 * @{
    3131 */
     
    3939#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    4040
    41 extern void memsetw(void *, size_t, uint16_t);
    42 extern void memsetb(void *, size_t, uint8_t);
     41extern void memsetw(void *dst, size_t cnt, uint16_t x);
     42extern void memsetb(void *dst, size_t cnt, uint8_t x);
     43
     44extern int memcmp(const void *a, const void *b, size_t cnt);
    4345
    4446#endif
  • kernel/arch/arm32/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup arm32
     29/** @addtogroup arm32   
    3030 * @{
    3131 */
     
    3838
    3939#ifndef DOXYGEN
    40         #define ATTRIBUTE_PACKED __attribute__((packed))
     40#       define ATTRIBUTE_PACKED __attribute__ ((packed))
    4141#else
    42         #define ATTRIBUTE_PACKED
     42#       define ATTRIBUTE_PACKED
    4343#endif
    4444
     
    6262typedef uint32_t unative_t;
    6363typedef int32_t native_t;
    64 typedef uint32_t atomic_count_t;
    6564
    6665typedef struct {
  • kernel/arch/ia32/include/atomic.h

    rc2efbb4 rf516bc2  
    4040#include <preemption.h>
    4141
    42 static inline void atomic_inc(atomic_t *val)
    43 {
     42static inline void atomic_inc(atomic_t *val) {
    4443#ifdef CONFIG_SMP
    4544        asm volatile (
     
    5554}
    5655
    57 static inline void atomic_dec(atomic_t *val)
    58 {
     56static inline void atomic_dec(atomic_t *val) {
    5957#ifdef CONFIG_SMP
    6058        asm volatile (
     
    7068}
    7169
    72 static inline atomic_count_t atomic_postinc(atomic_t *val)
     70static inline long atomic_postinc(atomic_t *val)
    7371{
    74         atomic_count_t r = 1;
     72        long r = 1;
    7573       
    7674        asm volatile (
    7775                "lock xaddl %[r], %[count]\n"
    78                 : [count] "+m" (val->count),
    79                   [r] "+r" (r)
     76                : [count] "+m" (val->count), [r] "+r" (r)
    8077        );
    8178       
     
    8380}
    8481
    85 static inline atomic_count_t atomic_postdec(atomic_t *val)
     82static inline long atomic_postdec(atomic_t *val)
    8683{
    87         atomic_count_t r = -1;
     84        long r = -1;
    8885       
    8986        asm volatile (
    9087                "lock xaddl %[r], %[count]\n"
    91                 : [count] "+m" (val->count),
    92                   [r] "+r" (r)
     88                : [count] "+m" (val->count), [r] "+r"(r)
    9389        );
    9490       
     
    9995#define atomic_predec(val)  (atomic_postdec(val) - 1)
    10096
    101 static inline atomic_count_t test_and_set(atomic_t *val)
    102 {
    103         atomic_count_t v;
     97static inline uint32_t test_and_set(atomic_t *val) {
     98        uint32_t v;
    10499       
    105100        asm volatile (
    106101                "movl $1, %[v]\n"
    107102                "xchgl %[v], %[count]\n"
    108                 : [v] "=r" (v),
    109                   [count] "+m" (val->count)
     103                : [v] "=r" (v), [count] "+m" (val->count)
    110104        );
    111105       
     
    116110static inline void atomic_lock_arch(atomic_t *val)
    117111{
    118         atomic_count_t tmp;
     112        uint32_t tmp;
    119113       
    120114        preemption_disable();
     
    130124                "testl %[tmp], %[tmp]\n"
    131125                "jnz 0b\n"
    132                 : [count] "+m" (val->count),
    133                   [tmp] "=&r" (tmp)
     126                : [count] "+m" (val->count), [tmp] "=&r" (tmp)
    134127        );
    135        
    136128        /*
    137129         * Prevent critical section code from bleeding out this way up.
  • kernel/arch/ia32/include/interrupt.h

    rc2efbb4 rf516bc2  
    5454#define IRQ_PIC_SPUR    7
    5555#define IRQ_MOUSE       12
    56 #define IRQ_DP8390      9
    5756
    5857/* this one must have four least significant bits set to ones */
  • kernel/arch/ia32/include/memstr.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ia32
     29/** @addtogroup ia32   
    3030 * @{
    3131 */
     
    3838#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    3939
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
     40extern void memsetw(void *dst, size_t cnt, uint16_t x);
     41extern void memsetb(void *dst, size_t cnt, uint8_t x);
     42
     43extern int memcmp(const void *a, const void *b, size_t cnt);
    4244
    4345#endif
  • kernel/arch/ia32/include/types.h

    rc2efbb4 rf516bc2  
    5555typedef uint32_t unative_t;
    5656typedef int32_t native_t;
    57 typedef uint32_t atomic_count_t;
    5857
    5958typedef struct {
  • kernel/arch/ia32/src/ia32.c

    rc2efbb4 rf516bc2  
    186186            (uintptr_t) I8042_BASE);
    187187#endif
    188 
    189 #ifdef CONFIG_NETIF_DP8390
    190         trap_virtual_enable_irqs(1 << IRQ_DP8390);
    191         sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
    192 #endif
    193188}
    194189
  • kernel/arch/ia32/src/smp/ipi.c

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ia32
     29/** @addtogroup ia32   
    3030 * @{
    3131 */
  • kernel/arch/ia64/include/atomic.h

    rc2efbb4 rf516bc2  
    3636#define KERN_ia64_ATOMIC_H_
    3737
    38 static inline atomic_count_t test_and_set(atomic_t *val)
     38static inline uint64_t test_and_set(atomic_t *val)
    3939{
    40         atomic_count_t v;
    41        
     40        uint64_t v;
     41               
    4242        asm volatile (
    4343                "movl %[v] = 0x1;;\n"
     
    5353{
    5454        do {
    55                 while (val->count);
     55                while (val->count)
     56                        ;
    5657        } while (test_and_set(val));
    5758}
     
    5960static inline void atomic_inc(atomic_t *val)
    6061{
    61         atomic_count_t v;
     62        long v;
    6263       
    6364        asm volatile (
     
    7071static inline void atomic_dec(atomic_t *val)
    7172{
    72         atomic_count_t v;
     73        long v;
    7374       
    7475        asm volatile (
     
    7980}
    8081
    81 static inline atomic_count_t atomic_preinc(atomic_t *val)
     82static inline long atomic_preinc(atomic_t *val)
    8283{
    83         atomic_count_t v;
     84        long v;
    8485       
    8586        asm volatile (
     
    9293}
    9394
    94 static inline atomic_count_t atomic_predec(atomic_t *val)
     95static inline long atomic_predec(atomic_t *val)
    9596{
    96         atomic_count_t v;
     97        long v;
    9798       
    9899        asm volatile (
     
    105106}
    106107
    107 static inline atomic_count_t atomic_postinc(atomic_t *val)
     108static inline long atomic_postinc(atomic_t *val)
    108109{
    109         atomic_count_t v;
     110        long v;
    110111       
    111112        asm volatile (
     
    118119}
    119120
    120 static inline atomic_count_t atomic_postdec(atomic_t *val)
     121static inline long atomic_postdec(atomic_t *val)
    121122{
    122         atomic_count_t v;
     123        long v;
    123124       
    124125        asm volatile (
  • kernel/arch/ia64/include/interrupt.h

    rc2efbb4 rf516bc2  
    6161#define IRQ_KBD    (0x01 + LEGACY_INTERRUPT_BASE)
    6262#define IRQ_MOUSE  (0x0c + LEGACY_INTERRUPT_BASE)
    63 #define IRQ_DP8390 (0x09 + LEGACY_INTERRUPT_BASE)
    6463
    6564/** General Exception codes. */
  • kernel/arch/ia64/include/memstr.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ia64
     29/** @addtogroup ia64   
    3030 * @{
    3131 */
     
    3838#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    3939
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
     40extern void memsetw(void *dst, size_t cnt, uint16_t x);
     41extern void memsetb(void *dst, size_t cnt, uint8_t x);
     42
     43extern int memcmp(const void *a, const void *b, size_t cnt);
    4244
    4345#endif
  • kernel/arch/ia64/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ia64
     29/** @addtogroup ia64   
    3030 * @{
    3131 */
     
    6363typedef uint64_t unative_t;
    6464typedef int64_t native_t;
    65 typedef uint64_t atomic_count_t;
    6665
    6766typedef struct {
  • kernel/arch/ia64/src/ia64.c

    rc2efbb4 rf516bc2  
    212212            (uintptr_t) I8042_BASE);
    213213#endif
    214 
    215 #ifdef CONFIG_NETIF_DP8390
    216         sysinfo_set_item_val("netif.dp8390.inr", NULL, IRQ_DP8390);
    217 #endif
    218 
     214       
    219215        sysinfo_set_item_val("ia64_iospace", NULL, true);
    220216        sysinfo_set_item_val("ia64_iospace.address", NULL, true);
  • kernel/arch/mips32/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup mips32
     29/** @addtogroup mips32 
    3030 * @{
    3131 */
     
    5151 *
    5252 * @return Value after addition.
    53  *
    5453 */
    55 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     54static inline long atomic_add(atomic_t *val, int i)
    5655{
    57         atomic_count_t tmp;
    58         atomic_count_t v;
     56        long tmp, v;
    5957       
    6058        asm volatile (
     
    6664                "       beq %0, %4, 1b\n"   /* if the atomic operation failed, try again */
    6765                "       nop\n"
    68                 : "=&r" (tmp),
    69                   "+m" (val->count),
    70                   "=&r" (v)
    71                 : "r" (i),
    72                   "i" (0)
     66                : "=&r" (tmp), "+m" (val->count), "=&r" (v)
     67                : "r" (i), "i" (0)
    7368        );
    7469       
     
    7671}
    7772
    78 static inline atomic_count_t test_and_set(atomic_t *val)
    79 {
    80         atomic_count_t tmp;
    81         atomic_count_t v;
     73static inline uint32_t test_and_set(atomic_t *val) {
     74        uint32_t tmp, v;
    8275       
    8376        asm volatile (
     
    8982                "       beqz %0, 1b\n"
    9083                "2:\n"
    91                 : "=&r" (tmp),
    92                   "+m" (val->count),
    93                   "=&r" (v)
     84                : "=&r" (tmp), "+m" (val->count), "=&r" (v)
    9485                : "i" (1)
    9586        );
     
    9889}
    9990
    100 static inline void atomic_lock_arch(atomic_t *val)
    101 {
     91static inline void atomic_lock_arch(atomic_t *val) {
    10292        do {
    103                 while (val->count);
     93                while (val->count)
     94                        ;
    10495        } while (test_and_set(val));
    10596}
  • kernel/arch/mips32/include/memstr.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup mips32
     29/** @addtogroup mips32 
    3030 * @{
    3131 */
     
    3838#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    3939
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
     40extern void memsetw(void *dst, size_t cnt, uint16_t x);
     41extern void memsetb(void *dst, size_t cnt, uint8_t x);
     42
     43extern int memcmp(const void *a, const void *b, size_t cnt);
    4244
    4345#endif
  • kernel/arch/mips32/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup mips32
     29/** @addtogroup mips32 
    3030 * @{
    3131 */
     
    5555typedef uint32_t unative_t;
    5656typedef int32_t native_t;
    57 typedef uint32_t atomic_count_t;
    5857
    5958typedef struct {
  • kernel/arch/mips32/src/smp/dorder.c

    rc2efbb4 rf516bc2  
    3333 */
    3434
    35 #include <smp/ipi.h>
    36 
    37 #ifdef CONFIG_SMP
     35#include <arch/smp/dorder.h>
    3836
    3937#define MSIM_DORDER_ADDRESS  0xB0000004
     
    4139void ipi_broadcast_arch(int ipi)
    4240{
     41#ifdef CONFIG_SMP
    4342        *((volatile unsigned int *) MSIM_DORDER_ADDRESS) = 0x7FFFFFFF;
     43#endif
    4444}
    45 
    46 #endif
    4745
    4846/** @}
  • kernel/arch/ppc32/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ppc32
     29/** @addtogroup ppc32   
    3030 * @{
    3131 */
     
    3838static inline void atomic_inc(atomic_t *val)
    3939{
    40         atomic_count_t tmp;
    41        
     40        long tmp;
     41
    4242        asm volatile (
    4343                "1:\n"
     
    4646                "stwcx. %0, 0, %2\n"
    4747                "bne- 1b"
    48                 : "=&r" (tmp),
    49                   "=m" (val->count)
    50                 : "r" (&val->count),
    51                   "m" (val->count)
     48                : "=&r" (tmp), "=m" (val->count)
     49                : "r" (&val->count), "m" (val->count)
    5250                : "cc"
    5351        );
     
    5654static inline void atomic_dec(atomic_t *val)
    5755{
    58         atomic_count_t tmp;
    59        
     56        long tmp;
     57
    6058        asm volatile (
    6159                "1:\n"
    6260                "lwarx %0, 0, %2\n"
    6361                "addic %0, %0, -1\n"
    64                 "stwcx. %0, 0, %2\n"
     62                "stwcx. %0, 0, %2\n"
    6563                "bne- 1b"
    66                 : "=&r" (tmp),
    67                   "=m" (val->count)
    68                 : "r" (&val->count),
    69                   "m" (val->count)
     64                : "=&r" (tmp), "=m" (val->count)
     65                : "r" (&val->count), "m" (val->count)
    7066                : "cc"
    7167        );
    7268}
    7369
    74 static inline atomic_count_t atomic_postinc(atomic_t *val)
     70static inline long atomic_postinc(atomic_t *val)
    7571{
    7672        atomic_inc(val);
     
    7874}
    7975
    80 static inline atomic_count_t atomic_postdec(atomic_t *val)
     76static inline long atomic_postdec(atomic_t *val)
    8177{
    8278        atomic_dec(val);
     
    8480}
    8581
    86 static inline atomic_count_t atomic_preinc(atomic_t *val)
     82static inline long atomic_preinc(atomic_t *val)
    8783{
    8884        atomic_inc(val);
     
    9086}
    9187
    92 static inline atomic_count_t atomic_predec(atomic_t *val)
     88static inline long atomic_predec(atomic_t *val)
    9389{
    9490        atomic_dec(val);
  • kernel/arch/ppc32/include/memstr.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ppc32
     29/** @addtogroup ppc32   
    3030 * @{
    3131 */
     
    3838#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    3939
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
     40extern void memsetw(void *dst, size_t cnt, uint16_t x);
     41extern void memsetb(void *dst, size_t cnt, uint8_t x);
     42
     43extern int memcmp(const void *a, const void *b, size_t cnt);
    4244
    4345#endif
  • kernel/arch/ppc32/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup ppc32
     29/** @addtogroup ppc32   
    3030 * @{
    3131 */
     
    5555typedef uint32_t unative_t;
    5656typedef int32_t native_t;
    57 typedef uint32_t atomic_count_t;
    5857
    5958typedef struct {
  • kernel/arch/sparc64/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup sparc64
     29/** @addtogroup sparc64 
    3030 * @{
    3131 */
     
    4545 *
    4646 * @param val Atomic variable.
    47  * @param i   Signed value to be added.
     47 * @param i Signed value to be added.
    4848 *
    4949 * @return Value of the atomic variable as it existed before addition.
    50  *
    5150 */
    52 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     51static inline long atomic_add(atomic_t *val, int i)
    5352{
    54         atomic_count_t a;
    55         atomic_count_t b;
    56        
     53        uint64_t a, b;
     54
    5755        do {
    58                 volatile uintptr_t ptr = (uintptr_t) &val->count;
    59                
    60                 a = *((atomic_count_t *) ptr);
     56                volatile uintptr_t x = (uint64_t) &val->count;
     57
     58                a = *((uint64_t *) x);
    6159                b = a + i;
    62                
    63                 asm volatile (
    64                         "casx %0, %2, %1\n"
    65                         : "+m" (*((atomic_count_t *) ptr)),
    66                       "+r" (b)
    67                     : "r" (a)
    68                 );
     60                asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *)x)),
     61                    "+r" (b) : "r" (a));
    6962        } while (a != b);
    70        
     63
    7164        return a;
    7265}
    7366
    74 static inline atomic_count_t atomic_preinc(atomic_t *val)
     67static inline long atomic_preinc(atomic_t *val)
    7568{
    7669        return atomic_add(val, 1) + 1;
    7770}
    7871
    79 static inline atomic_count_t atomic_postinc(atomic_t *val)
     72static inline long atomic_postinc(atomic_t *val)
    8073{
    8174        return atomic_add(val, 1);
    8275}
    8376
    84 static inline atomic_count_t atomic_predec(atomic_t *val)
     77static inline long atomic_predec(atomic_t *val)
    8578{
    8679        return atomic_add(val, -1) - 1;
    8780}
    8881
    89 static inline atomic_count_t atomic_postdec(atomic_t *val)
     82static inline long atomic_postdec(atomic_t *val)
    9083{
    9184        return atomic_add(val, -1);
     
    10295}
    10396
    104 static inline atomic_count_t test_and_set(atomic_t *val)
     97static inline long test_and_set(atomic_t *val)
    10598{
    106         atomic_count_t v = 1;
    107         volatile uintptr_t ptr = (uintptr_t) &val->count;
    108        
    109         asm volatile (
    110                 "casx %0, %2, %1\n"
    111                 : "+m" (*((atomic_count_t *) ptr)),
    112               "+r" (v)
    113             : "r" (0)
    114         );
    115        
     99        uint64_t v = 1;
     100        volatile uintptr_t x = (uint64_t) &val->count;
     101
     102        asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *) x)),
     103            "+r" (v) : "r" (0));
     104
    116105        return v;
    117106}
     
    119108static inline void atomic_lock_arch(atomic_t *val)
    120109{
    121         atomic_count_t tmp1 = 1;
    122         atomic_count_t tmp2 = 0;
    123        
    124         volatile uintptr_t ptr = (uintptr_t) &val->count;
    125        
     110        uint64_t tmp1 = 1;
     111        uint64_t tmp2 = 0;
     112
     113        volatile uintptr_t x = (uint64_t) &val->count;
     114
    126115        preemption_disable();
    127        
     116
    128117        asm volatile (
    129                 "0:\n"
    130                         "casx %0, %3, %1\n"
    131                         "brz %1, 2f\n"
    132                         "nop\n"
    133                 "1:\n"
    134                         "ldx %0, %2\n"
    135                         "brz %2, 0b\n"
    136                         "nop\n"
    137                         "ba %%xcc, 1b\n"
    138                         "nop\n"
    139                 "2:\n"
    140                 : "+m" (*((atomic_count_t *) ptr)),
    141                   "+r" (tmp1),
    142                   "+r" (tmp2)
    143                 : "r" (0)
     118        "0:\n"
     119                "casx %0, %3, %1\n"
     120                "brz %1, 2f\n"
     121                "nop\n"
     122        "1:\n"
     123                "ldx %0, %2\n"
     124                "brz %2, 0b\n"
     125                "nop\n"
     126                "ba %%xcc, 1b\n"
     127                "nop\n"
     128        "2:\n"
     129                : "+m" (*((uint64_t *) x)), "+r" (tmp1), "+r" (tmp2) : "r" (0)
    144130        );
    145131       
  • kernel/arch/sparc64/include/memstr.h

    rc2efbb4 rf516bc2  
    3838#define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    3939
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
     40extern void memsetw(void *dst, size_t cnt, uint16_t x);
     41extern void memsetb(void *dst, size_t cnt, uint8_t x);
     42
     43extern int memcmp(const void *a, const void *b, size_t cnt);
    4244
    4345#endif
  • kernel/arch/sparc64/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup sparc64
     29/** @addtogroup sparc64 
    3030 * @{
    3131 */
     
    5555typedef uint64_t unative_t;
    5656typedef int64_t native_t;
    57 typedef uint64_t atomic_count_t;
    5857
    5958typedef struct {
  • kernel/genarch/include/softint/division.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup genarch
     29/** @addtogroup genarch 
    3030 * @{
    3131 */
  • kernel/generic/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup generic
     29/** @addtogroup generic 
    3030 * @{
    3131 */
     
    3636#define KERN_ATOMIC_H_
    3737
    38 #include <arch/types.h>
    39 
    4038typedef struct atomic {
    41         volatile atomic_count_t count;
     39        volatile long count;
    4240} atomic_t;
    4341
    4442#include <arch/atomic.h>
    4543
    46 static inline void atomic_set(atomic_t *val, atomic_count_t i)
     44static inline void atomic_set(atomic_t *val, long i)
    4745{
    4846        val->count = i;
    4947}
    5048
    51 static inline atomic_count_t atomic_get(atomic_t *val)
     49static inline long atomic_get(atomic_t *val)
    5250{
    5351        return val->count;
  • kernel/generic/include/console/console.h

    rc2efbb4 rf516bc2  
    4141extern indev_t *stdin;
    4242extern outdev_t *stdout;
     43extern bool silent;
    4344
    4445extern indev_t *stdin_wire(void);
  • kernel/generic/include/ipc/ipc.h

    rc2efbb4 rf516bc2  
    227227#ifdef KERNEL
    228228
    229 #define IPC_MAX_PHONES  32
     229#define IPC_MAX_PHONES  16
    230230
    231231#include <synch/spinlock.h>
  • kernel/generic/include/panic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup generic
     29/** @addtogroup generic 
    3030 * @{
    3131 */
     
    3636#define KERN_PANIC_H_
    3737
    38 #include <typedefs.h>
    3938#include <stacktrace.h>
    4039#include <print.h>
     
    4342#       define panic(format, ...) \
    4443                do { \
    45                         silent = false; \
    4644                        printf("Kernel panic in %s() at %s:%u.\n", \
    4745                            __func__, __FILE__, __LINE__); \
     
    5250#else
    5351#       define panic(format, ...) \
    54                 do { \
    55                         silent = false; \
    56                         panic_printf("Kernel panic: " format "\n", ##__VA_ARGS__); \
    57                 } while (0)
     52                panic_printf("Kernel panic: " format "\n", ##__VA_ARGS__);
    5853#endif
    59 
    60 extern bool silent;
    6154
    6255extern void panic_printf(char *fmt, ...) __attribute__((noreturn));
  • kernel/generic/include/smp/ipi.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup generic
     29/** @addtogroup generic 
    3030 * @{
    3131 */
     
    3737
    3838#ifdef CONFIG_SMP
    39 
    40 extern void ipi_broadcast(int);
    41 extern void ipi_broadcast_arch(int);
    42 
     39extern void ipi_broadcast(int ipi);
     40extern void ipi_broadcast_arch(int ipi);
    4341#else
    44 
    45         #define ipi_broadcast(ipi)
    46 
     42#define ipi_broadcast(x)        ;
    4743#endif /* CONFIG_SMP */
    4844
  • kernel/generic/src/console/console.c

    rc2efbb4 rf516bc2  
    4545#include <ipc/irq.h>
    4646#include <arch.h>
    47 #include <panic.h>
    4847#include <print.h>
    4948#include <putchar.h>
  • kernel/generic/src/ddi/ddi.c

    rc2efbb4 rf516bc2  
    146146                    (btree_key_t) pf, &nodep);
    147147               
    148                 if ((!parea) || (parea->frames < pages)) {
    149                         spinlock_unlock(&parea_lock);
     148                if ((!parea) || (parea->frames < pages))
    150149                        goto err;
    151                 }
    152150               
    153151                spinlock_unlock(&parea_lock);
     
    155153        }
    156154       
     155err:
    157156        spinlock_unlock(&zones.lock);
    158 err:
    159157        interrupts_restore(ipl);
    160158        return ENOENT;
  • kernel/generic/src/proc/scheduler.c

    rc2efbb4 rf516bc2  
    542542{
    543543        thread_t *t;
    544         int count;
    545         atomic_count_t average;
     544        int count, average, j, k = 0;
    546545        unsigned int i;
    547         int j;
    548         int k = 0;
    549546        ipl_t ipl;
    550547
  • kernel/generic/src/smp/ipi.c

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup generic
     29/** @addtogroup generic 
    3030 * @{
    3131 */
     
    3333/**
    3434 * @file
    35  * @brief Generic IPI interface.
     35 * @brief       Generic IPI interface.
    3636 */
    37 
     37 
    3838#ifdef CONFIG_SMP
    3939
    4040#include <smp/ipi.h>
    4141#include <config.h>
     42
    4243
    4344/** Broadcast IPI message
     
    4849 *
    4950 * @bug The decision whether to actually send the IPI must be based
    50  *      on a different criterion. The current version has
    51  *      problems when some of the detected CPUs are marked
    52  *      disabled in machine configuration.
     51 *      on a different criterion. The current version has
     52 *      problems when some of the detected CPUs are marked
     53 *      disabled in machine configuration.
    5354 */
    5455void ipi_broadcast(int ipi)
     
    5960         * - if there is only one CPU but the kernel was compiled with CONFIG_SMP
    6061         */
    61        
     62
    6263        if ((config.cpu_active > 1) && (config.cpu_active == config.cpu_count))
    6364                ipi_broadcast_arch(ipi);
  • kernel/test/fpu/fpu1_ia64.c

    rc2efbb4 rf516bc2  
    128128char *test_fpu1(void)
    129129{
    130         unsigned int i;
    131         atomic_count_t total = 0;
     130        unsigned int i, total = 0;
    132131       
    133132        waitq_initialize(&can_start);
     
    160159        waitq_wakeup(&can_start, WAKEUP_ALL);
    161160       
    162         while (atomic_get(&threads_ok) != total) {
     161        while (atomic_get(&threads_ok) != (long) total) {
    163162                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_ok));
    164163                thread_sleep(1);
  • kernel/test/fpu/fpu1_x86.c

    rc2efbb4 rf516bc2  
    125125char *test_fpu1(void)
    126126{
    127         unsigned int i;
    128         atomic_count_t total = 0;
     127        unsigned int i, total = 0;
    129128       
    130129        waitq_initialize(&can_start);
     
    157156        waitq_wakeup(&can_start, WAKEUP_ALL);
    158157       
    159         while (atomic_get(&threads_ok) != total) {
     158        while (atomic_get(&threads_ok) != (long) total) {
    160159                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_ok));
    161160                thread_sleep(1);
  • kernel/test/fpu/mips2.c

    rc2efbb4 rf516bc2  
    111111char *test_mips2(void)
    112112{
    113         unsigned int i;
    114         atomic_count_t total = 0;
     113        unsigned int i, total = 0;
    115114       
    116115        waitq_initialize(&can_start);
     
    139138       
    140139        TPRINTF("ok\n");
    141        
     140               
    142141        thread_sleep(1);
    143142        waitq_wakeup(&can_start, WAKEUP_ALL);
    144143       
    145         while (atomic_get(&threads_ok) != total) {
     144        while (atomic_get(&threads_ok) != (long) total) {
    146145                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_ok));
    147146                thread_sleep(1);
  • kernel/test/fpu/sse1.c

    rc2efbb4 rf516bc2  
    109109char *test_sse1(void)
    110110{
    111         unsigned int i;
    112         atomic_count_t total = 0;
     111        unsigned int i, total = 0;
    113112       
    114113        waitq_initialize(&can_start);
     
    141140        waitq_wakeup(&can_start, WAKEUP_ALL);
    142141       
    143         while (atomic_get(&threads_ok) != total) {
     142        while (atomic_get(&threads_ok) != (long) total) {
    144143                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_ok));
    145144                thread_sleep(1);
  • kernel/test/synch/rwlock5.c

    rc2efbb4 rf516bc2  
    7070{
    7171        int i, j, k;
    72         atomic_count_t readers;
    73         atomic_count_t writers;
     72        long readers, writers;
    7473       
    7574        waitq_initialize(&can_start);
  • kernel/test/synch/semaphore1.c

    rc2efbb4 rf516bc2  
    7373{
    7474        int i, j, k;
    75         atomic_count_t consumers;
    76         atomic_count_t producers;
     75        int consumers, producers;
    7776       
    7877        waitq_initialize(&can_start);
  • kernel/test/thread/thread1.c

    rc2efbb4 rf516bc2  
    5555char *test_thread1(void)
    5656{
    57         unsigned int i;
    58         atomic_count_t total = 0;
     57        unsigned int i, total = 0;
    5958       
    6059        atomic_set(&finish, 1);
    6160        atomic_set(&threads_finished, 0);
    6261       
    63         for (i = 0; i < THREADS; i++) {
     62        for (i = 0; i < THREADS; i++) { 
    6463                thread_t *t;
    6564                if (!(t = thread_create(threadtest, NULL, TASK, 0, "threadtest", false))) {
     
    7574       
    7675        atomic_set(&finish, 0);
    77         while (atomic_get(&threads_finished) < total) {
     76        while (atomic_get(&threads_finished) < ((long) total)) {
    7877                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_finished));
    7978                thread_sleep(1);
  • uspace/Makefile

    rc2efbb4 rf516bc2  
    6060        srv/fs/devfs \
    6161        srv/hid/adb_mouse \
     62        srv/hid/console \
    6263        srv/hid/char_mouse \
    6364        srv/hid/fb \
    6465        srv/hid/kbd \
    65         srv/hw/char/i8042 \
    66         srv/net
    67 
    68 ifneq ($(UARCH),abs32le)
    69         DIRS += srv/hid/console
    70 endif
     66        srv/hw/char/i8042
    7167
    7268ifeq ($(UARCH),amd64)
  • uspace/app/tester/thread/thread1.c

    rc2efbb4 rf516bc2  
    5353{
    5454        unsigned int i;
    55         atomic_count_t total = 0;
     55        int total = 0;
    5656       
    5757        atomic_set(&finish, 1);
  • uspace/doc/doxygroups.h

    rc2efbb4 rf516bc2  
    2626         * @ingroup srvcs
    2727         */
    28 
    29         /**
    30          * @defgroup net Networking Stack
    31          * @ingroup srvcs
    32          */
    33 
    34                 /**
    35                  * @defgroup netif Network interface drivers
    36                  * @ingroup net
    37                  */
    38 
    39                         /**
    40                          * @defgroup lo Loopback Service
    41                          * @ingroup netif
    42                          */
    43 
    44                         /**
    45                          * @defgroup dp8390 Generic DP8390 network interface family service
    46                          * @ingroup netif
    47                          */
    48 
    49                                 /**
    50                                  * @defgroup ne2k NE2000 network interface family
    51                                  * @ingroup dp8390
    52                                  */
    53 
    54                 /**
    55                  * @defgroup net_nil Network interface layer
    56                  * @ingroup net
    57                  */
    58 
    59                         /**
    60                          * @defgroup eth Ethernet (IEEE 802.3) network interface layer Service
    61                          * @ingroup net_nil
    62                          */
    63 
    64                         /**
    65                          * @defgroup nildummy Dummy network interface layer Service
    66                          * @ingroup net_nil
    67                          */
    68 
    69                 /**
    70                  * @defgroup net_il Inter-networking layer
    71                  * @ingroup net
    72                  */
    73 
    74                         /**
    75                          * @defgroup arp Address Resolution Protocol (ARP) Service
    76                          * @ingroup net_il
    77                          */
    78 
    79                         /**
    80                          * @defgroup ip Internet Protocol (IP) Service
    81                          * @ingroup net_il
    82                          */
    83 
    84                 /**
    85                  * @defgroup net_tl Transport layer
    86                  * @ingroup net
    87                  */
    88 
    89                         /**
    90                          * @defgroup icmp Internet Control Message Protocol (ICMP) Service
    91                          * @ingroup net_tl
    92                          */
    93 
    94                         /**
    95                          * @defgroup udp User Datagram Protocol (UDP) Service
    96                          * @ingroup net_tl
    97                          */
    98 
    99                         /**
    100                          * @defgroup tcp Transmission Control Protocol (TCP) Service
    101                          * @ingroup net_tl
    102                          */
    103 
    104                 /**
    105                  * @defgroup packet Packet management system
    106                  * @ingroup net
    107                  */
    108 
    109                 /**
    110                  * @defgroup net_app Applications
    111                  * @ingroup net
    112                  */
    113 
    114                         /**
    115                          * @defgroup echo Echo Service
    116                          * @ingroup net_app
    117                          */
    118 
    119                         /**
    120                          * @defgroup ping Ping
    121                          * @ingroup net_app
    122                          */
    123 
    124                         /**
    125                          * @defgroup nettest Networking tests
    126                          * @ingroup net_app
    127                          */
    128 
    129                 /**
    130                  * @defgroup net_lib Application library
    131                  * @ingroup net
    132                  */
    133 
    134                         /**
    135                          * @defgroup socket Sockets
    136                          * @ingroup net_lib
    137                          */
    138 
    139                         /**
    140                          * @defgroup netdb Netdb
    141                          * @ingroup net_lib
    142                          */
    143 
     28       
    14429        /**
    14530         * @cond amd64
  • uspace/lib/Makefile.common

    rc2efbb4 rf516bc2  
    3333# Individual makefiles set:
    3434#
    35 #   USPACE_PREFIX  relative path to uspace/ directory
    36 #   LIBS           libraries to link with (with relative path)
    37 #   EXTRA_CFLAGS   additional flags to pass to C compiler
    38 #   JOB            job file name (like appname.job)
    39 #   OUTPUT         output binary name (like appname)
    40 #   SOURCES        list of source files
     35#       USPACE_PREFIX   relative path to uspace/ directory
     36#       LIBS            libraries to link with (with relative path)
     37#       EXTRA_CFLAGS    additional flags to pass to C compiler
     38#       JOB             job file name (like appname.job)
     39#       OUTPUT          output binary name (like appname)
     40#       SOURCES         list of source files
    4141#
    4242
     
    7272        find . -name '*.o' -follow -exec rm \{\} \;
    7373
    74 build:
     74build: 
    7575
    7676-include $(DEPEND)
  • uspace/lib/libc/Makefile

    rc2efbb4 rf516bc2  
    3131
    3232USPACE_PREFIX = $(shell pwd)/../..
     33#LIBS = $(LIBC_PREFIX)/libc.a
    3334LIBS =
    3435
     
    9091        generic/stacktrace.c
    9192
     93ARCH_SOURCES = \
     94        arch/$(UARCH)/src/entry.s \
     95        arch/$(UARCH)/src/thread_entry.s
     96
    9297SOURCES = \
    9398        $(GENERIC_SOURCES) \
  • uspace/lib/libc/arch/amd64/Makefile.inc

    rc2efbb4 rf516bc2  
    3434TOOLCHAIN_DIR = $(CROSS_PREFIX)/amd64/bin
    3535
    36 ARCH_SOURCES = \
    37         arch/$(UARCH)/src/entry.s \
    38         arch/$(UARCH)/src/thread_entry.s \
    39         arch/$(UARCH)/src/syscall.S \
     36ARCH_SOURCES += arch/$(UARCH)/src/syscall.S \
    4037        arch/$(UARCH)/src/fibril.S \
    4138        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/amd64/include/atomic.h

    rc2efbb4 rf516bc2  
    4242#include <atomicdflt.h>
    4343
    44 static inline void atomic_inc(atomic_t *val)
    45 {
    46         asm volatile (
    47                 "lock incq %[count]\n"
    48                 : [count] "+m" (val->count)
    49         );
     44static inline void atomic_inc(atomic_t *val) {
     45        asm volatile ("lock incq %0\n" : "+m" (val->count));
    5046}
    5147
    52 static inline void atomic_dec(atomic_t *val)
    53 {
    54         asm volatile (
    55                 "lock decq %[count]\n"
    56                 : [count] "+m" (val->count)
    57         );
     48static inline void atomic_dec(atomic_t *val) {
     49        asm volatile ("lock decq %0\n" : "+m" (val->count));
    5850}
    5951
    60 static inline atomic_count_t atomic_postinc(atomic_t *val)
     52static inline long atomic_postinc(atomic_t *val)
    6153{
    62         atomic_count_t r = 1;
     54        long r;
     55
     56        asm volatile (
     57                "movq $1, %0\n"
     58                "lock xaddq %0, %1\n"
     59                : "=r" (r), "+m" (val->count)
     60        );
     61
     62        return r;
     63}
     64
     65static inline long atomic_postdec(atomic_t *val)
     66{
     67        long r;
    6368       
    6469        asm volatile (
    65                 "lock xaddq %[r], %[count]\n"
    66                 : [count] "+m" (val->count),
    67                   [r] "+r" (r)
     70                "movq $-1, %0\n"
     71                "lock xaddq %0, %1\n"
     72                : "=r" (r), "+m" (val->count)
    6873        );
    6974       
     
    7176}
    7277
    73 static inline atomic_count_t atomic_postdec(atomic_t *val)
    74 {
    75         atomic_count_t r = -1;
    76        
    77         asm volatile (
    78                 "lock xaddq %[r], %[count]\n"
    79                 : [count] "+m" (val->count),
    80                   [r] "+r" (r)
    81         );
    82        
    83         return r;
    84 }
    85 
    86 #define atomic_preinc(val)  (atomic_postinc(val) + 1)
    87 #define atomic_predec(val)  (atomic_postdec(val) - 1)
     78#define atomic_preinc(val) (atomic_postinc(val) + 1)
     79#define atomic_predec(val) (atomic_postdec(val) - 1)
    8880
    8981#endif
  • uspace/lib/libc/arch/amd64/include/types.h

    rc2efbb4 rf516bc2  
    5454
    5555typedef uint64_t uintptr_t;
    56 typedef uint64_t atomic_count_t;
    57 typedef int64_t atomic_signed_t;
    5856
    5957#endif
  • uspace/lib/libc/arch/arm32/Makefile.inc

    rc2efbb4 rf516bc2  
    3434TOOLCHAIN_DIR = $(CROSS_PREFIX)/arm32/bin
    3535
    36 ARCH_SOURCES = \
    37         arch/$(UARCH)/src/entry.s \
    38         arch/$(UARCH)/src/thread_entry.s \
    39         arch/$(UARCH)/src/syscall.c \
     36ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \
    4037        arch/$(UARCH)/src/fibril.S \
    4138        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/arm32/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup libcarm32
     29/** @addtogroup libcarm32       
    3030 * @{
    3131 */
     
    3838
    3939#define LIBC_ARCH_ATOMIC_H_
    40 #define CAS
     40#define CAS 
    4141
    4242#include <atomicdflt.h>
     
    4646extern uintptr_t *ras_page;
    4747
    48 static inline bool cas(atomic_t *val, atomic_count_t ov, atomic_count_t nv)
     48static inline bool cas(atomic_t *val, long ov, long nv)
    4949{
    50         atomic_count_t ret = 0;
    51        
     50        long ret = 0;
     51
    5252        /*
    5353         * The following instructions between labels 1 and 2 constitute a
     
    7575                : "memory"
    7676        );
    77        
     77
    7878        ras_page[0] = 0;
    79         asm volatile (
    80                 "" ::: "memory"
    81         );
     79        asm volatile ("" ::: "memory");
    8280        ras_page[1] = 0xffffffff;
    83        
     81
    8482        return (bool) ret;
    8583}
     
    9189 *
    9290 * @return Value after addition.
    93  *
    9491 */
    95 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     92static inline long atomic_add(atomic_t *val, int i)
    9693{
    97         atomic_count_t ret = 0;
    98        
     94        long ret = 0;
     95
    9996        /*
    10097         * The following instructions between labels 1 and 2 constitute a
     
    118115                : [imm] "r" (i)
    119116        );
    120        
     117
    121118        ras_page[0] = 0;
    122         asm volatile (
    123                 "" ::: "memory"
    124         );
     119        asm volatile ("" ::: "memory");
    125120        ras_page[1] = 0xffffffff;
    126        
     121
    127122        return ret;
    128123}
     
    132127 *
    133128 * @param val Variable to be incremented.
    134  *
    135129 */
    136130static inline void atomic_inc(atomic_t *val)
     
    143137 *
    144138 * @param val Variable to be decremented.
    145  *
    146139 */
    147140static inline void atomic_dec(atomic_t *val)
     
    155148 * @param val Variable to be incremented.
    156149 * @return    Value after incrementation.
    157  *
    158150 */
    159 static inline atomic_count_t atomic_preinc(atomic_t *val)
     151static inline long atomic_preinc(atomic_t *val)
    160152{
    161153        return atomic_add(val, 1);
     
    167159 * @param val Variable to be decremented.
    168160 * @return    Value after decrementation.
    169  *
    170161 */
    171 static inline atomic_count_t atomic_predec(atomic_t *val)
     162static inline long atomic_predec(atomic_t *val)
    172163{
    173164        return atomic_add(val, -1);
     
    179170 * @param val Variable to be incremented.
    180171 * @return    Value before incrementation.
    181  *
    182172 */
    183 static inline atomic_count_t atomic_postinc(atomic_t *val)
     173static inline long atomic_postinc(atomic_t *val)
    184174{
    185175        return atomic_add(val, 1) - 1;
     
    191181 * @param val Variable to be decremented.
    192182 * @return    Value before decrementation.
    193  *
    194183 */
    195 static inline atomic_count_t atomic_postdec(atomic_t *val)
     184static inline long atomic_postdec(atomic_t *val)
    196185{
    197186        return atomic_add(val, -1) + 1;
  • uspace/lib/libc/arch/arm32/include/types.h

    rc2efbb4 rf516bc2  
    5555
    5656typedef uint32_t uintptr_t;
    57 typedef uint32_t atomic_count_t;
    58 typedef int32_t atomic_signed_t;
    5957
    6058#endif
  • uspace/lib/libc/arch/ia32/Makefile.inc

    rc2efbb4 rf516bc2  
    3434TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia32/bin
    3535
    36 ARCH_SOURCES = \
    37         arch/$(UARCH)/src/entry.s \
    38         arch/$(UARCH)/src/thread_entry.s \
    39         arch/$(UARCH)/src/syscall.S \
     36ARCH_SOURCES += arch/$(UARCH)/src/syscall.S \
    4037        arch/$(UARCH)/src/fibril.S \
    4138        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/ia32/include/atomic.h

    rc2efbb4 rf516bc2  
    4040#include <atomicdflt.h>
    4141
    42 static inline void atomic_inc(atomic_t *val)
    43 {
    44         asm volatile (
    45                 "lock incl %[count]\n"
    46                 : [count] "+m" (val->count)
    47         );
     42static inline void atomic_inc(atomic_t *val) {
     43        asm volatile ("lock incl %0\n" : "+m" (val->count));
    4844}
    4945
    50 static inline void atomic_dec(atomic_t *val)
    51 {
    52         asm volatile (
    53                 "lock decl %[count]\n"
    54                 : [count] "+m" (val->count)
    55         );
     46static inline void atomic_dec(atomic_t *val) {
     47        asm volatile ("lock decl %0\n" : "+m" (val->count));
    5648}
    5749
    58 static inline atomic_count_t atomic_postinc(atomic_t *val)
     50static inline long atomic_postinc(atomic_t *val)
    5951{
    60         atomic_count_t r = 1;
     52        long r;
     53
     54        asm volatile (
     55                "movl $1, %0\n"
     56                "lock xaddl %0, %1\n"
     57                : "=r" (r), "+m" (val->count)
     58        );
     59
     60        return r;
     61}
     62
     63static inline long atomic_postdec(atomic_t *val)
     64{
     65        long r;
    6166       
    6267        asm volatile (
    63                 "lock xaddl %[r], %[count]\n"
    64                 : [count] "+m" (val->count),
    65                   [r] "+r" (r)
     68                "movl $-1, %0\n"
     69                "lock xaddl %0, %1\n"
     70                : "=r" (r), "+m" (val->count)
    6671        );
    6772       
     
    6974}
    7075
    71 static inline atomic_count_t atomic_postdec(atomic_t *val)
    72 {
    73         atomic_count_t r = -1;
    74        
    75         asm volatile (
    76                 "lock xaddl %[r], %[count]\n"
    77                 : [count] "+m" (val->count),
    78                   [r] "+r" (r)
    79         );
    80        
    81         return r;
    82 }
    83 
    84 #define atomic_preinc(val)  (atomic_postinc(val) + 1)
    85 #define atomic_predec(val)  (atomic_postdec(val) - 1)
     76#define atomic_preinc(val) (atomic_postinc(val) + 1)
     77#define atomic_predec(val) (atomic_postdec(val) - 1)
    8678
    8779#endif
  • uspace/lib/libc/arch/ia32/include/types.h

    rc2efbb4 rf516bc2  
    5454
    5555typedef uint32_t uintptr_t;
    56 typedef uint32_t atomic_count_t;
    57 typedef int32_t atomic_signed_t;
    5856
    5957#endif
  • uspace/lib/libc/arch/ia64/Makefile.inc

    rc2efbb4 rf516bc2  
    3333TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia64/bin
    3434
    35 ARCH_SOURCES = \
    36         arch/$(UARCH)/src/entry.s \
    37         arch/$(UARCH)/src/thread_entry.s \
    38         arch/$(UARCH)/src/syscall.S \
     35ARCH_SOURCES += arch/$(UARCH)/src/syscall.S \
    3936        arch/$(UARCH)/src/fibril.S \
    4037        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/ia64/include/atomic.h

    rc2efbb4 rf516bc2  
    4242static inline void atomic_inc(atomic_t *val)
    4343{
    44         atomic_count_t v;
     44        long v;
    4545       
    4646        asm volatile (
     
    5353static inline void atomic_dec(atomic_t *val)
    5454{
    55         atomic_count_t v;
     55        long v;
    5656       
    5757        asm volatile (
     
    6262}
    6363
    64 static inline atomic_count_t atomic_preinc(atomic_t *val)
     64static inline long atomic_preinc(atomic_t *val)
    6565{
    66         atomic_count_t v;
     66        long v;
    6767       
    6868        asm volatile (
     
    7575}
    7676
    77 static inline atomic_count_t atomic_predec(atomic_t *val)
     77static inline long atomic_predec(atomic_t *val)
    7878{
    79         atomic_count_t v;
     79        long v;
    8080       
    8181        asm volatile (
     
    8888}
    8989
    90 static inline atomic_count_t atomic_postinc(atomic_t *val)
     90static inline long atomic_postinc(atomic_t *val)
    9191{
    92         atomic_count_t v;
     92        long v;
    9393       
    9494        asm volatile (
     
    101101}
    102102
    103 static inline atomic_count_t atomic_postdec(atomic_t *val)
     103static inline long atomic_postdec(atomic_t *val)
    104104{
    105         atomic_count_t v;
     105        long v;
    106106       
    107107        asm volatile (
  • uspace/lib/libc/arch/ia64/include/types.h

    rc2efbb4 rf516bc2  
    5959
    6060typedef uint64_t uintptr_t;
    61 typedef uint64_t atomic_count_t;
    62 typedef int64_t atomic_signed_t;
    6361
    6462typedef struct {
  • uspace/lib/libc/arch/mips32/Makefile.inc

    rc2efbb4 rf516bc2  
    3333TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32/bin
    3434
    35 ARCH_SOURCES = \
    36         arch/$(UARCH)/src/entry.s \
    37         arch/$(UARCH)/src/thread_entry.s \
    38         arch/$(UARCH)/src/syscall.c \
     35ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \
    3936        arch/$(UARCH)/src/fibril.S \
    4037        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/mips32/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup libcmips32
     29/** @addtogroup libcmips32     
    3030 * @{
    3131 */
    3232/** @file
    33  * @ingroup libcmips32eb
     33 * @ingroup libcmips32eb       
    3434 */
    3535
     
    4141#include <atomicdflt.h>
    4242
    43 #define atomic_inc(x)  ((void) atomic_add(x, 1))
    44 #define atomic_dec(x)  ((void) atomic_add(x, -1))
     43#define atomic_inc(x)   ((void) atomic_add(x, 1))
     44#define atomic_dec(x)   ((void) atomic_add(x, -1))
    4545
    46 #define atomic_postinc(x)  (atomic_add(x, 1) - 1)
    47 #define atomic_postdec(x)  (atomic_add(x, -1) + 1)
     46#define atomic_postinc(x) (atomic_add(x, 1) - 1)
     47#define atomic_postdec(x) (atomic_add(x, -1) + 1)
    4848
    49 #define atomic_preinc(x)  atomic_add(x, 1)
    50 #define atomic_predec(x)  atomic_add(x, -1)
     49#define atomic_preinc(x) atomic_add(x, 1)
     50#define atomic_predec(x) atomic_add(x, -1)
    5151
    5252/* Atomic addition of immediate value.
    5353 *
    5454 * @param val Memory location to which will be the immediate value added.
    55  * @param i   Signed immediate that will be added to *val.
     55 * @param i Signed immediate that will be added to *val.
    5656 *
    5757 * @return Value after addition.
    58  *
    5958 */
    60 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     59static inline long atomic_add(atomic_t *val, int i)
    6160{
    62         atomic_count_t tmp;
    63         atomic_count_t v;
    64        
     61        long tmp, v;
     62
    6563        asm volatile (
    6664                "1:\n"
     
    7270                /*      nop     */              /* nop is inserted automatically by compiler */
    7371                "       nop\n"
    74                 : "=&r" (tmp),
    75                   "+m" (val->count),
    76                   "=&r" (v)
    77                 : "r" (i),
    78                   "i" (0)
    79         );
    80        
     72                : "=&r" (tmp), "+m" (val->count), "=&r" (v)
     73                : "r" (i), "i" (0)
     74                );
     75
    8176        return v;
    8277}
  • uspace/lib/libc/arch/mips32/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup libcmips32
     29/** @addtogroup libcmips32     
    3030 * @{
    3131 */
     
    5555
    5656typedef uint32_t uintptr_t;
    57 typedef uint32_t atomic_count_t;
    58 typedef int32_t atomic_signed_t;
    5957
    6058#endif
  • uspace/lib/libc/arch/mips32eb/Makefile.inc

    rc2efbb4 rf516bc2  
    3333TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32eb/bin
    3434
    35 ARCH_SOURCES = \
    36         arch/$(UARCH)/src/entry.s \
    37         arch/$(UARCH)/src/thread_entry.s \
    38         arch/$(UARCH)/src/syscall.c \
     35ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \
    3936        arch/$(UARCH)/src/fibril.S \
    4037        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/ppc32/Makefile.inc

    rc2efbb4 rf516bc2  
    3333TOOLCHAIN_DIR = $(CROSS_PREFIX)/ppc32/bin
    3434
    35 ARCH_SOURCES = \
    36         arch/$(UARCH)/src/entry.s \
    37         arch/$(UARCH)/src/thread_entry.s \
    38         arch/$(UARCH)/src/syscall.c \
     35ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \
    3936        arch/$(UARCH)/src/fibril.S \
    4037        arch/$(UARCH)/src/tls.c \
  • uspace/lib/libc/arch/ppc32/include/atomic.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup libcppc32
     29/** @addtogroup libcppc32       
    3030 * @{
    3131 */
     
    4242static inline void atomic_inc(atomic_t *val)
    4343{
    44         atomic_count_t tmp;
    45        
     44        long tmp;
     45
    4646        asm volatile (
    4747                "1:\n"
     
    5050                "stwcx. %0, 0, %2\n"
    5151                "bne- 1b"
    52                 : "=&r" (tmp),
    53                   "=m" (val->count)
    54                 : "r" (&val->count),
    55                   "m" (val->count)
    56                 : "cc"
    57         );
     52                : "=&r" (tmp), "=m" (val->count)
     53                : "r" (&val->count), "m" (val->count)
     54                : "cc");
    5855}
    5956
    6057static inline void atomic_dec(atomic_t *val)
    6158{
    62         atomic_count_t tmp;
    63        
     59        long tmp;
     60
    6461        asm volatile (
    6562                "1:\n"
    6663                "lwarx %0, 0, %2\n"
    6764                "addic %0, %0, -1\n"
    68                 "stwcx. %0, 0, %2\n"
     65                "stwcx. %0, 0, %2\n"
    6966                "bne- 1b"
    70                 : "=&r" (tmp),
    71                   "=m" (val->count)
    72                 : "r" (&val->count),
    73                   "m" (val->count)
    74                 : "cc"
    75         );
     67                : "=&r" (tmp), "=m" (val->count)
     68                : "r" (&val->count), "m" (val->count)
     69                : "cc");
    7670}
    7771
    78 static inline atomic_count_t atomic_postinc(atomic_t *val)
     72static inline long atomic_postinc(atomic_t *val)
    7973{
    8074        atomic_inc(val);
     
    8276}
    8377
    84 static inline atomic_count_t atomic_postdec(atomic_t *val)
     78static inline long atomic_postdec(atomic_t *val)
    8579{
    8680        atomic_dec(val);
     
    8882}
    8983
    90 static inline atomic_count_t atomic_preinc(atomic_t *val)
     84static inline long atomic_preinc(atomic_t *val)
    9185{
    9286        atomic_inc(val);
     
    9488}
    9589
    96 static inline atomic_count_t atomic_predec(atomic_t *val)
     90static inline long atomic_predec(atomic_t *val)
    9791{
    9892        atomic_dec(val);
  • uspace/lib/libc/arch/ppc32/include/types.h

    rc2efbb4 rf516bc2  
    2727 */
    2828
    29 /** @addtogroup libcppc32
     29/** @addtogroup libcppc32       
    3030 * @{
    3131 */
     
    5454
    5555typedef uint32_t uintptr_t;
    56 typedef uint32_t atomic_count_t;
    57 typedef int32_t atomic_signed_t;
    5856
    5957#endif
  • uspace/lib/libc/arch/sparc64/Makefile.inc

    rc2efbb4 rf516bc2  
    3333TOOLCHAIN_DIR = $(CROSS_PREFIX)/sparc64/bin
    3434
    35 ARCH_SOURCES = \
    36         arch/$(UARCH)/src/entry.s \
    37         arch/$(UARCH)/src/thread_entry.s \
    38         arch/$(UARCH)/src/fibril.S \
     35ARCH_SOURCES += arch/$(UARCH)/src/fibril.S \
    3936        arch/$(UARCH)/src/tls.c \
    4037        arch/$(UARCH)/src/stacktrace.c \
  • uspace/lib/libc/arch/sparc64/include/atomic.h

    rc2efbb4 rf516bc2  
    4646 *
    4747 * @param val Atomic variable.
    48  * @param i   Signed value to be added.
     48 * @param i Signed value to be added.
    4949 *
    5050 * @return Value of the atomic variable as it existed before addition.
    51  *
    5251 */
    53 static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     52static inline long atomic_add(atomic_t *val, int i)
    5453{
    55         atomic_count_t a;
    56         atomic_count_t b;
    57        
     54        uint64_t a, b;
     55
    5856        do {
    59                 volatile uintptr_t ptr = (uintptr_t) &val->count;
    60                
    61                 a = *((atomic_count_t *) ptr);
     57                volatile uintptr_t x = (uint64_t) &val->count;
     58
     59                a = *((uint64_t *) x);
    6260                b = a + i;
    63                
    64                 asm volatile (
    65                         "casx %0, %2, %1\n"
    66                         : "+m" (*((atomic_count_t *) ptr)),
    67                           "+r" (b)
    68                         : "r" (a)
    69                 );
     61                asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *)x)), "+r" (b) : "r" (a));
    7062        } while (a != b);
    71        
     63
    7264        return a;
    7365}
    7466
    75 static inline atomic_count_t atomic_preinc(atomic_t *val)
     67static inline long atomic_preinc(atomic_t *val)
    7668{
    7769        return atomic_add(val, 1) + 1;
    7870}
    7971
    80 static inline atomic_count_t atomic_postinc(atomic_t *val)
     72static inline long atomic_postinc(atomic_t *val)
    8173{
    8274        return atomic_add(val, 1);
    8375}
    8476
    85 static inline atomic_count_t atomic_predec(atomic_t *val)
     77static inline long atomic_predec(atomic_t *val)
    8678{
    8779        return atomic_add(val, -1) - 1;
    8880}
    8981
    90 static inline atomic_count_t atomic_postdec(atomic_t *val)
     82static inline long atomic_postdec(atomic_t *val)
    9183{
    9284        return atomic_add(val, -1);
  • uspace/lib/libc/arch/sparc64/include/types.h

    rc2efbb4 rf516bc2  
    5454
    5555typedef uint64_t uintptr_t;
    56 typedef uint64_t atomic_count_t;
    57 typedef int64_t atomic_signed_t;
    5856
    5957#endif
  • uspace/lib/libc/generic/async.c

    rc2efbb4 rf516bc2  
    11011101}
    11021102
    1103 /** Wrapper for making IPC_M_CONNECT_ME_TO calls using the async framework.
    1104  *
    1105  * Ask through phone for a new connection to some service.
    1106  *
    1107  * @param phoneid       Phone handle used for contacting the other side.
    1108  * @param arg1          User defined argument.
    1109  * @param arg2          User defined argument.
    1110  * @param arg3          User defined argument.
    1111  *
    1112  * @return              New phone handle on success or a negative error code.
    1113  */
    1114 int
    1115 async_connect_me_to(int phoneid, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t arg3)
    1116 {
    1117         int rc;
    1118         ipcarg_t newphid;
    1119 
    1120         rc = async_req_3_5(phoneid, IPC_M_CONNECT_ME_TO, arg1, arg2, arg3, NULL,
    1121             NULL, NULL, NULL, &newphid);
    1122        
    1123         if (rc != EOK) 
    1124                 return rc;
    1125 
    1126         return newphid;
    1127 }
    1128 
    1129 /** Wrapper for making IPC_M_CONNECT_ME_TO calls using the async framework.
    1130  *
    1131  * Ask through phone for a new connection to some service and block until
    1132  * success.
    1133  *
    1134  * @param phoneid       Phone handle used for contacting the other side.
    1135  * @param arg1          User defined argument.
    1136  * @param arg2          User defined argument.
    1137  * @param arg3          User defined argument.
    1138  *
    1139  * @return              New phone handle on success or a negative error code.
    1140  */
    1141 int
    1142 async_connect_me_to_blocking(int phoneid, ipcarg_t arg1, ipcarg_t arg2,
    1143     ipcarg_t arg3)
    1144 {
    1145         int rc;
    1146         ipcarg_t newphid;
    1147 
    1148         rc = async_req_4_5(phoneid, IPC_M_CONNECT_ME_TO, arg1, arg2, arg3,
    1149             IPC_FLAG_BLOCKING, NULL, NULL, NULL, NULL, &newphid);
    1150        
    1151         if (rc != EOK) 
    1152                 return rc;
    1153 
    1154         return newphid;
    1155 }
    1156 
    11571103/** Wrapper for making IPC_M_SHARE_IN calls using the async framework.
    11581104 *
  • uspace/lib/libc/generic/futex.c

    rc2efbb4 rf516bc2  
    6868int futex_down(futex_t *futex)
    6969{
    70         if ((atomic_signed_t) atomic_predec(futex) < 0)
     70        if (atomic_predec(futex) < 0)
    7171                return __SYSCALL1(SYS_FUTEX_SLEEP, (sysarg_t) &futex->count);
    7272
     
    8282int futex_up(futex_t *futex)
    8383{
    84         if ((atomic_signed_t) atomic_postinc(futex) < 0)
     84        if (atomic_postinc(futex) < 0)
    8585                return __SYSCALL1(SYS_FUTEX_WAKEUP, (sysarg_t) &futex->count);
    8686               
  • uspace/lib/libc/include/async.h

    rc2efbb4 rf516bc2  
    259259}
    260260
    261 extern int async_connect_me_to(int, ipcarg_t, ipcarg_t, ipcarg_t);
    262 extern int async_connect_me_to_blocking(int, ipcarg_t, ipcarg_t, ipcarg_t);
    263 
    264261/*
    265262 * User-friendly wrappers for async_share_in_start().
  • uspace/lib/libc/include/atomicdflt.h

    rc2efbb4 rf516bc2  
    3737
    3838#ifndef LIBC_ARCH_ATOMIC_H_
    39         #error This file cannot be included directly, include atomic.h instead.
     39#error This file cannot be included directly, include atomic.h instead.
    4040#endif
    4141
    42 #include <stdint.h>
    4342#include <bool.h>
    4443
    4544typedef struct atomic {
    46         volatile atomic_count_t count;
     45        volatile long count;
    4746} atomic_t;
    4847
    49 static inline void atomic_set(atomic_t *val, atomic_count_t i)
     48static inline void atomic_set(atomic_t *val, long i)
    5049{
    51         val->count = i;
     50        val->count = i;
    5251}
    5352
    54 static inline atomic_count_t atomic_get(atomic_t *val)
     53static inline long atomic_get(atomic_t *val)
    5554{
    56         return val->count;
     55        return val->count;
    5756}
    5857
    59 #ifndef CAS
    60 static inline bool cas(atomic_t *val, atomic_count_t ov, atomic_count_t nv)
     58#ifndef CAS 
     59static inline bool cas(atomic_t *val, long ov, long nv)
    6160{
    6261        return __sync_bool_compare_and_swap(&val->count, ov, nv);
  • uspace/lib/libc/include/ipc/services.h

    rc2efbb4 rf516bc2  
    4747        SERVICE_FHC,
    4848        SERVICE_OBIO,
    49         SERVICE_CLIPBOARD,
    50         SERVICE_NETWORKING,
    51         SERVICE_LO,
    52         SERVICE_DP8390,
    53         SERVICE_ETHERNET,
    54         SERVICE_NILDUMMY,
    55         SERVICE_IP,
    56         SERVICE_ARP,
    57         SERVICE_RARP,
    58         SERVICE_ICMP,
    59         SERVICE_UDP,
    60         SERVICE_TCP,
    61         SERVICE_SOCKET
     49        SERVICE_CLIPBOARD
    6250} services_t;
    6351
  • uspace/lib/libc/include/stacktrace.h

    rc2efbb4 rf516bc2  
    5757extern void stacktrace_prepare(void);
    5858extern uintptr_t stacktrace_fp_get(void);
    59 extern uintptr_t stacktrace_pc_get(void);
     59extern uintptr_t stacktrace_pc_get();
    6060
    6161#endif
  • uspace/srv/hid/kbd/Makefile.build

    rc2efbb4 rf516bc2  
    150150endif
    151151
    152 ifeq ($(UARCH),abs32le)
    153         SOURCES += \
    154                 port/dummy.c \
    155                 ctl/pc.c
    156 endif
    157 
    158152OBJECTS := $(addsuffix .o,$(basename $(SOURCES)))
    159153
  • uspace/srv/loader/include/arch.h

    rc2efbb4 rf516bc2  
    3737#define LOADER_ARCH_H_
    3838
    39 extern void program_run(void *entry_point, void *pcb);
     39void program_run(void *entry_point, void *pcb);
    4040
    4141#endif
Note: See TracChangeset for help on using the changeset viewer.