Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset c2efbb4 in mainline


Ignore:
Timestamp:
2010-02-20T20:54:53Z (12 years ago)
Author:
Pavel Rimsky <pavel@…>
Branches:
lfn, master
Children:
721d4e85, 95c4776
Parents:
f516bc2 (diff), b03a666 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Synchronize with head.

Files:
198 added
118 edited
1 moved

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    rf516bc2 rc2efbb4  
    258258
    259259% Compiler
     260@ "gcc_cross" GNU C Compiler (cross-compiler)
    260261@ "gcc_native" GNU C Compiler (native)
    261262@ "clang" Clang
     
    263264
    264265
     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
    265275## Kernel configuration
    266276
     
    284294
    285295% Software integer division support
    286 ! [PLATFORM=ia32|PLATFORM=arm32|PLATFORM=ia64|PLATFORM=mips32|PLATFORM=ppc32] CONFIG_SOFTINT (y)
     296! [PLATFORM=abs32le|PLATFORM=ia32|PLATFORM=arm32|PLATFORM=ia64|PLATFORM=mips32|PLATFORM=ppc32] CONFIG_SOFTINT (y)
    287297
    288298% ASID support
     
    508518% Write core files
    509519! 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

    rf516bc2 rc2efbb4  
    8585        COMPONENTS += $(USPACEDIR)/srv/fs/fat/fat
    8686endif
     87
     88CFG =
     89
     90NET_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
     98NET_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
     104ifneq ($(NETWORKING), none)
     105NET_CFG = \
     106        $(USPACEDIR)/srv/net/cfg/$(NETWORKING)/general \
     107        $(USPACEDIR)/srv/net/cfg/$(NETWORKING)/lo \
     108        $(USPACEDIR)/srv/net/cfg/$(NETWORKING)/ne2k
     109endif
     110
     111ifeq ($(NETWORKING), module)
     112        RD_APPS +=      $(NET_APPS)
     113
     114        RD_SRVS +=      $(NET_SRVS)
     115
     116        CFG             +=      $(NET_CFG)
     117else
     118ifeq ($(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)
     130endif
     131endif
     132
  • boot/arch/amd64/Makefile.inc

    • Property mode changed from 100644 to 100755
    rf516bc2 rc2efbb4  
    3939build: $(BASE)/image.iso
    4040
    41 $(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
     41$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS) $(CFG)
    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       
    5862        cp $(KERNELDIR)/kernel.bin $(TMP)/boot/
    5963        for task in $(INIT_TASKS) ; do \
     
    6569        for file in $(RD_APPS) ; do \
    6670                cp $$file $(USPACEDIR)/dist/app/ ; \
     71        done
     72        for file in $(NET_CFG) ; do \
     73                cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
    6774        done
    6875       
     
    7885
    7986clean:
     87        rm -f $(USPACEDIR)/dist/srv/*
     88        rm -f $(USPACEDIR)/dist/app/*
     89        rm -f $(USPACEDIR)/dist/cfg/net/*
     90
    8091        for file in $(RD_SRVS) ; do \
    8192                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    8495                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    8596        done
     97        for file in $(NET_CFG) ; do \
     98                rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
     99        done
    86100        rm -fr $(TMP)
    87101        rm -f $(BASE)/image.iso
  • boot/arch/arm32/loader/Makefile

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

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

    rf516bc2 rc2efbb4  
    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
    4247        for file in $(RD_SRVS) ; do \
    4348                rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
     
    4651                rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
    4752        done
     53        for file in $(NET_CFG) ; do \
     54                rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
     55        done
    4856        rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(HELLO) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
    4957        find . -name '*.o' -follow -exec rm \{\} \;
  • boot/arch/ia64/loader/Makefile.build

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    rf516bc2 rc2efbb4  
    115115        OBJCOPY = $(BINUTILS_PREFIX)objcopy
    116116        OBJDUMP = $(BINUTILS_PREFIX)objdump
    117         LIBDIR = /usr/lib
    118117        CFLAGS = $(GCC_CFLAGS)
    119118        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
     
    127126        OBJCOPY = $(TOOLCHAIN_DIR)/bin/$(TARGET)-objcopy
    128127        OBJDUMP = $(TOOLCHAIN_DIR)/bin/$(TARGET)-objdump
    129         LIBDIR = $(TOOLCHAIN_DIR)/lib
    130128        CFLAGS = $(GCC_CFLAGS)
    131129        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
     
    139137        OBJCOPY = objcopy
    140138        OBJDUMP = objdump
    141         LIBDIR = /usr/lib
    142139        CFLAGS = $(ICC_CFLAGS)
    143140        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
     
    151148        OBJCOPY = $(BINUTILS_PREFIX)objcopy
    152149        OBJDUMP = $(BINUTILS_PREFIX)objdump
    153         LIBDIR = /usr/lib
    154150        CFLAGS = $(SUNCC_CFLAGS)
    155151        DEFS += $(CONFIG_DEFS)
     
    164160        OBJCOPY = $(BINUTILS_PREFIX)objcopy
    165161        OBJDUMP = $(BINUTILS_PREFIX)objdump
    166         LIBDIR = /usr/lib
    167162        CFLAGS = $(CLANG_CFLAGS)
    168163        DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
  • kernel/arch/abs32le/Makefile.inc

    rf516bc2 rc2efbb4  
    3030#
    3131
     32BFD = binary
     33
     34ifeq ($(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
     50endif
     51
    3252BITS = 32
    3353ENDIANESS = LE
     
    4363        arch/$(KARCH)/src/ddi/ddi.c \
    4464        arch/$(KARCH)/src/smp/smp.c \
     65        arch/$(KARCH)/src/smp/ipi.c \
    4566        arch/$(KARCH)/src/mm/as.c \
    4667        arch/$(KARCH)/src/mm/frame.c \
  • kernel/arch/abs32le/include/asm.h

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

    rf516bc2 rc2efbb4  
    5454}
    5555
    56 static inline long atomic_postinc(atomic_t *val)
     56static inline atomic_count_t atomic_postinc(atomic_t *val)
    5757{
    5858        /* On real hardware both the storing of the previous
     
    6060           atomic action. */
    6161       
    62         long prev = val->count;
     62        atomic_count_t prev = val->count;
    6363       
    6464        val->count++;
     
    6666}
    6767
    68 static inline long atomic_postdec(atomic_t *val)
     68static inline atomic_count_t atomic_postdec(atomic_t *val)
    6969{
    7070        /* On real hardware both the storing of the previous
     
    7272           atomic action. */
    7373       
    74         long prev = val->count;
     74        atomic_count_t prev = val->count;
    7575       
    7676        val->count--;
     
    8181#define atomic_predec(val)  (atomic_postdec(val) - 1)
    8282
    83 static 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;
     83static 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;
    9388}
    9489
    95 /** ia32 specific fast spinlock */
    9690static inline void atomic_lock_arch(atomic_t *val)
    9791{
    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();
     92        do {
     93                while (val->count);
     94        } while (test_and_set(val));
    11895}
    11996
  • kernel/arch/abs32le/include/barrier.h

    rf516bc2 rc2efbb4  
    2727 */
    2828
    29 /** @addtogroup ia32
     29/** @addtogroup abs32le
    3030 * @{
    3131 */
     
    3333 */
    3434
    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  */
     35#ifndef KERN_abs32le_BARRIER_H_
     36#define KERN_abs32le_BARRIER_H_
    4437
    4538/*
     
    4740 */
    4841
    49 #define CS_ENTER_BARRIER()  asm volatile ("" ::: "memory")
    50 #define CS_LEAVE_BARRIER()  asm volatile ("" ::: "memory")
     42#define CS_ENTER_BARRIER()
     43#define CS_LEAVE_BARRIER()
    5144
    52 static 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 }
     45#define memory_barrier()
     46#define read_barrier()
     47#define write_barrier()
    6048
    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()
     49#define smc_coherence(addr)
     50#define smc_coherence_block(addr, size)
    9551
    9652#endif
  • kernel/arch/abs32le/include/context.h

    rf516bc2 rc2efbb4  
    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

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

    rf516bc2 rc2efbb4  
    3636#define KERN_abs32le_MEMSTR_H_
    3737
    38 #define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
    39 
    40 extern void memsetw(void *, size_t, uint16_t);
    41 extern void memsetb(void *, size_t, uint8_t);
    42 
    43 extern int memcmp(const void *, const void *, size_t);
     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))
    4441
    4542#endif
  • kernel/arch/abs32le/include/mm/frame.h

    rf516bc2 rc2efbb4  
    4040
    4141#ifdef KERNEL
    42 #ifndef __ASM__
    4342
    4443#include <arch/types.h>
     
    4746extern void physmem_print(void);
    4847
    49 #endif /* __ASM__ */
    5048#endif /* KERNEL */
    5149
  • kernel/arch/abs32le/include/mm/page.h

    rf516bc2 rc2efbb4  
    4343#ifdef KERNEL
    4444
    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
     45#define KA2PA(x)  (((uintptr_t) (x)) - 0x80000000)
     46#define PA2KA(x)  (((uintptr_t) (x)) + 0x80000000)
    5247
    5348/*
     
    122117#define PTE_EXECUTABLE_ARCH(p)  1
    123118
    124 #ifndef __ASM__
    125 
    126119#include <mm/mm.h>
    127120#include <arch/interrupt.h>
     
    129122#include <typedefs.h>
    130123
    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 
    147124/** Page Table Entry. */
    148125typedef struct {
    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;
     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;
    162141
    163142static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
     
    192171
    193172extern void page_arch_init(void);
    194 extern void page_fault(int n, istate_t *istate);
    195 
    196 #endif /* __ASM__ */
     173extern void page_fault(int, istate_t *);
    197174
    198175#endif /* KERNEL */
  • kernel/arch/abs32le/include/types.h

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

    rf516bc2 rc2efbb4  
    3535#include <arch.h>
    3636#include <arch/types.h>
    37 #include <arch/context.h>
    3837#include <arch/interrupt.h>
    3938#include <arch/asm.h>
     
    4140#include <func.h>
    4241#include <config.h>
     42#include <errno.h>
    4343#include <context.h>
     44#include <fpu_context.h>
    4445#include <interrupt.h>
     46#include <syscall/copy.h>
    4547#include <ddi/irq.h>
    4648#include <proc/thread.h>
     
    4951#include <sysinfo/sysinfo.h>
    5052#include <memstr.h>
     53
     54char memcpy_from_uspace_failover_address;
     55char memcpy_to_uspace_failover_address;
    5156
    5257void arch_pre_mm_init(void)
     
    8388unative_t sys_tls_set(unative_t addr)
    8489{
    85         return 0;
     90        return EOK;
    8691}
    8792
     
    109114}
    110115
    111 void memsetb(void *dst, size_t cnt, uint8_t val)
    112 {
    113         _memsetb(dst, cnt, val);
    114 }
    115 
    116 void memsetw(void *dst, size_t cnt, uint16_t val)
    117 {
    118         _memsetw(dst, cnt, val);
    119 }
    120 
    121116void panic_printf(char *fmt, ...)
    122117{
     
    140135}
    141136
     137void fpu_init(void)
     138{
     139}
     140
     141void fpu_context_save(fpu_context_t *ctx)
     142{
     143}
     144
     145void fpu_context_restore(fpu_context_t *ctx)
     146{
     147}
     148
     149int memcpy_from_uspace(void *dst, const void *uspace_src, size_t size)
     150{
     151        return EOK;
     152}
     153
     154int memcpy_to_uspace(void *uspace_dst, const void *src, size_t size)
     155{
     156        return EOK;
     157}
     158
    142159/** @}
    143160 */
  • kernel/arch/abs32le/src/debug/stacktrace.c

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

    rf516bc2 rc2efbb4  
    4040#include <preemption.h>
    4141
    42 static inline void atomic_inc(atomic_t *val) {
     42static inline void atomic_inc(atomic_t *val)
     43{
    4344#ifdef CONFIG_SMP
    4445        asm volatile (
     
    5455}
    5556
    56 static inline void atomic_dec(atomic_t *val) {
     57static inline void atomic_dec(atomic_t *val)
     58{
    5759#ifdef CONFIG_SMP
    5860        asm volatile (
     
    6870}
    6971
    70 static inline long atomic_postinc(atomic_t *val)
     72static inline atomic_count_t atomic_postinc(atomic_t *val)
    7173{
    72         long r = 1;
     74        atomic_count_t r = 1;
    7375       
    7476        asm volatile (
    7577                "lock xaddq %[r], %[count]\n"
    76                 : [count] "+m" (val->count), [r] "+r" (r)
     78                : [count] "+m" (val->count),
     79                  [r] "+r" (r)
    7780        );
    7881       
     
    8083}
    8184
    82 static inline long atomic_postdec(atomic_t *val)
     85static inline atomic_count_t atomic_postdec(atomic_t *val)
    8386{
    84         long r = -1;
     87        atomic_count_t r = -1;
    8588       
    8689        asm volatile (
    8790                "lock xaddq %[r], %[count]\n"
    88                 : [count] "+m" (val->count), [r] "+r" (r)
     91                : [count] "+m" (val->count),
     92                  [r] "+r" (r)
    8993        );
    9094       
     
    9599#define atomic_predec(val)  (atomic_postdec(val) - 1)
    96100
    97 static inline uint64_t test_and_set(atomic_t *val) {
    98         uint64_t v;
     101static inline atomic_count_t test_and_set(atomic_t *val)
     102{
     103        atomic_count_t v;
    99104       
    100105        asm volatile (
    101106                "movq $1, %[v]\n"
    102107                "xchgq %[v], %[count]\n"
    103                 : [v] "=r" (v), [count] "+m" (val->count)
     108                : [v] "=r" (v),
     109                  [count] "+m" (val->count)
    104110        );
    105111       
     
    107113}
    108114
    109 
    110115/** amd64 specific fast spinlock */
    111116static inline void atomic_lock_arch(atomic_t *val)
    112117{
    113         uint64_t tmp;
     118        atomic_count_t tmp;
    114119       
    115120        preemption_disable();
     
    125130                "testq %[tmp], %[tmp]\n"
    126131                "jnz 0b\n"
    127                 : [count] "+m" (val->count), [tmp] "=&r" (tmp)
     132                : [count] "+m" (val->count),
     133                  [tmp] "=&r" (tmp)
    128134        );
     135       
    129136        /*
    130137         * Prevent critical section code from bleeding out this way up.
  • kernel/arch/amd64/include/interrupt.h

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

    rf516bc2 rc2efbb4  
    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 *dst, size_t cnt, uint16_t x);
    41 extern void memsetb(void *dst, size_t cnt, uint8_t x);
    42 
    43 extern int memcmp(const void *a, const void *b, size_t cnt);
     40extern void memsetw(void *, size_t, uint16_t);
     41extern void memsetb(void *, size_t, uint8_t);
    4442
    4543#endif
  • kernel/arch/amd64/include/types.h

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

    rf516bc2 rc2efbb4  
    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
    230235}
    231236
  • kernel/arch/amd64/src/debugger.c

    rf516bc2 rc2efbb4  
    201201
    202202        /* Send IPI */
    203 #ifdef CONFIG_SMP
    204203//      ipi_broadcast(VECTOR_DEBUG_IPI);
    205 #endif 
    206204
    207205        return curidx;
     
    262260        spinlock_unlock(&bkpoint_lock);
    263261        interrupts_restore(ipl);
    264 #ifdef CONFIG_SMP
    265 //      ipi_broadcast(VECTOR_DEBUG_IPI);       
    266 #endif
     262//      ipi_broadcast(VECTOR_DEBUG_IPI);
    267263}
    268264
  • kernel/arch/arm32/include/atomic.h

    rf516bc2 rc2efbb4  
    4747 *
    4848 */
    49 static inline long atomic_add(atomic_t *val, int i)
     49static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
    5050{
    51         long ret;
    52 
    5351        /*
    5452         * This implementation is for UP pre-ARMv6 systems where we do not have
     
    5755        ipl_t ipl = interrupts_disable();
    5856        val->count += i;
    59         ret = val->count;
     57        atomic_count_t ret = val->count;
    6058        interrupts_restore(ipl);
    6159       
     
    6664 *
    6765 * @param val Variable to be incremented.
     66 *
    6867 */
    6968static inline void atomic_inc(atomic_t *val)
     
    7574 *
    7675 * @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 *
    8687 */
    87 static inline long atomic_preinc(atomic_t *val)
     88static inline atomic_count_t atomic_preinc(atomic_t *val)
    8889{
    8990        return atomic_add(val, 1);
     
    9495 * @param val Variable to be decremented.
    9596 * @return    Value after decrementation.
     97 *
    9698 */
    97 static inline long atomic_predec(atomic_t *val)
     99static inline atomic_count_t atomic_predec(atomic_t *val)
    98100{
    99101        return atomic_add(val, -1);
     
    104106 * @param val Variable to be incremented.
    105107 * @return    Value before incrementation.
     108 *
    106109 */
    107 static inline long atomic_postinc(atomic_t *val)
     110static inline atomic_count_t atomic_postinc(atomic_t *val)
    108111{
    109112        return atomic_add(val, 1) - 1;
     
    114117 * @param val Variable to be decremented.
    115118 * @return    Value before decrementation.
     119 *
    116120 */
    117 static inline long atomic_postdec(atomic_t *val)
     121static inline atomic_count_t atomic_postdec(atomic_t *val)
    118122{
    119123        return atomic_add(val, -1) + 1;
  • kernel/arch/arm32/include/memstr.h

    rf516bc2 rc2efbb4  
    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 *dst, size_t cnt, uint16_t x);
    42 extern void memsetb(void *dst, size_t cnt, uint8_t x);
    43 
    44 extern int memcmp(const void *a, const void *b, size_t cnt);
     41extern void memsetw(void *, size_t, uint16_t);
     42extern void memsetb(void *, size_t, uint8_t);
    4543
    4644#endif
  • kernel/arch/arm32/include/types.h

    rf516bc2 rc2efbb4  
    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;
     64typedef uint32_t atomic_count_t;
    6465
    6566typedef struct {
  • kernel/arch/ia32/include/atomic.h

    rf516bc2 rc2efbb4  
    4040#include <preemption.h>
    4141
    42 static inline void atomic_inc(atomic_t *val) {
     42static inline void atomic_inc(atomic_t *val)
     43{
    4344#ifdef CONFIG_SMP
    4445        asm volatile (
     
    5455}
    5556
    56 static inline void atomic_dec(atomic_t *val) {
     57static inline void atomic_dec(atomic_t *val)
     58{
    5759#ifdef CONFIG_SMP
    5860        asm volatile (
     
    6870}
    6971
    70 static inline long atomic_postinc(atomic_t *val)
     72static inline atomic_count_t atomic_postinc(atomic_t *val)
    7173{
    72         long r = 1;
     74        atomic_count_t r = 1;
    7375       
    7476        asm volatile (
    7577                "lock xaddl %[r], %[count]\n"
    76                 : [count] "+m" (val->count), [r] "+r" (r)
     78                : [count] "+m" (val->count),
     79                  [r] "+r" (r)
    7780        );
    7881       
     
    8083}
    8184
    82 static inline long atomic_postdec(atomic_t *val)
     85static inline atomic_count_t atomic_postdec(atomic_t *val)
    8386{
    84         long r = -1;
     87        atomic_count_t r = -1;
    8588       
    8689        asm volatile (
    8790                "lock xaddl %[r], %[count]\n"
    88                 : [count] "+m" (val->count), [r] "+r"(r)
     91                : [count] "+m" (val->count),
     92                  [r] "+r" (r)
    8993        );
    9094       
     
    9599#define atomic_predec(val)  (atomic_postdec(val) - 1)
    96100
    97 static inline uint32_t test_and_set(atomic_t *val) {
    98         uint32_t v;
     101static inline atomic_count_t test_and_set(atomic_t *val)
     102{
     103        atomic_count_t v;
    99104       
    100105        asm volatile (
    101106                "movl $1, %[v]\n"
    102107                "xchgl %[v], %[count]\n"
    103                 : [v] "=r" (v), [count] "+m" (val->count)
     108                : [v] "=r" (v),
     109                  [count] "+m" (val->count)
    104110        );
    105111       
     
    110116static inline void atomic_lock_arch(atomic_t *val)
    111117{
    112         uint32_t tmp;
     118        atomic_count_t tmp;
    113119       
    114120        preemption_disable();
     
    124130                "testl %[tmp], %[tmp]\n"
    125131                "jnz 0b\n"
    126                 : [count] "+m" (val->count), [tmp] "=&r" (tmp)
     132                : [count] "+m" (val->count),
     133                  [tmp] "=&r" (tmp)
    127134        );
     135       
    128136        /*
    129137         * Prevent critical section code from bleeding out this way up.
  • kernel/arch/ia32/include/interrupt.h

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

    rf516bc2 rc2efbb4  
    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 *dst, size_t cnt, uint16_t x);
    41 extern void memsetb(void *dst, size_t cnt, uint8_t x);
    42 
    43 extern int memcmp(const void *a, const void *b, size_t cnt);
     40extern void memsetw(void *, size_t, uint16_t);
     41extern void memsetb(void *, size_t, uint8_t);
    4442
    4543#endif
  • kernel/arch/ia32/include/types.h

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

    rf516bc2 rc2efbb4  
    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
    188193}
    189194
  • kernel/arch/ia32/src/smp/ipi.c

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

    rf516bc2 rc2efbb4  
    3636#define KERN_ia64_ATOMIC_H_
    3737
    38 static inline uint64_t test_and_set(atomic_t *val)
     38static inline atomic_count_t test_and_set(atomic_t *val)
    3939{
    40         uint64_t v;
    41                
     40        atomic_count_t v;
     41       
    4242        asm volatile (
    4343                "movl %[v] = 0x1;;\n"
     
    5353{
    5454        do {
    55                 while (val->count)
    56                         ;
     55                while (val->count);
    5756        } while (test_and_set(val));
    5857}
     
    6059static inline void atomic_inc(atomic_t *val)
    6160{
    62         long v;
     61        atomic_count_t v;
    6362       
    6463        asm volatile (
     
    7170static inline void atomic_dec(atomic_t *val)
    7271{
    73         long v;
     72        atomic_count_t v;
    7473       
    7574        asm volatile (
     
    8079}
    8180
    82 static inline long atomic_preinc(atomic_t *val)
     81static inline atomic_count_t atomic_preinc(atomic_t *val)
    8382{
    84         long v;
     83        atomic_count_t v;
    8584       
    8685        asm volatile (
     
    9392}
    9493
    95 static inline long atomic_predec(atomic_t *val)
     94static inline atomic_count_t atomic_predec(atomic_t *val)
    9695{
    97         long v;
     96        atomic_count_t v;
    9897       
    9998        asm volatile (
     
    106105}
    107106
    108 static inline long atomic_postinc(atomic_t *val)
     107static inline atomic_count_t atomic_postinc(atomic_t *val)
    109108{
    110         long v;
     109        atomic_count_t v;
    111110       
    112111        asm volatile (
     
    119118}
    120119
    121 static inline long atomic_postdec(atomic_t *val)
     120static inline atomic_count_t atomic_postdec(atomic_t *val)
    122121{
    123         long v;
     122        atomic_count_t v;
    124123       
    125124        asm volatile (
  • kernel/arch/ia64/include/interrupt.h

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

    rf516bc2 rc2efbb4  
    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 *dst, size_t cnt, uint16_t x);
    41 extern void memsetb(void *dst, size_t cnt, uint8_t x);
    42 
    43 extern int memcmp(const void *a, const void *b, size_t cnt);
     40extern void memsetw(void *, size_t, uint16_t);
     41extern void memsetb(void *, size_t, uint8_t);
    4442
    4543#endif
  • kernel/arch/ia64/include/types.h

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

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

    rf516bc2 rc2efbb4  
    2727 */
    2828
    29 /** @addtogroup mips32 
     29/** @addtogroup mips32
    3030 * @{
    3131 */
     
    5151 *
    5252 * @return Value after addition.
     53 *
    5354 */
    54 static inline long atomic_add(atomic_t *val, int i)
     55static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
    5556{
    56         long tmp, v;
     57        atomic_count_t tmp;
     58        atomic_count_t v;
    5759       
    5860        asm volatile (
     
    6466                "       beq %0, %4, 1b\n"   /* if the atomic operation failed, try again */
    6567                "       nop\n"
    66                 : "=&r" (tmp), "+m" (val->count), "=&r" (v)
    67                 : "r" (i), "i" (0)
     68                : "=&r" (tmp),
     69                  "+m" (val->count),
     70                  "=&r" (v)
     71                : "r" (i),
     72                  "i" (0)
    6873        );
    6974       
     
    7176}
    7277
    73 static inline uint32_t test_and_set(atomic_t *val) {
    74         uint32_t tmp, v;
     78static inline atomic_count_t test_and_set(atomic_t *val)
     79{
     80        atomic_count_t tmp;
     81        atomic_count_t v;
    7582       
    7683        asm volatile (
     
    8289                "       beqz %0, 1b\n"
    8390                "2:\n"
    84                 : "=&r" (tmp), "+m" (val->count), "=&r" (v)
     91                : "=&r" (tmp),
     92                  "+m" (val->count),
     93                  "=&r" (v)
    8594                : "i" (1)
    8695        );
     
    8998}
    9099
    91 static inline void atomic_lock_arch(atomic_t *val) {
     100static inline void atomic_lock_arch(atomic_t *val)
     101{
    92102        do {
    93                 while (val->count)
    94                         ;
     103                while (val->count);
    95104        } while (test_and_set(val));
    96105}
  • kernel/arch/mips32/include/memstr.h

    rf516bc2 rc2efbb4  
    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 *dst, size_t cnt, uint16_t x);
    41 extern void memsetb(void *dst, size_t cnt, uint8_t x);
    42 
    43 extern int memcmp(const void *a, const void *b, size_t cnt);
     40extern void memsetw(void *, size_t, uint16_t);
     41extern void memsetb(void *, size_t, uint8_t);
    4442
    4543#endif
  • kernel/arch/mips32/include/types.h

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

    rf516bc2 rc2efbb4  
    3333 */
    3434
    35 #include <arch/smp/dorder.h>
     35#include <smp/ipi.h>
     36
     37#ifdef CONFIG_SMP
    3638
    3739#define MSIM_DORDER_ADDRESS  0xB0000004
     
    3941void ipi_broadcast_arch(int ipi)
    4042{
    41 #ifdef CONFIG_SMP
    4243        *((volatile unsigned int *) MSIM_DORDER_ADDRESS) = 0x7FFFFFFF;
     44}
     45
    4346#endif
    44 }
    4547
    4648/** @}
  • kernel/arch/ppc32/include/atomic.h

    rf516bc2 rc2efbb4  
    2727 */
    2828
    29 /** @addtogroup ppc32   
     29/** @addtogroup ppc32
    3030 * @{
    3131 */
     
    3838static inline void atomic_inc(atomic_t *val)
    3939{
    40         long tmp;
    41 
     40        atomic_count_t tmp;
     41       
    4242        asm volatile (
    4343                "1:\n"
     
    4646                "stwcx. %0, 0, %2\n"
    4747                "bne- 1b"
    48                 : "=&r" (tmp), "=m" (val->count)
    49                 : "r" (&val->count), "m" (val->count)
     48                : "=&r" (tmp),
     49                  "=m" (val->count)
     50                : "r" (&val->count),
     51                  "m" (val->count)
    5052                : "cc"
    5153        );
     
    5456static inline void atomic_dec(atomic_t *val)
    5557{
    56         long tmp;
    57 
     58        atomic_count_t tmp;
     59       
    5860        asm volatile (
    5961                "1:\n"
    6062                "lwarx %0, 0, %2\n"
    6163                "addic %0, %0, -1\n"
    62                 "stwcx. %0, 0, %2\n"
     64                "stwcx. %0, 0, %2\n"
    6365                "bne- 1b"
    64                 : "=&r" (tmp), "=m" (val->count)
    65                 : "r" (&val->count), "m" (val->count)
     66                : "=&r" (tmp),
     67                  "=m" (val->count)
     68                : "r" (&val->count),
     69                  "m" (val->count)
    6670                : "cc"
    6771        );
    6872}
    6973
    70 static inline long atomic_postinc(atomic_t *val)
     74static inline atomic_count_t atomic_postinc(atomic_t *val)
    7175{
    7276        atomic_inc(val);
     
    7478}
    7579
    76 static inline long atomic_postdec(atomic_t *val)
     80static inline atomic_count_t atomic_postdec(atomic_t *val)
    7781{
    7882        atomic_dec(val);
     
    8084}
    8185
    82 static inline long atomic_preinc(atomic_t *val)
     86static inline atomic_count_t atomic_preinc(atomic_t *val)
    8387{
    8488        atomic_inc(val);
     
    8690}
    8791
    88 static inline long atomic_predec(atomic_t *val)
     92static inline atomic_count_t atomic_predec(atomic_t *val)
    8993{
    9094        atomic_dec(val);
  • kernel/arch/ppc32/include/memstr.h

    rf516bc2 rc2efbb4  
    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 *dst, size_t cnt, uint16_t x);
    41 extern void memsetb(void *dst, size_t cnt, uint8_t x);
    42 
    43 extern int memcmp(const void *a, const void *b, size_t cnt);
     40extern void memsetw(void *, size_t, uint16_t);
     41extern void memsetb(void *, size_t, uint8_t);
    4442
    4543#endif
  • kernel/arch/ppc32/include/types.h

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

    rf516bc2 rc2efbb4  
    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 *
    5051 */
    51 static inline long atomic_add(atomic_t *val, int i)
     52static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
    5253{
    53         uint64_t a, b;
    54 
     54        atomic_count_t a;
     55        atomic_count_t b;
     56       
    5557        do {
    56                 volatile uintptr_t x = (uint64_t) &val->count;
    57 
    58                 a = *((uint64_t *) x);
     58                volatile uintptr_t ptr = (uintptr_t) &val->count;
     59               
     60                a = *((atomic_count_t *) ptr);
    5961                b = a + i;
    60                 asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *)x)),
    61                     "+r" (b) : "r" (a));
     62               
     63                asm volatile (
     64                        "casx %0, %2, %1\n"
     65                        : "+m" (*((atomic_count_t *) ptr)),
     66                      "+r" (b)
     67                    : "r" (a)
     68                );
    6269        } while (a != b);
    63 
     70       
    6471        return a;
    6572}
    6673
    67 static inline long atomic_preinc(atomic_t *val)
     74static inline atomic_count_t atomic_preinc(atomic_t *val)
    6875{
    6976        return atomic_add(val, 1) + 1;
    7077}
    7178
    72 static inline long atomic_postinc(atomic_t *val)
     79static inline atomic_count_t atomic_postinc(atomic_t *val)
    7380{
    7481        return atomic_add(val, 1);
    7582}
    7683
    77 static inline long atomic_predec(atomic_t *val)
     84static inline atomic_count_t atomic_predec(atomic_t *val)
    7885{
    7986        return atomic_add(val, -1) - 1;
    8087}
    8188
    82 static inline long atomic_postdec(atomic_t *val)
     89static inline atomic_count_t atomic_postdec(atomic_t *val)
    8390{
    8491        return atomic_add(val, -1);
     
    95102}
    96103
    97 static inline long test_and_set(atomic_t *val)
     104static inline atomic_count_t test_and_set(atomic_t *val)
    98105{
    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 
     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       
    105116        return v;
    106117}
     
    108119static inline void atomic_lock_arch(atomic_t *val)
    109120{
    110         uint64_t tmp1 = 1;
    111         uint64_t tmp2 = 0;
    112 
    113         volatile uintptr_t x = (uint64_t) &val->count;
    114 
     121        atomic_count_t tmp1 = 1;
     122        atomic_count_t tmp2 = 0;
     123       
     124        volatile uintptr_t ptr = (uintptr_t) &val->count;
     125       
    115126        preemption_disable();
    116 
     127       
    117128        asm volatile (
    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)
     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)
    130144        );
    131145       
  • kernel/arch/sparc64/include/memstr.h

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

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

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

    rf516bc2 rc2efbb4  
    2727 */
    2828
    29 /** @addtogroup generic 
     29/** @addtogroup generic
    3030 * @{
    3131 */
     
    3636#define KERN_ATOMIC_H_
    3737
     38#include <arch/types.h>
     39
    3840typedef struct atomic {
    39         volatile long count;
     41        volatile atomic_count_t count;
    4042} atomic_t;
    4143
    4244#include <arch/atomic.h>
    4345
    44 static inline void atomic_set(atomic_t *val, long i)
     46static inline void atomic_set(atomic_t *val, atomic_count_t i)
    4547{
    4648        val->count = i;
    4749}
    4850
    49 static inline long atomic_get(atomic_t *val)
     51static inline atomic_count_t atomic_get(atomic_t *val)
    5052{
    5153        return val->count;
  • kernel/generic/include/console/console.h

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

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

    rf516bc2 rc2efbb4  
    2727 */
    2828
    29 /** @addtogroup generic 
     29/** @addtogroup generic
    3030 * @{
    3131 */
     
    3636#define KERN_PANIC_H_
    3737
     38#include <typedefs.h>
    3839#include <stacktrace.h>
    3940#include <print.h>
     
    4243#       define panic(format, ...) \
    4344                do { \
     45                        silent = false; \
    4446                        printf("Kernel panic in %s() at %s:%u.\n", \
    4547                            __func__, __FILE__, __LINE__); \
     
    5052#else
    5153#       define panic(format, ...) \
    52                 panic_printf("Kernel panic: " format "\n", ##__VA_ARGS__);
     54                do { \
     55                        silent = false; \
     56                        panic_printf("Kernel panic: " format "\n", ##__VA_ARGS__); \
     57                } while (0)
    5358#endif
     59
     60extern bool silent;
    5461
    5562extern void panic_printf(char *fmt, ...) __attribute__((noreturn));
  • kernel/generic/include/smp/ipi.h

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

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

    rf516bc2 rc2efbb4  
    146146                    (btree_key_t) pf, &nodep);
    147147               
    148                 if ((!parea) || (parea->frames < pages))
     148                if ((!parea) || (parea->frames < pages)) {
     149                        spinlock_unlock(&parea_lock);
    149150                        goto err;
     151                }
    150152               
    151153                spinlock_unlock(&parea_lock);
     
    153155        }
    154156       
     157        spinlock_unlock(&zones.lock);
    155158err:
    156         spinlock_unlock(&zones.lock);
    157159        interrupts_restore(ipl);
    158160        return ENOENT;
  • kernel/generic/src/proc/scheduler.c

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

    rf516bc2 rc2efbb4  
    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 
    4342
    4443/** Broadcast IPI message
     
    4948 *
    5049 * @bug The decision whether to actually send the IPI must be based
    51  *      on a different criterion. The current version has
    52  *      problems when some of the detected CPUs are marked
    53  *      disabled in machine configuration.
     50 *      on a different criterion. The current version has
     51 *      problems when some of the detected CPUs are marked
     52 *      disabled in machine configuration.
    5453 */
    5554void ipi_broadcast(int ipi)
     
    6059         * - if there is only one CPU but the kernel was compiled with CONFIG_SMP
    6160         */
    62 
     61       
    6362        if ((config.cpu_active > 1) && (config.cpu_active == config.cpu_count))
    6463                ipi_broadcast_arch(ipi);
  • kernel/test/fpu/fpu1_ia64.c

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

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

    rf516bc2 rc2efbb4  
    111111char *test_mips2(void)
    112112{
    113         unsigned int i, total = 0;
     113        unsigned int i;
     114        atomic_count_t total = 0;
    114115       
    115116        waitq_initialize(&can_start);
     
    138139       
    139140        TPRINTF("ok\n");
    140                
     141       
    141142        thread_sleep(1);
    142143        waitq_wakeup(&can_start, WAKEUP_ALL);
    143144       
    144         while (atomic_get(&threads_ok) != (long) total) {
     145        while (atomic_get(&threads_ok) != total) {
    145146                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_ok));
    146147                thread_sleep(1);
  • kernel/test/fpu/sse1.c

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

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

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

    rf516bc2 rc2efbb4  
    5555char *test_thread1(void)
    5656{
    57         unsigned int i, total = 0;
     57        unsigned int i;
     58        atomic_count_t total = 0;
    5859       
    5960        atomic_set(&finish, 1);
    6061        atomic_set(&threads_finished, 0);
    6162       
    62         for (i = 0; i < THREADS; i++) { 
     63        for (i = 0; i < THREADS; i++) {
    6364                thread_t *t;
    6465                if (!(t = thread_create(threadtest, NULL, TASK, 0, "threadtest", false))) {
     
    7475       
    7576        atomic_set(&finish, 0);
    76         while (atomic_get(&threads_finished) < ((long) total)) {
     77        while (atomic_get(&threads_finished) < total) {
    7778                TPRINTF("Threads left: %d\n", total - atomic_get(&threads_finished));
    7879                thread_sleep(1);
  • uspace/Makefile

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

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

    rf516bc2 rc2efbb4  
    2626         * @ingroup srvcs
    2727         */
    28        
     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
    29144        /**
    30145         * @cond amd64
  • uspace/lib/Makefile.common

    rf516bc2 rc2efbb4  
    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

    rf516bc2 rc2efbb4  
    3131
    3232USPACE_PREFIX = $(shell pwd)/../..
    33 #LIBS = $(LIBC_PREFIX)/libc.a
    3433LIBS =
    3534
     
    9190        generic/stacktrace.c
    9291
    93 ARCH_SOURCES = \
    94         arch/$(UARCH)/src/entry.s \
    95         arch/$(UARCH)/src/thread_entry.s
    96 
    9792SOURCES = \
    9893        $(GENERIC_SOURCES) \
  • uspace/lib/libc/arch/abs32le/src/thread_entry.c

    rf516bc2 rc2efbb4  
    11/*
    2  * Copyright (c) 2007 Martin Decky
     2 * Copyright (c) 2010 Martin Decky
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 #ifndef KERN_mips32_DORDER_H_
    30 #define KERN_mips32_DORDER_H_
     29/** @file
     30 */
    3131
    32 extern void ipi_broadcast_arch(int ipi);
     32#include <unistd.h>
     33#include <thread.h>
    3334
    34 #endif
     35void __thread_entry(void)
     36{
     37        __thread_main(NULL);
     38}
     39
     40/** @}
     41 */
  • uspace/lib/libc/arch/amd64/Makefile.inc

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

    rf516bc2 rc2efbb4  
    4242#include <atomicdflt.h>
    4343
    44 static inline void atomic_inc(atomic_t *val) {
    45         asm volatile ("lock incq %0\n" : "+m" (val->count));
     44static inline void atomic_inc(atomic_t *val)
     45{
     46        asm volatile (
     47                "lock incq %[count]\n"
     48                : [count] "+m" (val->count)
     49        );
    4650}
    4751
    48 static inline void atomic_dec(atomic_t *val) {
    49         asm volatile ("lock decq %0\n" : "+m" (val->count));
     52static inline void atomic_dec(atomic_t *val)
     53{
     54        asm volatile (
     55                "lock decq %[count]\n"
     56                : [count] "+m" (val->count)
     57        );
    5058}
    5159
    52 static inline long atomic_postinc(atomic_t *val)
     60static inline atomic_count_t atomic_postinc(atomic_t *val)
    5361{
    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 
    65 static inline long atomic_postdec(atomic_t *val)
    66 {
    67         long r;
     62        atomic_count_t r = 1;
    6863       
    6964        asm volatile (
    70                 "movq $-1, %0\n"
    71                 "lock xaddq %0, %1\n"
    72                 : "=r" (r), "+m" (val->count)
     65                "lock xaddq %[r], %[count]\n"
     66                : [count] "+m" (val->count),
     67                  [r] "+r" (r)
    7368        );
    7469       
     
    7671}
    7772
    78 #define atomic_preinc(val) (atomic_postinc(val) + 1)
    79 #define atomic_predec(val) (atomic_postdec(val) - 1)
     73static 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)
    8088
    8189#endif
  • uspace/lib/libc/arch/amd64/include/types.h

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

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

    rf516bc2 rc2efbb4  
    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, long ov, long nv)
    49 {
    50         long ret = 0;
    51 
     48static inline bool cas(atomic_t *val, atomic_count_t ov, atomic_count_t nv)
     49{
     50        atomic_count_t 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 ("" ::: "memory");
     79        asm volatile (
     80                "" ::: "memory"
     81        );
    8082        ras_page[1] = 0xffffffff;
    81 
     83       
    8284        return (bool) ret;
    8385}
     
    8991 *
    9092 * @return Value after addition.
    91  */
    92 static inline long atomic_add(atomic_t *val, int i)
    93 {
    94         long ret = 0;
    95 
     93 *
     94 */
     95static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
     96{
     97        atomic_count_t ret = 0;
     98       
    9699        /*
    97100         * The following instructions between labels 1 and 2 constitute a
     
    115118                : [imm] "r" (i)
    116119        );
    117 
     120       
    118121        ras_page[0] = 0;
    119         asm volatile ("" ::: "memory");
     122        asm volatile (
     123                "" ::: "memory"
     124        );
    120125        ras_page[1] = 0xffffffff;
    121 
     126       
    122127        return ret;
    123128}
     
    127132 *
    128133 * @param val Variable to be incremented.
     134 *
    129135 */
    130136static inline void atomic_inc(atomic_t *val)
     
    137143 *
    138144 * @param val Variable to be decremented.
     145 *
    139146 */
    140147static inline void atomic_dec(atomic_t *val)
     
    148155 * @param val Variable to be incremented.
    149156 * @return    Value after incrementation.
    150  */
    151 static inline long atomic_preinc(atomic_t *val)
     157 *
     158 */
     159static inline atomic_count_t atomic_preinc(atomic_t *val)
    152160{
    153161        return atomic_add(val, 1);
     
    159167 * @param val Variable to be decremented.
    160168 * @return    Value after decrementation.
    161  */
    162 static inline long atomic_predec(atomic_t *val)
     169 *
     170 */
     171static inline atomic_count_t atomic_predec(atomic_t *val)
    163172{
    164173        return atomic_add(val, -1);
     
    170179 * @param val Variable to be incremented.
    171180 * @return    Value before incrementation.
    172  */
    173 static inline long atomic_postinc(atomic_t *val)
     181 *
     182 */
     183static inline atomic_count_t atomic_postinc(atomic_t *val)
    174184{
    175185        return atomic_add(val, 1) - 1;
     
    181191 * @param val Variable to be decremented.
    182192 * @return    Value before decrementation.
    183  */
    184 static inline long atomic_postdec(atomic_t *val)
     193 *
     194 */
     195static inline atomic_count_t atomic_postdec(atomic_t *val)
    185196{
    186197        return atomic_add(val, -1) + 1;
  • uspace/lib/libc/arch/arm32/include/types.h

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

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

    rf516bc2 rc2efbb4  
    4040#include <atomicdflt.h>
    4141
    42 static inline void atomic_inc(atomic_t *val) {
    43         asm volatile ("lock incl %0\n" : "+m" (val->count));
     42static inline void atomic_inc(atomic_t *val)
     43{
     44        asm volatile (
     45                "lock incl %[count]\n"
     46                : [count] "+m" (val->count)
     47        );
    4448}
    4549
    46 static inline void atomic_dec(atomic_t *val) {
    47         asm volatile ("lock decl %0\n" : "+m" (val->count));
     50static inline void atomic_dec(atomic_t *val)
     51{
     52        asm volatile (
     53                "lock decl %[count]\n"
     54                : [count] "+m" (val->count)
     55        );
    4856}
    4957
    50 static inline long atomic_postinc(atomic_t *val)
     58static inline atomic_count_t atomic_postinc(atomic_t *val)
    5159{
    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 
    63 static inline long atomic_postdec(atomic_t *val)
    64 {
    65         long r;
     60        atomic_count_t r = 1;
    6661       
    6762        asm volatile (
    68                 "movl $-1, %0\n"
    69                 "lock xaddl %0, %1\n"
    70                 : "=r" (r), "+m" (val->count)
     63                "lock xaddl %[r], %[count]\n"
     64                : [count] "+m" (val->count),
     65                  [r] "+r" (r)
    7166        );
    7267       
     
    7469}
    7570
    76 #define atomic_preinc(val) (atomic_postinc(val) + 1)
    77 #define atomic_predec(val) (atomic_postdec(val) - 1)
     71static 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)
    7886
    7987#endif
  • uspace/lib/libc/arch/ia32/include/types.h

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

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

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

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

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

    rf516bc2 rc2efbb4  
    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 *
    5859 */
    59 static inline long atomic_add(atomic_t *val, int i)
     60static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
    6061{
    61         long tmp, v;
    62 
     62        atomic_count_t tmp;
     63        atomic_count_t v;
     64       
    6365        asm volatile (
    6466                "1:\n"
     
    7072                /*      nop     */              /* nop is inserted automatically by compiler */
    7173                "       nop\n"
    72                 : "=&r" (tmp), "+m" (val->count), "=&r" (v)
    73                 : "r" (i), "i" (0)
    74                 );
    75 
     74                : "=&r" (tmp),
     75                  "+m" (val->count),
     76                  "=&r" (v)
     77                : "r" (i),
     78                  "i" (0)
     79        );
     80       
    7681        return v;
    7782}
  • uspace/lib/libc/arch/mips32/include/types.h

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

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

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

    rf516bc2 rc2efbb4  
    2727 */
    2828
    29 /** @addtogroup libcppc32       
     29/** @addtogroup libcppc32
    3030 * @{
    3131 */
     
    4242static inline void atomic_inc(atomic_t *val)
    4343{
    44         long tmp;
    45 
     44        atomic_count_t tmp;
     45       
    4646        asm volatile (
    4747                "1:\n"
     
    5050                "stwcx. %0, 0, %2\n"
    5151                "bne- 1b"
    52                 : "=&r" (tmp), "=m" (val->count)
    53                 : "r" (&val->count), "m" (val->count)
    54                 : "cc");
     52                : "=&r" (tmp),
     53                  "=m" (val->count)
     54                : "r" (&val->count),
     55                  "m" (val->count)
     56                : "cc"
     57        );
    5558}
    5659
    5760static inline void atomic_dec(atomic_t *val)
    5861{
    59         long tmp;
    60 
     62        atomic_count_t tmp;
     63       
    6164        asm volatile (
    6265                "1:\n"
    6366                "lwarx %0, 0, %2\n"
    6467                "addic %0, %0, -1\n"
    65                 "stwcx. %0, 0, %2\n"
     68                "stwcx. %0, 0, %2\n"
    6669                "bne- 1b"
    67                 : "=&r" (tmp), "=m" (val->count)
    68                 : "r" (&val->count), "m" (val->count)
    69                 : "cc");
     70                : "=&r" (tmp),
     71                  "=m" (val->count)
     72                : "r" (&val->count),
     73                  "m" (val->count)
     74                : "cc"
     75        );
    7076}
    7177
    72 static inline long atomic_postinc(atomic_t *val)
     78static inline atomic_count_t atomic_postinc(atomic_t *val)
    7379{
    7480        atomic_inc(val);
     
    7682}
    7783
    78 static inline long atomic_postdec(atomic_t *val)
     84static inline atomic_count_t atomic_postdec(atomic_t *val)
    7985{
    8086        atomic_dec(val);
     
    8288}
    8389
    84 static inline long atomic_preinc(atomic_t *val)
     90static inline atomic_count_t atomic_preinc(atomic_t *val)
    8591{
    8692        atomic_inc(val);
     
    8894}
    8995
    90 static inline long atomic_predec(atomic_t *val)
     96static inline atomic_count_t atomic_predec(atomic_t *val)
    9197{
    9298        atomic_dec(val);
  • uspace/lib/libc/arch/ppc32/include/types.h

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

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

    rf516bc2 rc2efbb4  
    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 *
    5152 */
    52 static inline long atomic_add(atomic_t *val, int i)
     53static inline atomic_count_t atomic_add(atomic_t *val, atomic_count_t i)
    5354{
    54         uint64_t a, b;
    55 
     55        atomic_count_t a;
     56        atomic_count_t b;
     57       
    5658        do {
    57                 volatile uintptr_t x = (uint64_t) &val->count;
    58 
    59                 a = *((uint64_t *) x);
     59                volatile uintptr_t ptr = (uintptr_t) &val->count;
     60               
     61                a = *((atomic_count_t *) ptr);
    6062                b = a + i;
    61                 asm volatile ("casx %0, %2, %1\n" : "+m" (*((uint64_t *)x)), "+r" (b) : "r" (a));
     63               
     64                asm volatile (
     65                        "casx %0, %2, %1\n"
     66                        : "+m" (*((atomic_count_t *) ptr)),
     67                          "+r" (b)
     68                        : "r" (a)
     69                );
    6270        } while (a != b);
    63 
     71       
    6472        return a;
    6573}
    6674
    67 static inline long atomic_preinc(atomic_t *val)
     75static inline atomic_count_t atomic_preinc(atomic_t *val)
    6876{
    6977        return atomic_add(val, 1) + 1;
    7078}
    7179
    72 static inline long atomic_postinc(atomic_t *val)
     80static inline atomic_count_t atomic_postinc(atomic_t *val)
    7381{
    7482        return atomic_add(val, 1);
    7583}
    7684
    77 static inline long atomic_predec(atomic_t *val)
     85static inline atomic_count_t atomic_predec(atomic_t *val)
    7886{
    7987        return atomic_add(val, -1) - 1;
    8088}
    8189
    82 static inline long atomic_postdec(atomic_t *val)
     90static inline atomic_count_t atomic_postdec(atomic_t *val)
    8391{
    8492        return atomic_add(val, -1);
  • uspace/lib/libc/arch/sparc64/include/types.h

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

    rf516bc2 rc2efbb4  
    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 */
     1114int
     1115async_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 */
     1141int
     1142async_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
    11031157/** Wrapper for making IPC_M_SHARE_IN calls using the async framework.
    11041158 *
  • uspace/lib/libc/generic/futex.c

    rf516bc2 rc2efbb4  
    6868int futex_down(futex_t *futex)
    6969{
    70         if (atomic_predec(futex) < 0)
     70        if ((atomic_signed_t) 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_postinc(futex) < 0)
     84        if ((atomic_signed_t) atomic_postinc(futex) < 0)
    8585                return __SYSCALL1(SYS_FUTEX_WAKEUP, (sysarg_t) &futex->count);
    8686               
  • uspace/lib/libc/include/async.h

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

    rf516bc2 rc2efbb4  
    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>
    4243#include <bool.h>
    4344
    4445typedef struct atomic {
    45         volatile long count;
     46        volatile atomic_count_t count;
    4647} atomic_t;
    4748
    48 static inline void atomic_set(atomic_t *val, long i)
     49static inline void atomic_set(atomic_t *val, atomic_count_t i)
    4950{
    50         val->count = i;
     51        val->count = i;
    5152}
    5253
    53 static inline long atomic_get(atomic_t *val)
     54static inline atomic_count_t atomic_get(atomic_t *val)
    5455{
    55         return val->count;
     56        return val->count;
    5657}
    5758
    58 #ifndef CAS 
    59 static inline bool cas(atomic_t *val, long ov, long nv)
     59#ifndef CAS
     60static inline bool cas(atomic_t *val, atomic_count_t ov, atomic_count_t nv)
    6061{
    6162        return __sync_bool_compare_and_swap(&val->count, ov, nv);
  • uspace/lib/libc/include/ipc/services.h

    rf516bc2 rc2efbb4  
    4747        SERVICE_FHC,
    4848        SERVICE_OBIO,
    49         SERVICE_CLIPBOARD
     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
    5062} services_t;
    5163
  • uspace/lib/libc/include/stacktrace.h

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

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

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