diff options
Diffstat (limited to 'libc/sysdeps/linux/bfin/bits')
| -rw-r--r-- | libc/sysdeps/linux/bfin/bits/kernel_types.h | 5 | ||||
| -rw-r--r-- | libc/sysdeps/linux/bfin/bits/syscalls.h | 30 | ||||
| -rw-r--r-- | libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h | 42 |
3 files changed, 75 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/bfin/bits/kernel_types.h b/libc/sysdeps/linux/bfin/bits/kernel_types.h index 520daf184..702a5f03a 100644 --- a/libc/sysdeps/linux/bfin/bits/kernel_types.h +++ b/libc/sysdeps/linux/bfin/bits/kernel_types.h @@ -1,6 +1,6 @@ /* Note that we use the exact same include guard #define names - * as asm/posix_types.h. This will avoid gratuitous conflicts - * with the posix_types.h kernel header, and will ensure that + * as asm/posix_types.h. This will avoid gratuitous conflicts + * with the posix_types.h kernel header, and will ensure that * our private content, and not the kernel header, will win. * -Erik */ @@ -31,6 +31,7 @@ typedef unsigned int __kernel_gid32_t; typedef unsigned short __kernel_old_uid_t; typedef unsigned short __kernel_old_gid_t; typedef long long __kernel_loff_t; +typedef __kernel_dev_t __kernel_old_dev_t; typedef struct { #ifdef __USE_ALL diff --git a/libc/sysdeps/linux/bfin/bits/syscalls.h b/libc/sysdeps/linux/bfin/bits/syscalls.h index 82692fc65..d8d628cab 100644 --- a/libc/sysdeps/linux/bfin/bits/syscalls.h +++ b/libc/sysdeps/linux/bfin/bits/syscalls.h @@ -139,5 +139,35 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ __syscall_return(type,__res); \ } +#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ +type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \ + long __res; \ + __asm__ __volatile__ ( \ + "[--sp] = r5;\n\t" \ + "[--sp] = r4;\n\t" \ + "[--sp] = r3;\n\t" \ + "r4=%6;\n\t" \ + "r3=%5;\n\t" \ + "r2=%4;\n\t" \ + "r1=%3;\n\t" \ + "r0=%2;\n\t" \ + "P0=%1;\n\t" \ + "excpt 0;\n\t" \ + "%0=r0;\n\t" \ + "r3 = [sp++];\n\t" \ + "r4 = [sp++];\n\t" \ + "r5 = [sp++];\n\t" \ + : "=da" (__res) \ + : "i" (__NR_##name), \ + "rm" ((long)(arg1)), \ + "rm" ((long)(arg2)), \ + "rm" ((long)(arg3)), \ + "rm" ((long)(arg4)), \ + "rm" ((long)(arg5)), \ + "rm" ((long)(arg6)) \ + : "CC","R0","R1","R2","R3","R4","R5","P0"); \ +__syscall_return(type,__res); \ +} + #endif /* __ASSEMBLER__ */ #endif /* _BITS_SYSCALLS_H */ diff --git a/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h b/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h new file mode 100644 index 000000000..1b40e32a2 --- /dev/null +++ b/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h @@ -0,0 +1,42 @@ +/* + * Track misc arch-specific features that aren't config options + */ + +#ifndef _BITS_UCLIBC_ARCH_FEATURES_H +#define _BITS_UCLIBC_ARCH_FEATURES_H + +/* instruction used when calling abort() to kill yourself */ +/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/ +#undef __UCLIBC_ABORT_INSTRUCTION__ + +/* can your target use syscall6() for mmap ? */ +#undef __UCLIBC_MMAP_HAS_6_ARGS__ + +/* does your target use syscall4() for truncate64 ? (32bit arches only) */ +#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__ + +/* does your target have a broken create_module() ? */ +#undef __UCLIBC_BROKEN_CREATE_MODULE__ + +/* does your target prefix all symbols with an _ ? */ +#undef __UCLIBC_NO_UNDERSCORES__ + +/* does your target have an asm .set ? */ +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__ + +/* define if target doesn't like .global */ +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__ + +/* define if target supports .weak */ +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__ + +/* define if target supports .weakext */ +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__ + +/* needed probably only for ppc64 */ +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__ + +/* define if target supports IEEE signed zero floats */ +#define __UCLIBC_HAVE_SIGNED_ZERO__ + +#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */ |
