check for MAP_FAILED, not NULL
gitignore: initial checkin
ARM: initial checkin of <arm-features.h>
ARM: fixed *jmp() functions

With soft-fp, the previous __sigsetjmp() implementation modifies a
buffer pointing 48 bytes before the correct one.  Was broken at
2001-03-16 by the "add several functions to make busybox compile and
partially link" commit...

Nevertheless, there are further patches required which save the
co-processor registers (e.g. the iwmmxt ones) of recent cpus.  The 'lfm'
in the __SOFTFP__ clause is very ancient and will not work with recent
hard-fp capable cpus.

Patch adds testsuite programs for sigjmp() + sigsetjmp() functionality.

Signed-off-by: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
ARM: added neon-fp support in sigjmp code and enhanced testsuite to verify that fp registers are restored correctly
fadvise: optimized C wrapper and fixed posix_fadvise() implementation

Include fadvise64_64() headers only when required and #define
_LINUX_SOURCE.

Use assembly '.set' to declare posix_fadvise(); this copies symbol size
information and does not rely on alignment of the fadvise64() syscall.

Signed-off-by: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
time: use common implementation calling gettimeofday()

Instead of providing yet another arm/__time.c file for ARM-EABI, this
patch merges existing time(2) implementations (which did all the same
thing but with different code) into one global source file.  Build of
it depends on the existence of the __NR_time symbol.

The x64_64 implementation of time.S was moved to __time.S and an empty
time.S file was added to build from the correct VPATH.
ARM: use a common implemention for syscall_weak for EABI and OEBI by calling syscall() macro
ARM: unified declaration of assembler function

Previously, specification of alignment and symbol function differed
without any reason and the symbol size was sometimes missing too.

Patch uses FUNC_START and FUNC_END macros to declare assembler
functions in a common way.
ARM: replace 'mov pc, lr' and 'bx lr' with RET from <arm-features.h>

Signed-off-by: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
ARM: use thumb compatible __testandset() implementation

NOTE: this is not really complete.  Although the pthread implementation
calls this function to set a spinlock, this lock is cleared by writing
a value directly into it.  This will break the strex functionality.

pthread should be rewritten to use the gcc intrinsics
__sync_lock_test_and_set() and __sync_lock_release().
ARM: added some .size annotation
ARM-EABI: added __unified_syscall_swi which saves one instruction per syscall
ARM-EABI: removed __unified_syscall4; it is not for ARM EABI and its semantic conflicts with __unified_syscall_swi
ARM-EABI: fixed and optimized mmap(2) syscall

Previous implementation called __NR_mmap2 without converting the
offset argument into pages and did not handled the error.

Use the common mmap(2) implemention instead of.
ARM: fixed classification of sendto() + recvfrom() syscalls

(Use number of parameters here to be prepared for further optimizations)
implement a sane nice based on getpriority and setpriority (POSIX requires nice to return the new nice value, but the syscall doesn't, so we use {set,get}priority and implement nice in libc)
seekdir/telldir: fixed prototypes

The position used by seekdir(3) and telldir(3) is of type 'long', not of
type 'off_t'.

Signed-off-by: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
readdir: major fixes and improvements

Depending whether getdents(2) or getdents64(2) were called, the
internal __dirstream buffer contains objects of different types:

--- fs/readdir.c ---
struct linux_dirent {
        unsigned long   d_ino;
        unsigned long   d_off;
        unsigned short  d_reclen;
        char            d_name[1];
};

SYSCALL_DEFINE3(getdents, unsigned int, fd,
                struct linux_dirent __user *, dirent, unsigned int, count)

--- include/linux/dirent.h ---
struct linux_dirent64 {
        u64             d_ino;
        s64             d_off;
        unsigned short  d_reclen;
        unsigned char   d_type;
        char            d_name[0];
};

SYSCALL_DEFINE3(getdents64, unsigned int, fd,
                struct linux_dirent64 __user *, dirent, unsigned int, count)

Existing code mixed casts between these types and even with userspace
types which causes problems when 'long' is not a 64 bit type.

The patch:

* uses correct datatypes in readdir*(3), telldir() and seekdir()

* adds a flag telling whether getdents(2) or getdents64(2) were used
  to fill dir ents buffer

* fixes prototypes of getdents64(2) and getdents(2)

* adds testsuite programs
Fixed SMP build

'make -j' fails usually because $(OBJDIR) was not created yet when
compiling files.

This patch adds a $(OBJDIR)/.dirstamp target which is added as a
dependency for object files and executes an 'mkdir'.

Ditto for $(PICODIR)