mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
[PATCH] oops forgot to add the new klibc/include directory
This commit is contained in:
parent
a062277768
commit
60d1e263f0
13
klibc/include/alloca.h
Normal file
13
klibc/include/alloca.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* alloca.h
|
||||
*
|
||||
* Just call the builtin alloca() function
|
||||
*/
|
||||
|
||||
#ifndef _ALLOCA_H
|
||||
#define _ALLOCA_H
|
||||
|
||||
#define alloca(size) __builtin_alloca(size)
|
||||
|
||||
#endif /* _ALLOCA_H */
|
||||
|
33
klibc/include/arch/alpha/klibc/archsetjmp.h
Normal file
33
klibc/include/arch/alpha/klibc/archsetjmp.h
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* arch/alpha/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __s0;
|
||||
unsigned long __s1;
|
||||
unsigned long __s2;
|
||||
unsigned long __s3;
|
||||
unsigned long __s4;
|
||||
unsigned long __s5;
|
||||
unsigned long __fp;
|
||||
unsigned long __ra;
|
||||
unsigned long __gp;
|
||||
unsigned long __sp;
|
||||
|
||||
unsigned long __f2;
|
||||
unsigned long __f3;
|
||||
unsigned long __f4;
|
||||
unsigned long __f5;
|
||||
unsigned long __f6;
|
||||
unsigned long __f7;
|
||||
unsigned long __f8;
|
||||
unsigned long __f9;
|
||||
};
|
||||
|
||||
/* Must be an array so it will decay to a pointer when a function is called */
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _KLIBC_ARCHSETJMP_H */
|
13
klibc/include/arch/alpha/klibc/archsignal.h
Normal file
13
klibc/include/arch/alpha/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/alpha/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
26
klibc/include/arch/alpha/klibc/archstat.h
Normal file
26
klibc/include/arch/alpha/klibc/archstat.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long st_dev;
|
||||
unsigned long st_ino;
|
||||
unsigned long st_rdev;
|
||||
long st_size;
|
||||
unsigned long st_blocks;
|
||||
|
||||
unsigned int st_mode;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
unsigned int st_blksize;
|
||||
unsigned int st_nlink;
|
||||
unsigned int __pad0;
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
long __unused[3];
|
||||
};
|
||||
|
||||
#endif
|
53
klibc/include/arch/alpha/klibc/archsys.h
Normal file
53
klibc/include/arch/alpha/klibc/archsys.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* arch/alpha/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* Alpha has some bizarre Tru64-derived system calls which return two
|
||||
different values in $0 and $20(!), respectively. The standard
|
||||
macros can't deal with these; even the ones that give the right
|
||||
return value have the wrong clobbers. */
|
||||
|
||||
#define _syscall0_dual0(type, name) \
|
||||
type name(void) \
|
||||
{ \
|
||||
long _sc_ret, _sc_err; \
|
||||
{ \
|
||||
register long _sc_0 __asm__("$0"); \
|
||||
register long _sc_19 __asm__("$19"); \
|
||||
register long _sc_20 __asm__("$20"); \
|
||||
\
|
||||
_sc_0 = __NR_##name; \
|
||||
__asm__("callsys" \
|
||||
: "=r"(_sc_0), "=r"(_sc_19), "=r" (_sc_20) \
|
||||
: "0"(_sc_0) \
|
||||
: _syscall_clobbers); \
|
||||
_sc_ret = _sc_0, _sc_err = _sc_19; (void)(_sc_20); \
|
||||
} \
|
||||
_syscall_return(type); \
|
||||
}
|
||||
|
||||
#define _syscall0_dual1(type, name) \
|
||||
type name(void) \
|
||||
{ \
|
||||
long _sc_ret, _sc_err; \
|
||||
{ \
|
||||
register long _sc_0 __asm__("$0"); \
|
||||
register long _sc_19 __asm__("$19"); \
|
||||
register long _sc_20 __asm__("$20"); \
|
||||
\
|
||||
_sc_0 = __NR_##name; \
|
||||
__asm__("callsys" \
|
||||
: "=r"(_sc_0), "=r"(_sc_19), "=r" (_sc_20) \
|
||||
: "0"(_sc_0) \
|
||||
: _syscall_clobbers); \
|
||||
_sc_ret = _sc_20, _sc_err = _sc_19; (void)(_sc_0); \
|
||||
} \
|
||||
_syscall_return(type); \
|
||||
}
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
44
klibc/include/arch/alpha/machine/asm.h
Normal file
44
klibc/include/arch/alpha/machine/asm.h
Normal file
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* machine/asm.h
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_ASM_H
|
||||
#define _MACHINE_ASM_H
|
||||
|
||||
/* Standard aliases for Alpha register names */
|
||||
|
||||
#define v0 $0
|
||||
#define t0 $1
|
||||
#define t1 $2
|
||||
#define t2 $3
|
||||
#define t3 $4
|
||||
#define t4 $5
|
||||
#define t5 $6
|
||||
#define t6 $7
|
||||
#define t7 $8
|
||||
#define s0 $9
|
||||
#define s1 $10
|
||||
#define s2 $11
|
||||
#define s3 $12
|
||||
#define s4 $13
|
||||
#define s5 $14
|
||||
#define fp $15
|
||||
#define a0 $16
|
||||
#define a1 $17
|
||||
#define a2 $18
|
||||
#define a3 $19
|
||||
#define a4 $20
|
||||
#define a5 $21
|
||||
#define t8 $22
|
||||
#define t9 $23
|
||||
#define t10 $24
|
||||
#define t11 $25
|
||||
#define ra $26
|
||||
#define t12 $27 /* t12 and pv are both used for $27 */
|
||||
#define pv $27 /* t12 and pv are both used for $27 */
|
||||
#define at $28
|
||||
#define gp $29
|
||||
#define sp $30
|
||||
#define zero $31
|
||||
|
||||
#endif /* _MACHINE_ASM_H */
|
14
klibc/include/arch/arm/klibc/archsetjmp.h
Normal file
14
klibc/include/arch/arm/klibc/archsetjmp.h
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* arch/i386/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned int regs[10];
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/arm/klibc/archsignal.h
Normal file
13
klibc/include/arch/arm/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/arm/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
45
klibc/include/arch/arm/klibc/archstat.h
Normal file
45
klibc/include/arch/arm/klibc/archstat.h
Normal file
@ -0,0 +1,45 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#include <endian.h>
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1, hence the absolutely
|
||||
* insane amounts of padding around dev_t's.
|
||||
* Note: The kernel zero's the padded region because glibc might read them
|
||||
* in the hope that the kernel has stretched to using larger sizes.
|
||||
*/
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
unsigned char __pad0[4];
|
||||
|
||||
unsigned long __st_ino;
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
|
||||
unsigned long st_uid;
|
||||
unsigned long st_gid;
|
||||
|
||||
unsigned long long st_rdev;
|
||||
unsigned char __pad3[4];
|
||||
|
||||
long long st_size;
|
||||
unsigned long st_blksize;
|
||||
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned long __pad4; /* Future possible st_blocks hi bits */
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
#else /* Must be little */
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
unsigned long __pad4; /* Future possible st_blocks hi bits */
|
||||
#endif
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned long long st_ino;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/arm/klibc/archsys.h
Normal file
12
klibc/include/arch/arm/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/cris/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
24
klibc/include/arch/cris/klibc/archsetjmp.h
Normal file
24
klibc/include/arch/cris/klibc/archsetjmp.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* arch/cris/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __r0;
|
||||
unsigned long __r1;
|
||||
unsigned long __r2;
|
||||
unsigned long __r3;
|
||||
unsigned long __r4;
|
||||
unsigned long __r5;
|
||||
unsigned long __r6;
|
||||
unsigned long __r7;
|
||||
unsigned long __r8;
|
||||
unsigned long __sp;
|
||||
unsigned long __srp;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _KLIBC_ARCHSETJMP_H */
|
13
klibc/include/arch/cris/klibc/archsignal.h
Normal file
13
klibc/include/arch/cris/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/cris/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
37
klibc/include/arch/cris/klibc/archstat.h
Normal file
37
klibc/include/arch/cris/klibc/archstat.h
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1, hence the absolutely
|
||||
* insane amounts of padding around dev_t's.
|
||||
*/
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
unsigned char __pad0[4];
|
||||
|
||||
unsigned long __st_ino;
|
||||
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
|
||||
unsigned long st_uid;
|
||||
unsigned long st_gid;
|
||||
|
||||
unsigned long long st_rdev;
|
||||
unsigned char __pad3[4];
|
||||
|
||||
long long st_size;
|
||||
unsigned long st_blksize;
|
||||
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
unsigned long __pad4; /* future possible st_blocks high bits */
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned long long st_ino;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/cris/klibc/archsys.h
Normal file
12
klibc/include/arch/cris/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/cris/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
19
klibc/include/arch/i386/klibc/archsetjmp.h
Normal file
19
klibc/include/arch/i386/klibc/archsetjmp.h
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* arch/i386/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned int __ebx;
|
||||
unsigned int __esp;
|
||||
unsigned int __ebp;
|
||||
unsigned int __esi;
|
||||
unsigned int __edi;
|
||||
unsigned int __eip;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/i386/klibc/archsignal.h
Normal file
13
klibc/include/arch/i386/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/i386/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
37
klibc/include/arch/i386/klibc/archstat.h
Normal file
37
klibc/include/arch/i386/klibc/archstat.h
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1, hence the absolutely
|
||||
* insane amounts of padding around dev_t's.
|
||||
*/
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
unsigned char __pad0[4];
|
||||
|
||||
unsigned long __st_ino;
|
||||
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
|
||||
unsigned long st_uid;
|
||||
unsigned long st_gid;
|
||||
|
||||
unsigned long long st_rdev;
|
||||
unsigned char __pad3[4];
|
||||
|
||||
long long st_size;
|
||||
unsigned long st_blksize;
|
||||
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
unsigned long __pad4; /* future possible st_blocks high bits */
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned long long st_ino;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/i386/klibc/archsys.h
Normal file
12
klibc/include/arch/i386/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/cris/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
16
klibc/include/arch/i386/klibc/diverr.h
Normal file
16
klibc/include/arch/i386/klibc/diverr.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* arch/i386/include/klibc/diverr.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_DIVERR_H
|
||||
#define _KLIBC_DIVERR_H
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
static __inline__ void
|
||||
__divide_error(void)
|
||||
{
|
||||
asm volatile("divl %0" :: "rm" (0) : "eax", "edx");
|
||||
}
|
||||
|
||||
#endif /* _KLIBC_DIVERR_H */
|
126
klibc/include/arch/i386/sys/io.h
Normal file
126
klibc/include/arch/i386/sys/io.h
Normal file
@ -0,0 +1,126 @@
|
||||
#ident "$Id: io.h,v 1.2 2004/01/25 07:49:39 hpa Exp $"
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom
|
||||
* the Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall
|
||||
* be included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* sys/io.h for the i386 architecture
|
||||
*
|
||||
* Basic I/O macros
|
||||
*/
|
||||
|
||||
#ifndef _SYS_IO_H
|
||||
#define _SYS_IO_H 1
|
||||
|
||||
/* I/O-related system calls */
|
||||
|
||||
int iopl(int);
|
||||
int ioperm(unsigned long, unsigned long, int);
|
||||
|
||||
/* Basic I/O macros */
|
||||
|
||||
static __inline__ void
|
||||
outb(unsigned char __v, unsigned short __p)
|
||||
{
|
||||
asm volatile("outb %0,%1" : : "a" (__v), "dN" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outw(unsigned short __v, unsigned short __p)
|
||||
{
|
||||
asm volatile("outw %0,%1" : : "a" (__v), "dN" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outl(unsigned int __v, unsigned short __p)
|
||||
{
|
||||
asm volatile("outl %0,%1" : : "a" (__v), "dN" (__p));
|
||||
}
|
||||
|
||||
static __inline__ unsigned char
|
||||
inb(unsigned short __p)
|
||||
{
|
||||
unsigned char __v;
|
||||
asm volatile("inb %1,%0" : "=a" (__v) : "dN" (__p));
|
||||
return __v;
|
||||
}
|
||||
|
||||
static __inline__ unsigned short
|
||||
inw(unsigned short __p)
|
||||
{
|
||||
unsigned short __v;
|
||||
asm volatile("inw %1,%0" : "=a" (__v) : "dN" (__p));
|
||||
return __v;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int
|
||||
inl(unsigned short __p)
|
||||
{
|
||||
unsigned int __v;
|
||||
asm volatile("inl %1,%0" : "=a" (__v) : "dN" (__p));
|
||||
return __v;
|
||||
}
|
||||
|
||||
/* String I/O macros */
|
||||
|
||||
static __inline__ void
|
||||
outsb (unsigned short __p, const void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; outsb" : "+S" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outsw (unsigned short __p, const void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; outsw" : "+S" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outsl (unsigned short __p, const void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; outsl" : "+S" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
|
||||
static __inline__ void
|
||||
insb (unsigned short __p, void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; insb" : "+D" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
insw (unsigned short __p, void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; insw" : "+D" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
insl (unsigned short __p, void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; insl" : "+D" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
#endif /* _SYS_IO_H */
|
41
klibc/include/arch/i386/sys/vm86.h
Normal file
41
klibc/include/arch/i386/sys/vm86.h
Normal file
@ -0,0 +1,41 @@
|
||||
#ident "$Id: vm86.h,v 1.1 2004/01/25 01:34:28 hpa Exp $"
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom
|
||||
* the Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall
|
||||
* be included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* sys/vm86.h for i386
|
||||
*/
|
||||
|
||||
#ifndef _SYS_VM86_H
|
||||
#define _SYS_VM86_H 1
|
||||
|
||||
#include <asm/vm86.h>
|
||||
|
||||
/* Actual system call */
|
||||
int vm86(struct vm86_struct *);
|
||||
|
||||
#endif
|
17
klibc/include/arch/ia64/klibc/archsetjmp.h
Normal file
17
klibc/include/arch/ia64/klibc/archsetjmp.h
Normal file
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* arch/ia64/include/klibc/archsetjmp.h
|
||||
*
|
||||
* Code borrowed from the FreeBSD kernel.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
/* User code must not depend on the internal representation of jmp_buf. */
|
||||
#define _JBLEN 0x200
|
||||
|
||||
/* guaranteed 128-bit alignment! */
|
||||
typedef char jmp_buf[_JBLEN] __attribute__ ((aligned (16)));
|
||||
|
||||
#endif
|
31
klibc/include/arch/ia64/klibc/archsignal.h
Normal file
31
klibc/include/arch/ia64/klibc/archsignal.h
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* arch/ia64/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
#define _NSIG 64
|
||||
#define _NSIG_BPW 64
|
||||
#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
|
||||
|
||||
typedef struct {
|
||||
unsigned long sig[_NSIG_WORDS];
|
||||
} sigset_t;
|
||||
|
||||
struct sigaction {
|
||||
union {
|
||||
__sighandler_t _sa_handler;
|
||||
void (*_sa_sigaction)(int, struct siginfo *, void *);
|
||||
} _u;
|
||||
sigset_t sa_mask;
|
||||
int sa_flags;
|
||||
};
|
||||
|
||||
#define sa_handler _u._sa_handler
|
||||
#define sa_sigaction _u._sa_sigaction
|
||||
|
||||
#endif
|
24
klibc/include/arch/ia64/klibc/archstat.h
Normal file
24
klibc/include/arch/ia64/klibc/archstat.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long st_dev;
|
||||
unsigned long st_ino;
|
||||
unsigned long st_nlink;
|
||||
unsigned int st_mode;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
unsigned int __pad0;
|
||||
unsigned long st_rdev;
|
||||
unsigned long st_size;
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
unsigned long st_blksize;
|
||||
long st_blocks;
|
||||
unsigned long __unused[3];
|
||||
};
|
||||
|
||||
#endif
|
218
klibc/include/arch/ia64/klibc/archsys.h
Normal file
218
klibc/include/arch/ia64/klibc/archsys.h
Normal file
@ -0,0 +1,218 @@
|
||||
/*
|
||||
* arch/ia64/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
#define __IA64_BREAK "break 0x100000;;\n\t"
|
||||
|
||||
#define _syscall0(type,name) \
|
||||
type \
|
||||
name (void) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15) \
|
||||
: "2" (_r15) ASM_ARGS_0 \
|
||||
: "memory" ASM_CLOBBERS_0); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
#define _syscall1(type,name,type1,arg1) \
|
||||
type \
|
||||
name (type1 arg1) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
LOAD_ARGS_1(arg1); \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15), \
|
||||
ASM_OUTARGS_1 \
|
||||
: "2" (_r15) ASM_ARGS_1 \
|
||||
: "memory" ASM_CLOBBERS_1); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
#define _syscall2(type,name,type1,arg1,type2,arg2) \
|
||||
type \
|
||||
name (type1 arg1, type2 arg2) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
LOAD_ARGS_2(arg1, arg2); \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15), \
|
||||
ASM_OUTARGS_2 \
|
||||
: "2" (_r15) ASM_ARGS_2 \
|
||||
: "memory" ASM_CLOBBERS_2); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
|
||||
type \
|
||||
name (type1 arg1, type2 arg2, type3 arg3) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
LOAD_ARGS_3(arg1, arg2, arg3); \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15), \
|
||||
ASM_OUTARGS_3 \
|
||||
: "2" (_r15) ASM_ARGS_3 \
|
||||
: "memory" ASM_CLOBBERS_3); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
|
||||
type \
|
||||
name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
LOAD_ARGS_4(arg1, arg2, arg3, arg4); \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15), \
|
||||
ASM_OUTARGS_4 \
|
||||
: "2" (_r15) ASM_ARGS_4 \
|
||||
: "memory" ASM_CLOBBERS_4); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
|
||||
type \
|
||||
name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
LOAD_ARGS_5(arg1, arg2, arg3, arg4, arg5); \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15), \
|
||||
ASM_OUTARGS_5 \
|
||||
: "2" (_r15) ASM_ARGS_5 \
|
||||
: "memory" ASM_CLOBBERS_5); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
#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) \
|
||||
{ \
|
||||
register long _r8 asm ("r8"); \
|
||||
register long _r10 asm ("r10"); \
|
||||
register long _r15 asm ("r15") = __NR_##name; \
|
||||
long _retval; \
|
||||
LOAD_ARGS_6(arg1, arg2, arg3, arg4, arg5, arg6); \
|
||||
__asm __volatile (__IA64_BREAK \
|
||||
: "=r" (_r8), "=r" (_r10), "=r" (_r15), \
|
||||
ASM_OUTARGS_6 \
|
||||
: "2" (_r15) ASM_ARGS_6 \
|
||||
: "memory" ASM_CLOBBERS_6); \
|
||||
_retval = _r8; \
|
||||
if (_r10 == -1) { \
|
||||
errno = (_retval); \
|
||||
_retval = -1; \
|
||||
} \
|
||||
return (type)_retval; \
|
||||
}
|
||||
|
||||
|
||||
#define LOAD_ARGS_0() do { } while (0)
|
||||
#define LOAD_ARGS_1(out0) \
|
||||
register long _out0 asm ("out0") = (long) (out0); \
|
||||
LOAD_ARGS_0 ()
|
||||
#define LOAD_ARGS_2(out0, out1) \
|
||||
register long _out1 asm ("out1") = (long) (out1); \
|
||||
LOAD_ARGS_1 (out0)
|
||||
#define LOAD_ARGS_3(out0, out1, out2) \
|
||||
register long _out2 asm ("out2") = (long) (out2); \
|
||||
LOAD_ARGS_2 (out0, out1)
|
||||
#define LOAD_ARGS_4(out0, out1, out2, out3) \
|
||||
register long _out3 asm ("out3") = (long) (out3); \
|
||||
LOAD_ARGS_3 (out0, out1, out2)
|
||||
#define LOAD_ARGS_5(out0, out1, out2, out3, out4) \
|
||||
register long _out4 asm ("out4") = (long) (out4); \
|
||||
LOAD_ARGS_4 (out0, out1, out2, out3)
|
||||
#define LOAD_ARGS_6(out0, out1, out2, out3, out4, out5) \
|
||||
register long _out5 asm ("out5") = (long) (out5); \
|
||||
LOAD_ARGS_5 (out0, out1, out2, out3, out4)
|
||||
|
||||
#define ASM_OUTARGS_1 "=r" (_out0)
|
||||
#define ASM_OUTARGS_2 ASM_OUTARGS_1, "=r" (_out1)
|
||||
#define ASM_OUTARGS_3 ASM_OUTARGS_2, "=r" (_out2)
|
||||
#define ASM_OUTARGS_4 ASM_OUTARGS_3, "=r" (_out3)
|
||||
#define ASM_OUTARGS_5 ASM_OUTARGS_4, "=r" (_out4)
|
||||
#define ASM_OUTARGS_6 ASM_OUTARGS_5, "=r" (_out5)
|
||||
|
||||
#define ASM_ARGS_0
|
||||
#define ASM_ARGS_1 ASM_ARGS_0, "3" (_out0)
|
||||
#define ASM_ARGS_2 ASM_ARGS_1, "4" (_out1)
|
||||
#define ASM_ARGS_3 ASM_ARGS_2, "5" (_out2)
|
||||
#define ASM_ARGS_4 ASM_ARGS_3, "6" (_out3)
|
||||
#define ASM_ARGS_5 ASM_ARGS_4, "7" (_out4)
|
||||
#define ASM_ARGS_6 ASM_ARGS_5, "8" (_out5)
|
||||
|
||||
#define ASM_CLOBBERS_0 ASM_CLOBBERS_1, "out0"
|
||||
#define ASM_CLOBBERS_1 ASM_CLOBBERS_2, "out1"
|
||||
#define ASM_CLOBBERS_2 ASM_CLOBBERS_3, "out2"
|
||||
#define ASM_CLOBBERS_3 ASM_CLOBBERS_4, "out3"
|
||||
#define ASM_CLOBBERS_4 ASM_CLOBBERS_5, "out4"
|
||||
#define ASM_CLOBBERS_5 ASM_CLOBBERS_6, "out5"
|
||||
#define ASM_CLOBBERS_6 , "out6", "out7", \
|
||||
/* Non-stacked integer registers, minus r8, r10, r15. */ \
|
||||
"r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18", \
|
||||
"r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27", \
|
||||
"r28", "r29", "r30", "r31", \
|
||||
/* Predicate registers. */ \
|
||||
"p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", \
|
||||
/* Non-rotating fp registers. */ \
|
||||
"f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
|
||||
/* Branch registers. */ \
|
||||
"b6", "b7"
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
13
klibc/include/arch/m68k/klibc/archsignal.h
Normal file
13
klibc/include/arch/m68k/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/m68k/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
37
klibc/include/arch/m68k/klibc/archstat.h
Normal file
37
klibc/include/arch/m68k/klibc/archstat.h
Normal file
@ -0,0 +1,37 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1, hence the absolutely
|
||||
* insane amounts of padding around dev_t's.
|
||||
*/
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
unsigned char __pad1[2];
|
||||
|
||||
unsigned long __st_ino;
|
||||
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
|
||||
unsigned long st_uid;
|
||||
unsigned long st_gid;
|
||||
|
||||
unsigned long long st_rdev;
|
||||
unsigned char __pad3[2];
|
||||
|
||||
long long st_size;
|
||||
unsigned long st_blksize;
|
||||
|
||||
unsigned long __pad4; /* future possible st_blocks high bits */
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned long long st_ino;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/m68k/klibc/archsys.h
Normal file
12
klibc/include/arch/m68k/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/m68k/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
87
klibc/include/arch/mips/klibc/archfcntl.h
Normal file
87
klibc/include/arch/mips/klibc/archfcntl.h
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
* arch/mips/include/klibc/archfcntl.h
|
||||
*
|
||||
* On MIPS, <asm/fcntl.h> isn't usable (compiling struct stat with
|
||||
* the correct definitions doesn't "just work"), so we need to provide
|
||||
* our own definitions.
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHFCNTL_H
|
||||
#define _KLIBC_ARCHFCNTL_H
|
||||
|
||||
#ifdef _ASM_FCNTL_H /* We were too late! */
|
||||
# error "<asm/fcntl.h> included before <klibc/archfcntl.h>"
|
||||
#endif
|
||||
#define _ASM_FCNTL_H /* Keep <asm/fcntl.h> from getting included */
|
||||
|
||||
#define O_ACCMODE 0x0003
|
||||
#define O_RDONLY 0x0000
|
||||
#define O_WRONLY 0x0001
|
||||
#define O_RDWR 0x0002
|
||||
#define O_APPEND 0x0008
|
||||
#define O_SYNC 0x0010
|
||||
#define O_NONBLOCK 0x0080
|
||||
#define O_CREAT 0x0100
|
||||
#define O_TRUNC 0x0200
|
||||
#define O_EXCL 0x0400
|
||||
#define O_NOCTTY 0x0800
|
||||
#define FASYNC 0x1000
|
||||
#define O_LARGEFILE 0x2000
|
||||
#define O_DIRECT 0x8000
|
||||
#define O_DIRECTORY 0x10000
|
||||
#define O_NOFOLLOW 0x20000
|
||||
#define O_NOATIME 0x40000
|
||||
|
||||
#define O_NDELAY O_NONBLOCK
|
||||
|
||||
#define F_DUPFD 0
|
||||
#define F_GETFD 1
|
||||
#define F_SETFD 2
|
||||
#define F_GETFL 3
|
||||
#define F_SETFL 4
|
||||
#define F_GETLK 14
|
||||
#define F_SETLK 6
|
||||
#define F_SETLKW 7
|
||||
|
||||
#define F_SETOWN 24
|
||||
#define F_GETOWN 23
|
||||
#define F_SETSIG 10
|
||||
#define F_GETSIG 11
|
||||
|
||||
#define F_GETLK64 33
|
||||
#define F_SETLK64 34
|
||||
#define F_SETLKW64 35
|
||||
|
||||
#define FD_CLOEXEC 1
|
||||
|
||||
#define F_RDLCK 0
|
||||
#define F_WRLCK 1
|
||||
#define F_UNLCK 2
|
||||
|
||||
#define F_EXLCK 4
|
||||
#define F_SHLCK 8
|
||||
|
||||
#define F_INPROGRESS 16
|
||||
|
||||
#define LOCK_SH 1
|
||||
#define LOCK_EX 2
|
||||
#define LOCK_NB 4
|
||||
#define LOCK_UN 8
|
||||
|
||||
#define LOCK_MAND 32
|
||||
#define LOCK_READ 64
|
||||
#define LOCK_WRITE 128
|
||||
#define LOCK_RW 192
|
||||
|
||||
typedef struct flock {
|
||||
short l_type;
|
||||
short l_whence;
|
||||
loff_t l_start;
|
||||
loff_t l_len;
|
||||
pid_t l_pid;
|
||||
} flock_t;
|
||||
|
||||
#define F_LINUX_SPECIFIC_BASE 1024
|
||||
|
||||
#endif /* _KLIBC_ARCHFCNTL_H */
|
||||
|
39
klibc/include/arch/mips/klibc/archsetjmp.h
Normal file
39
klibc/include/arch/mips/klibc/archsetjmp.h
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* arch/mips/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __s0;
|
||||
unsigned long __s1;
|
||||
unsigned long __s2;
|
||||
unsigned long __s3;
|
||||
unsigned long __s4;
|
||||
unsigned long __s5;
|
||||
unsigned long __s6;
|
||||
unsigned long __s7;
|
||||
unsigned long __gp;
|
||||
unsigned long __sp;
|
||||
unsigned long __s8;
|
||||
unsigned long __ra;
|
||||
unsigned long __f20;
|
||||
unsigned long __f21;
|
||||
unsigned long __f22;
|
||||
unsigned long __f23;
|
||||
unsigned long __f24;
|
||||
unsigned long __f25;
|
||||
unsigned long __f26;
|
||||
unsigned long __f27;
|
||||
unsigned long __f28;
|
||||
unsigned long __f29;
|
||||
unsigned long __f30;
|
||||
unsigned long __f31;
|
||||
unsigned long __fcr31;
|
||||
unsigned long __unused;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _KLIBC_ARCHSETJMP_H */
|
13
klibc/include/arch/mips/klibc/archsignal.h
Normal file
13
klibc/include/arch/mips/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/mips/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
39
klibc/include/arch/mips/klibc/archstat.h
Normal file
39
klibc/include/arch/mips/klibc/archstat.h
Normal file
@ -0,0 +1,39 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/*
|
||||
* This matches struct stat64 in glibc2.1, hence the absolutely insane
|
||||
* amounts of padding around dev_t's. The memory layout is the same as of
|
||||
* struct stat of the 64-bit kernel.
|
||||
*/
|
||||
|
||||
struct stat {
|
||||
unsigned long st_dev;
|
||||
unsigned long st_pad0[3]; /* Reserved for st_dev expansion */
|
||||
|
||||
unsigned long long st_ino;
|
||||
|
||||
mode_t st_mode;
|
||||
nlink_t st_nlink;
|
||||
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
|
||||
unsigned long st_rdev;
|
||||
unsigned long st_pad1[3]; /* Reserved for st_rdev expansion */
|
||||
|
||||
long long st_size;
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned long st_blksize;
|
||||
unsigned long st_pad2;
|
||||
|
||||
long long st_blocks;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/mips/klibc/archsys.h
Normal file
12
klibc/include/arch/mips/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/mips/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
11
klibc/include/arch/mips/machine/asm.h
Normal file
11
klibc/include/arch/mips/machine/asm.h
Normal file
@ -0,0 +1,11 @@
|
||||
/*
|
||||
* arch/mips/include/machine/asm.h
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_ASM_H
|
||||
#define _MACHINE_ASM_H
|
||||
|
||||
#include <asm/regdef.h>
|
||||
#include <asm/asm.h>
|
||||
|
||||
#endif /* _MACHINE_ASM_H */
|
20
klibc/include/arch/mips/sgidefs.h
Normal file
20
klibc/include/arch/mips/sgidefs.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* arch/mips/include/sgidefs.h
|
||||
*/
|
||||
|
||||
/* Some ABI constants */
|
||||
|
||||
#ifndef _SGIDEFS_H
|
||||
#define _SGIDEFS_H
|
||||
|
||||
#define _MIPS_ISA_MIPS1 1
|
||||
#define _MIPS_ISA_MIPS2 2
|
||||
#define _MIPS_ISA_MIPS3 3
|
||||
#define _MIPS_ISA_MIPS4 4
|
||||
#define _MIPS_ISA_MIPS5 5
|
||||
|
||||
#define _MIPS_SIM_ABI32 1
|
||||
#define _MIPS_SIM_NABI32 2
|
||||
#define _MIPS_SIM_ABI64 3
|
||||
|
||||
#endif /* _SGIDEFS_H */
|
1
klibc/include/arch/mips/spaces.h
Normal file
1
klibc/include/arch/mips/spaces.h
Normal file
@ -0,0 +1 @@
|
||||
/* Included by <asm/page.h> but not actually needed */
|
13
klibc/include/arch/mips64/klibc/archsignal.h
Normal file
13
klibc/include/arch/mips64/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/mips64/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
33
klibc/include/arch/mips64/klibc/archstat.h
Normal file
33
klibc/include/arch/mips64/klibc/archstat.h
Normal file
@ -0,0 +1,33 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned int st_dev;
|
||||
unsigned int st_pad0[3]; /* Reserved for st_dev expansion */
|
||||
|
||||
unsigned long st_ino;
|
||||
|
||||
mode_t st_mode;
|
||||
nlink_t st_nlink;
|
||||
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
|
||||
unsigned int st_rdev;
|
||||
unsigned int st_pad1[3]; /* Reserved for st_rdev expansion */
|
||||
|
||||
off_t st_size;
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned int st_blksize;
|
||||
unsigned int st_pad2;
|
||||
|
||||
unsigned long st_blocks;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/mips64/klibc/archsys.h
Normal file
12
klibc/include/arch/mips64/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/mips64/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
24
klibc/include/arch/parisc/klibc/archsignal.h
Normal file
24
klibc/include/arch/parisc/klibc/archsignal.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* arch/parisc/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
#define _NSIG 64
|
||||
#define _NSIG_SZ (_NSIG / LONG_BIT)
|
||||
|
||||
typedef struct {
|
||||
unsigned long sig[_NSIG_SZ];
|
||||
} sigset_t;
|
||||
|
||||
struct sigaction {
|
||||
__sighandler_t sa_handler;
|
||||
unsigned long sa_flags;
|
||||
sigset_t sa_mask;
|
||||
};
|
||||
|
||||
#endif
|
27
klibc/include/arch/parisc/klibc/archstat.h
Normal file
27
klibc/include/arch/parisc/klibc/archstat.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
unsigned int __pad1;
|
||||
|
||||
unsigned int __st_ino; /* Not actually filled in */
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
unsigned long long st_rdev;
|
||||
unsigned int __pad2;
|
||||
signed long long st_size;
|
||||
signed int st_blksize;
|
||||
|
||||
signed long long st_blocks;
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
unsigned long long st_ino;
|
||||
};
|
||||
|
||||
#endif
|
12
klibc/include/arch/parisc/klibc/archsys.h
Normal file
12
klibc/include/arch/parisc/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/parisc/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
36
klibc/include/arch/ppc/klibc/archsetjmp.h
Normal file
36
klibc/include/arch/ppc/klibc/archsetjmp.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* arch/ppc/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __r2;
|
||||
unsigned long __sp;
|
||||
unsigned long __lr;
|
||||
unsigned long __cr;
|
||||
unsigned long __r13;
|
||||
unsigned long __r14;
|
||||
unsigned long __r15;
|
||||
unsigned long __r16;
|
||||
unsigned long __r17;
|
||||
unsigned long __r18;
|
||||
unsigned long __r19;
|
||||
unsigned long __r20;
|
||||
unsigned long __r21;
|
||||
unsigned long __r22;
|
||||
unsigned long __r23;
|
||||
unsigned long __r24;
|
||||
unsigned long __r25;
|
||||
unsigned long __r26;
|
||||
unsigned long __r27;
|
||||
unsigned long __r28;
|
||||
unsigned long __r29;
|
||||
unsigned long __r30;
|
||||
unsigned long __r31;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/ppc/klibc/archsignal.h
Normal file
13
klibc/include/arch/ppc/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/ppc/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
28
klibc/include/arch/ppc/klibc/archstat.h
Normal file
28
klibc/include/arch/ppc/klibc/archstat.h
Normal file
@ -0,0 +1,28 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1.
|
||||
*/
|
||||
struct stat {
|
||||
unsigned long long st_dev; /* Device. */
|
||||
unsigned long long st_ino; /* File serial number. */
|
||||
unsigned int st_mode; /* File mode. */
|
||||
unsigned int st_nlink; /* Link count. */
|
||||
unsigned int st_uid; /* User ID of the file's owner. */
|
||||
unsigned int st_gid; /* Group ID of the file's group. */
|
||||
unsigned long long st_rdev; /* Device number, if device. */
|
||||
unsigned short int __pad2;
|
||||
long long st_size; /* Size of file, in bytes. */
|
||||
long st_blksize; /* Optimal block size for I/O. */
|
||||
|
||||
long long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
struct timespec st_atim; /* Time of last access. */
|
||||
struct timespec st_mtim; /* Time of last modification. */
|
||||
struct timespec st_ctim; /* Time of last status change. */
|
||||
unsigned long int __unused4;
|
||||
unsigned long int __unused5;
|
||||
};
|
||||
|
||||
#endif
|
61
klibc/include/arch/ppc/klibc/archsys.h
Normal file
61
klibc/include/arch/ppc/klibc/archsys.h
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* arch/ppc/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* PowerPC seems to lack _syscall6() in its headers */
|
||||
/* This seems to work on both 32- and 64-bit ppc */
|
||||
|
||||
#ifndef _syscall6
|
||||
|
||||
#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) \
|
||||
{ \
|
||||
unsigned long __sc_ret, __sc_err; \
|
||||
{ \
|
||||
register unsigned long __sc_0 __asm__ ("r0"); \
|
||||
register unsigned long __sc_3 __asm__ ("r3"); \
|
||||
register unsigned long __sc_4 __asm__ ("r4"); \
|
||||
register unsigned long __sc_5 __asm__ ("r5"); \
|
||||
register unsigned long __sc_6 __asm__ ("r6"); \
|
||||
register unsigned long __sc_7 __asm__ ("r7"); \
|
||||
register unsigned long __sc_8 __asm__ ("r8"); \
|
||||
\
|
||||
__sc_3 = (unsigned long) (arg1); \
|
||||
__sc_4 = (unsigned long) (arg2); \
|
||||
__sc_5 = (unsigned long) (arg3); \
|
||||
__sc_6 = (unsigned long) (arg4); \
|
||||
__sc_7 = (unsigned long) (arg5); \
|
||||
__sc_8 = (unsigned long) (arg6); \
|
||||
__sc_0 = __NR_##name; \
|
||||
__asm__ __volatile__ \
|
||||
("sc \n\t" \
|
||||
"mfcr %1 " \
|
||||
: "+r" (__sc_3), \
|
||||
"+r" (__sc_0), \
|
||||
"+r" (__sc_4), \
|
||||
"+r" (__sc_5), \
|
||||
"+r" (__sc_6), \
|
||||
"+r" (__sc_7), \
|
||||
"+r" (__sc_8) \
|
||||
: : "cr0", "ctr", "memory", \
|
||||
"r9", "r10", "r11", "r12"); \
|
||||
__sc_ret = __sc_3; \
|
||||
__sc_err = __sc_0; \
|
||||
} \
|
||||
if (__sc_err & 0x10000000) \
|
||||
{ \
|
||||
errno = (int)__sc_ret; \
|
||||
__sc_ret = -1; \
|
||||
} \
|
||||
return (type)__sc_ret; \
|
||||
}
|
||||
|
||||
#endif /* _syscall6() missing */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
36
klibc/include/arch/ppc64/klibc/archsetjmp.h
Normal file
36
klibc/include/arch/ppc64/klibc/archsetjmp.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* arch/ppc64/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __r2;
|
||||
unsigned long __sp;
|
||||
unsigned long __lr;
|
||||
unsigned long __cr;
|
||||
unsigned long __r13;
|
||||
unsigned long __r14;
|
||||
unsigned long __r15;
|
||||
unsigned long __r16;
|
||||
unsigned long __r17;
|
||||
unsigned long __r18;
|
||||
unsigned long __r19;
|
||||
unsigned long __r20;
|
||||
unsigned long __r21;
|
||||
unsigned long __r22;
|
||||
unsigned long __r23;
|
||||
unsigned long __r24;
|
||||
unsigned long __r25;
|
||||
unsigned long __r26;
|
||||
unsigned long __r27;
|
||||
unsigned long __r28;
|
||||
unsigned long __r29;
|
||||
unsigned long __r30;
|
||||
unsigned long __r31;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/ppc64/klibc/archsignal.h
Normal file
13
klibc/include/arch/ppc64/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/ppc64/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
25
klibc/include/arch/ppc64/klibc/archstat.h
Normal file
25
klibc/include/arch/ppc64/klibc/archstat.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long st_dev;
|
||||
ino_t st_ino;
|
||||
nlink_t st_nlink;
|
||||
mode_t st_mode;
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
unsigned long st_rdev;
|
||||
off_t st_size;
|
||||
unsigned long st_blksize;
|
||||
unsigned long st_blocks;
|
||||
struct timespec st_atim; /* Time of last access. */
|
||||
struct timespec st_mtim; /* Time of last modification. */
|
||||
struct timespec st_ctim; /* Time of last status change. */
|
||||
unsigned long __unused4;
|
||||
unsigned long __unused5;
|
||||
unsigned long __unused6;
|
||||
};
|
||||
|
||||
#endif
|
52
klibc/include/arch/ppc64/klibc/archsys.h
Normal file
52
klibc/include/arch/ppc64/klibc/archsys.h
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* arch/ppc64/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
#ifndef _syscall6
|
||||
|
||||
#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) \
|
||||
{ \
|
||||
unsigned long __sc_ret, __sc_err; \
|
||||
{ \
|
||||
register unsigned long __sc_0 __asm__ ("r0"); \
|
||||
register unsigned long __sc_3 __asm__ ("r3"); \
|
||||
register unsigned long __sc_4 __asm__ ("r4"); \
|
||||
register unsigned long __sc_5 __asm__ ("r5"); \
|
||||
register unsigned long __sc_6 __asm__ ("r6"); \
|
||||
register unsigned long __sc_7 __asm__ ("r7"); \
|
||||
register unsigned long __sc_8 __asm__ ("r8"); \
|
||||
\
|
||||
__sc_3 = (unsigned long) (arg1); \
|
||||
__sc_4 = (unsigned long) (arg2); \
|
||||
__sc_5 = (unsigned long) (arg3); \
|
||||
__sc_6 = (unsigned long) (arg4); \
|
||||
__sc_7 = (unsigned long) (arg5); \
|
||||
__sc_8 = (unsigned long) (arg6); \
|
||||
__sc_0 = __NR_##name; \
|
||||
__asm__ __volatile__ \
|
||||
("sc \n\t" \
|
||||
"mfcr %1 " \
|
||||
: "=&r" (__sc_3), "=&r" (__sc_0) \
|
||||
: "0" (__sc_3), "1" (__sc_0), \
|
||||
"r" (__sc_4), \
|
||||
"r" (__sc_5), \
|
||||
"r" (__sc_6), \
|
||||
"r" (__sc_7), \
|
||||
"r" (__sc_8) \
|
||||
: __syscall_clobbers); \
|
||||
__sc_ret = __sc_3; \
|
||||
__sc_err = __sc_0; \
|
||||
} \
|
||||
__syscall_return (type); \
|
||||
}
|
||||
|
||||
#endif /* _syscall6() missing */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
15
klibc/include/arch/s390/klibc/archsetjmp.h
Normal file
15
klibc/include/arch/s390/klibc/archsetjmp.h
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* arch/s390/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
uint32_t __gregs[10]; /* general registers r6-r15 */
|
||||
uint64_t __fpregs[2]; /* fp registers f4 and f6 */
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/s390/klibc/archsignal.h
Normal file
13
klibc/include/arch/s390/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/s390/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
31
klibc/include/arch/s390/klibc/archstat.h
Normal file
31
klibc/include/arch/s390/klibc/archstat.h
Normal file
@ -0,0 +1,31 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1, hence the absolutely
|
||||
* insane amounts of padding around dev_t's.
|
||||
*/
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
unsigned int __pad1;
|
||||
#define STAT64_HAS_BROKEN_ST_INO 1
|
||||
unsigned long __st_ino;
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
unsigned long st_uid;
|
||||
unsigned long st_gid;
|
||||
unsigned long long st_rdev;
|
||||
unsigned int __pad3;
|
||||
long long st_size;
|
||||
unsigned long st_blksize;
|
||||
unsigned char __pad4[4];
|
||||
unsigned long __pad5; /* future possible st_blocks high bits */
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
unsigned long long st_ino;
|
||||
};
|
||||
|
||||
#endif
|
41
klibc/include/arch/s390/klibc/archsys.h
Normal file
41
klibc/include/arch/s390/klibc/archsys.h
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* arch/s390/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* S/390 only has five syscall parameters, and uses a structure for
|
||||
6-argument syscalls. */
|
||||
|
||||
#ifndef _syscall6
|
||||
|
||||
#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) { \
|
||||
unsigned long __arg[6] = { \
|
||||
(unsigned long) arg1, \
|
||||
(unsigned long) arg2, \
|
||||
(unsigned long) arg3, \
|
||||
(unsigned long) arg4, \
|
||||
(unsigned long) arg5, \
|
||||
(unsigned long) arg6 \
|
||||
}; \
|
||||
register void *__argp asm("2") = &__arg; \
|
||||
long __res; \
|
||||
__asm__ __volatile__ ( \
|
||||
" svc %b1\n" \
|
||||
" lr %0,2" \
|
||||
: "=d" (__res) \
|
||||
: "i" (__NR_##name), \
|
||||
"d" (__argp) \
|
||||
: _svc_clobber); \
|
||||
__syscall_return(type, __res); \
|
||||
}
|
||||
|
||||
#endif /* _syscall6() missing */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
15
klibc/include/arch/s390x/klibc/archsetjmp.h
Normal file
15
klibc/include/arch/s390x/klibc/archsetjmp.h
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* arch/s390x/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
uint64_t __gregs[10]; /* general registers r6-r15 */
|
||||
uint64_t __fpregs[4]; /* fp registers f1, f3, f5, f7 */
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/s390x/klibc/archsignal.h
Normal file
13
klibc/include/arch/s390x/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/s390x/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
24
klibc/include/arch/s390x/klibc/archstat.h
Normal file
24
klibc/include/arch/s390x/klibc/archstat.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long st_dev;
|
||||
unsigned long st_ino;
|
||||
unsigned long st_nlink;
|
||||
unsigned int st_mode;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
unsigned int __pad1;
|
||||
unsigned long st_rdev;
|
||||
unsigned long st_size;
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
unsigned long st_blksize;
|
||||
long st_blocks;
|
||||
unsigned long __unused[3];
|
||||
};
|
||||
|
||||
#endif
|
41
klibc/include/arch/s390x/klibc/archsys.h
Normal file
41
klibc/include/arch/s390x/klibc/archsys.h
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* arch/s390x/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* S/390X only has five syscall parameters, and uses a structure for
|
||||
6-argument syscalls. */
|
||||
|
||||
#ifndef _syscall6
|
||||
|
||||
#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) { \
|
||||
unsigned long __arg[6] = { \
|
||||
(unsigned long) arg1, \
|
||||
(unsigned long) arg2, \
|
||||
(unsigned long) arg3, \
|
||||
(unsigned long) arg4, \
|
||||
(unsigned long) arg5, \
|
||||
(unsigned long) arg6 \
|
||||
}; \
|
||||
register void *__argp asm("2") = &__arg; \
|
||||
long __res; \
|
||||
__asm__ __volatile__ ( \
|
||||
" svc %b1\n" \
|
||||
" lgr %0,2" \
|
||||
: "=d" (__res) \
|
||||
: "i" (__NR_##name), \
|
||||
"d" (__argp) \
|
||||
: _svc_clobber); \
|
||||
__syscall_return(type, __res); \
|
||||
}
|
||||
|
||||
#endif /* _syscall6() missing */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
22
klibc/include/arch/sh/klibc/archsetjmp.h
Normal file
22
klibc/include/arch/sh/klibc/archsetjmp.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* arch/sh/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long r8;
|
||||
unsigned long r9;
|
||||
unsigned long r10;
|
||||
unsigned long r11;
|
||||
unsigned long r12;
|
||||
unsigned long r13;
|
||||
unsigned long r14;
|
||||
unsigned long r15;
|
||||
unsigned long pr;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _KLIBC_ARCHSETJMP_H */
|
13
klibc/include/arch/sh/klibc/archsignal.h
Normal file
13
klibc/include/arch/sh/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/sh/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
45
klibc/include/arch/sh/klibc/archstat.h
Normal file
45
klibc/include/arch/sh/klibc/archstat.h
Normal file
@ -0,0 +1,45 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#include <endian.h>
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
/* This matches struct stat64 in glibc2.1, hence the absolutely
|
||||
* insane amounts of padding around dev_t's.
|
||||
*/
|
||||
struct stat64 {
|
||||
unsigned long long st_dev;
|
||||
unsigned char __pad0[4];
|
||||
|
||||
unsigned long st_ino;
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
|
||||
unsigned long st_uid;
|
||||
unsigned long st_gid;
|
||||
|
||||
unsigned long long st_rdev;
|
||||
unsigned char __pad3[4];
|
||||
|
||||
long long st_size;
|
||||
unsigned long st_blksize;
|
||||
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned long __pad4; /* Future possible st_blocks hi bits */
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
#else /* Must be little */
|
||||
unsigned long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
unsigned long __pad4; /* Future possible st_blocks hi bits */
|
||||
#endif
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
12
klibc/include/arch/sh/klibc/archsys.h
Normal file
12
klibc/include/arch/sh/klibc/archsys.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* arch/sh/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* No special syscall definitions for this architecture */
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
16
klibc/include/arch/sparc/klibc/archsetjmp.h
Normal file
16
klibc/include/arch/sparc/klibc/archsetjmp.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* arch/sparc/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __sp;
|
||||
unsigned long __fp;
|
||||
unsigned long __pc;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/sparc/klibc/archsignal.h
Normal file
13
klibc/include/arch/sparc/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/sparc/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
35
klibc/include/arch/sparc/klibc/archstat.h
Normal file
35
klibc/include/arch/sparc/klibc/archstat.h
Normal file
@ -0,0 +1,35 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long long st_dev;
|
||||
|
||||
unsigned long long st_ino;
|
||||
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
|
||||
unsigned long long st_rdev;
|
||||
|
||||
unsigned char __pad3[8];
|
||||
|
||||
long long st_size;
|
||||
unsigned int st_blksize;
|
||||
|
||||
unsigned char __pad4[8];
|
||||
unsigned int st_blocks;
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
|
||||
unsigned int __unused4;
|
||||
unsigned int __unused5;
|
||||
};
|
||||
|
||||
#endif
|
10
klibc/include/arch/sparc/klibc/archsys.h
Normal file
10
klibc/include/arch/sparc/klibc/archsys.h
Normal file
@ -0,0 +1,10 @@
|
||||
/*
|
||||
* arch/sparc/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
192
klibc/include/arch/sparc/machine/asm.h
Normal file
192
klibc/include/arch/sparc/machine/asm.h
Normal file
@ -0,0 +1,192 @@
|
||||
/* $NetBSD: asm.h,v 1.14 2002/07/20 08:37:30 mrg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994 Allen Briggs
|
||||
* All rights reserved.
|
||||
*
|
||||
* Gleaned from locore.s and sun3 asm.h which had the following copyrights:
|
||||
* locore.s:
|
||||
* Copyright (c) 1988 University of Utah.
|
||||
* Copyright (c) 1982, 1990 The Regents of the University of California.
|
||||
* sun3/include/asm.h:
|
||||
* Copyright (c) 1993 Adam Glass
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_H_
|
||||
#define _ASM_H_
|
||||
|
||||
/* Pull in CCFSZ, CC64FSZ, and BIAS from frame.h */
|
||||
#ifndef _LOCORE
|
||||
#define _LOCORE
|
||||
#endif
|
||||
#include <machine/frame.h>
|
||||
|
||||
#ifdef __ELF__
|
||||
#define _C_LABEL(name) name
|
||||
#else
|
||||
#ifdef __STDC__
|
||||
#define _C_LABEL(name) _ ## name
|
||||
#else
|
||||
#define _C_LABEL(name) _/**/name
|
||||
#endif
|
||||
#endif
|
||||
#define _ASM_LABEL(name) name
|
||||
|
||||
#ifdef PIC
|
||||
/*
|
||||
* PIC_PROLOGUE() is akin to the compiler generated function prologue for
|
||||
* PIC code. It leaves the address of the Global Offset Table in DEST,
|
||||
* clobbering register TMP in the process.
|
||||
*
|
||||
* We can use two code sequences. We can read the %pc or use the call
|
||||
* instruction that saves the pc in %o7. Call requires the branch unit and
|
||||
* IEU1, and clobbers %o7 which needs to be restored. This instruction
|
||||
* sequence takes about 4 cycles due to instruction interdependence. Reading
|
||||
* the pc takes 4 cycles to dispatch and is always dispatched alone. That
|
||||
* sequence takes 7 cycles.
|
||||
*/
|
||||
#ifdef __arch64__
|
||||
#define PIC_PROLOGUE(dest,tmp) \
|
||||
mov %o7, tmp; \
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-4),dest; \
|
||||
call 0f; \
|
||||
or dest,%lo(_GLOBAL_OFFSET_TABLE_+4),dest; \
|
||||
0: \
|
||||
add dest,%o7,dest; \
|
||||
mov tmp, %o7
|
||||
#else
|
||||
#define PIC_PROLOGUE(dest,tmp) \
|
||||
mov %o7,tmp; 3: call 4f; nop; 4: \
|
||||
sethi %hi(_C_LABEL(_GLOBAL_OFFSET_TABLE_)-(3b-.)),dest; \
|
||||
or dest,%lo(_C_LABEL(_GLOBAL_OFFSET_TABLE_)-(3b-.)),dest; \
|
||||
add dest,%o7,dest; mov tmp,%o7
|
||||
#endif
|
||||
|
||||
/*
|
||||
* PICCY_SET() does the equivalent of a `set var, %dest' instruction in
|
||||
* a PIC-like way, but without involving the Global Offset Table. This
|
||||
* only works for VARs defined in the same file *and* in the text segment.
|
||||
*/
|
||||
#ifdef __arch64__
|
||||
#define PICCY_SET(var,dest,tmp) \
|
||||
3: rd %pc, tmp; add tmp,(var-3b),dest
|
||||
#else
|
||||
#define PICCY_SET(var,dest,tmp) \
|
||||
mov %o7,tmp; 3: call 4f; nop; 4: \
|
||||
add %o7,(var-3b),dest; mov tmp,%o7
|
||||
#endif
|
||||
#else
|
||||
#define PIC_PROLOGUE(dest,tmp)
|
||||
#define PICCY_OFFSET(var,dest,tmp)
|
||||
#endif
|
||||
|
||||
#define FTYPE(x) .type x,@function
|
||||
#define OTYPE(x) .type x,@object
|
||||
|
||||
#define _ENTRY(name) \
|
||||
.align 4; .globl name; .proc 1; FTYPE(name); name:
|
||||
|
||||
#ifdef GPROF
|
||||
/* see _MCOUNT_ENTRY in profile.h */
|
||||
#ifdef __ELF__
|
||||
#ifdef __arch64__
|
||||
#define _PROF_PROLOGUE \
|
||||
.data; .align 8; 1: .uaword 0; .uaword 0; \
|
||||
.text; save %sp,-CC64FSZ,%sp; sethi %hi(1b),%o0; call _mcount; \
|
||||
or %o0,%lo(1b),%o0; restore
|
||||
#else
|
||||
#define _PROF_PROLOGUE \
|
||||
.data; .align 4; 1: .long 0; \
|
||||
.text; save %sp,-96,%sp; sethi %hi(1b),%o0; call _mcount; \
|
||||
or %o0,%lo(1b),%o0; restore
|
||||
#endif
|
||||
#else
|
||||
#ifdef __arch64__
|
||||
#define _PROF_PROLOGUE \
|
||||
.data; .align 8; 1: .uaword 0; .uaword 0; \
|
||||
.text; save %sp,-CC64FSZ,%sp; sethi %hi(1b),%o0; call mcount; \
|
||||
or %o0,%lo(1b),%o0; restore
|
||||
#else
|
||||
#define _PROF_PROLOGUE \
|
||||
.data; .align 4; 1: .long 0; \
|
||||
.text; save %sp,-96,%sp; sethi %hi(1b),%o0; call mcount; \
|
||||
or %o0,%lo(1b),%o0; restore
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#define _PROF_PROLOGUE
|
||||
#endif
|
||||
|
||||
#define ENTRY(name) _ENTRY(_C_LABEL(name)); _PROF_PROLOGUE
|
||||
#define ENTRY_NOPROFILE(name) _ENTRY(_C_LABEL(name))
|
||||
#define ASENTRY(name) _ENTRY(_ASM_LABEL(name)); _PROF_PROLOGUE
|
||||
#define FUNC(name) ASENTRY(name)
|
||||
#define RODATA(name) .align 4; .text; .globl _C_LABEL(name); \
|
||||
OTYPE(_C_LABEL(name)); _C_LABEL(name):
|
||||
|
||||
|
||||
#define ASMSTR .asciz
|
||||
|
||||
#define RCSID(name) .asciz name
|
||||
|
||||
#ifdef __ELF__
|
||||
#define WEAK_ALIAS(alias,sym) \
|
||||
.weak alias; \
|
||||
alias = sym
|
||||
#endif
|
||||
|
||||
/*
|
||||
* WARN_REFERENCES: create a warning if the specified symbol is referenced.
|
||||
*/
|
||||
#ifdef __ELF__
|
||||
#ifdef __STDC__
|
||||
#define WARN_REFERENCES(_sym,_msg) \
|
||||
.section .gnu.warning. ## _sym ; .ascii _msg ; .text
|
||||
#else
|
||||
#define WARN_REFERENCES(_sym,_msg) \
|
||||
.section .gnu.warning./**/_sym ; .ascii _msg ; .text
|
||||
#endif /* __STDC__ */
|
||||
#else
|
||||
#ifdef __STDC__
|
||||
#define __STRING(x) #x
|
||||
#define WARN_REFERENCES(sym,msg) \
|
||||
.stabs msg ## ,30,0,0,0 ; \
|
||||
.stabs __STRING(_ ## sym) ## ,1,0,0,0
|
||||
#else
|
||||
#define __STRING(x) "x"
|
||||
#define WARN_REFERENCES(sym,msg) \
|
||||
.stabs msg,30,0,0,0 ; \
|
||||
.stabs __STRING(_/**/sym),1,0,0,0
|
||||
#endif /* __STDC__ */
|
||||
#endif /* __ELF__ */
|
||||
|
||||
#endif /* _ASM_H_ */
|
138
klibc/include/arch/sparc/machine/frame.h
Normal file
138
klibc/include/arch/sparc/machine/frame.h
Normal file
@ -0,0 +1,138 @@
|
||||
/* $NetBSD: frame.h,v 1.4 2001/12/04 00:05:05 darrenr Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This software was developed by the Computer Systems Engineering group
|
||||
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
|
||||
* contributed to Berkeley.
|
||||
*
|
||||
* All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Lawrence Berkeley Laboratory.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)frame.h 8.1 (Berkeley) 6/11/93
|
||||
*/
|
||||
|
||||
#if defined(_KERNEL_OPT)
|
||||
#include "opt_sparc_arch.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Sparc stack frame format.
|
||||
*
|
||||
* Note that the contents of each stack frame may be held only in
|
||||
* machine register windows. In order to get an accurate picture
|
||||
* of the frame, you must first force the kernel to write any such
|
||||
* windows to the stack.
|
||||
*/
|
||||
#ifndef _LOCORE
|
||||
#ifndef SUN4U
|
||||
struct frame {
|
||||
int32_t fr_local[8]; /* space to save locals (%l0..%l7) */
|
||||
int32_t fr_arg[6]; /* space to save arguments (%i0..%i5) */
|
||||
struct frame *fr_fp; /* space to save frame pointer (%i6) */
|
||||
int32_t fr_pc; /* space to save return pc (%i7) */
|
||||
/*
|
||||
* SunOS reserves another 8 words here; this is pointless
|
||||
* but we do it for compatibility.
|
||||
*/
|
||||
int32_t fr_xxx; /* `structure return pointer' (unused) */
|
||||
int32_t fr_argd[6]; /* `arg dump area' (lunacy) */
|
||||
int32_t fr_argx[1]; /* arg extension (args 7..n; variable size) */
|
||||
};
|
||||
#else
|
||||
struct frame32 {
|
||||
int32_t fr_local[8]; /* space to save locals (%l0..%l7) */
|
||||
int32_t fr_arg[6]; /* space to save arguments (%i0..%i5) */
|
||||
u_int32_t fr_fp; /* space to save frame pointer (%i6) */
|
||||
u_int32_t fr_pc; /* space to save return pc (%i7) */
|
||||
/*
|
||||
* SunOS reserves another 8 words here; this is pointless
|
||||
* but we do it for compatibility.
|
||||
*/
|
||||
int32_t fr_xxx; /* `structure return pointer' (unused) */
|
||||
int32_t fr_argd[6]; /* `arg dump area' (lunacy) */
|
||||
int32_t fr_argx[1]; /* arg extension (args 7..n; variable size) */
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* CCFSZ (C Compiler Frame SiZe) is the size of a stack frame required if
|
||||
* a function is to call C code. It should be just 64, but Sun defined
|
||||
* their frame with space to hold arguments 0 through 5 (plus some junk),
|
||||
* and varargs routines (such as kprintf) demand this, and gcc uses this
|
||||
* area at times anyway.
|
||||
*/
|
||||
#define CCFSZ 96
|
||||
|
||||
/*
|
||||
* Sparc v9 stack frame format.
|
||||
*
|
||||
* Note that the contents of each stack frame may be held only in
|
||||
* machine register windows. In order to get an accurate picture
|
||||
* of the frame, you must first force the kernel to write any such
|
||||
* windows to the stack.
|
||||
*
|
||||
* V9 frames have an odd bias, so you can tall a v9 frame from
|
||||
* a v8 frame by testing the stack pointer's lsb.
|
||||
*/
|
||||
#if !defined(_LOCORE) && !defined(_LIBC)
|
||||
struct frame64 {
|
||||
int64_t fr_local[8]; /* space to save locals (%l0..%l7) */
|
||||
int64_t fr_arg[6]; /* space to save arguments (%i0..%i5) */
|
||||
u_int64_t fr_fp; /* space to save frame pointer (%i6) */
|
||||
u_int64_t fr_pc; /* space to save return pc (%i7) */
|
||||
/*
|
||||
* SVR4 reserves a bunch of extra stuff.
|
||||
*/
|
||||
int64_t fr_argd[6]; /* `register save area' (lunacy) */
|
||||
int64_t fr_argx[0]; /* arg extension (args 7..n; variable size) */
|
||||
};
|
||||
|
||||
#define v9next_frame(f) ((struct frame64*)(f->fr_fp+BIAS))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* CC64FSZ (C Compiler 64-bit Frame SiZe) is the size of a stack frame used
|
||||
* by the compiler in 64-bit mode. It is (16)*8; space for 8 ins, 8 outs.
|
||||
*/
|
||||
#define CC64FSZ 176
|
||||
|
||||
/*
|
||||
* v9 stacks all have a bias of 2047 added to the %sp and %fp, so you can easily
|
||||
* detect it by testing the register for an odd value. Why 2K-1 I don't know.
|
||||
*/
|
||||
#define BIAS (2048-1)
|
||||
|
141
klibc/include/arch/sparc/machine/trap.h
Normal file
141
klibc/include/arch/sparc/machine/trap.h
Normal file
@ -0,0 +1,141 @@
|
||||
/* $NetBSD: trap.h,v 1.11 1999/01/20 00:15:08 pk Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This software was developed by the Computer Systems Engineering group
|
||||
* at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
|
||||
* contributed to Berkeley.
|
||||
*
|
||||
* All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Lawrence Berkeley Laboratory.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)trap.h 8.1 (Berkeley) 6/11/93
|
||||
*/
|
||||
/*
|
||||
* Sun4m support by Aaron Brown, Harvard University.
|
||||
* Changes Copyright (c) 1995 The President and Fellows of Harvard College.
|
||||
* All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_TRAP_H
|
||||
#define _MACHINE_TRAP_H
|
||||
|
||||
/* trap vec (pri) description */
|
||||
#define T_RESET 0x00 /* (1) not actually vectored; jumps to 0 */
|
||||
#define T_TEXTFAULT 0x01 /* (2) address fault during instr fetch */
|
||||
#define T_ILLINST 0x02 /* (3) illegal instruction */
|
||||
#define T_PRIVINST 0x03 /* (4) privileged instruction */
|
||||
#define T_FPDISABLED 0x04 /* (5) fp instr while fp disabled */
|
||||
#define T_WINOF 0x05 /* (6) register window overflow */
|
||||
#define T_WINUF 0x06 /* (7) register window underflow */
|
||||
#define T_ALIGN 0x07 /* (8) address not properly aligned */
|
||||
#define T_FPE 0x08 /* (9) floating point exception */
|
||||
#define T_DATAFAULT 0x09 /* (10) address fault during data fetch */
|
||||
#define T_TAGOF 0x0a /* (11) tag overflow */
|
||||
/* 0x0b unused */
|
||||
/* 0x0c unused */
|
||||
/* 0x0d unused */
|
||||
/* 0x0e unused */
|
||||
/* 0x0f unused */
|
||||
/* 0x10 unused */
|
||||
#define T_L1INT 0x11 /* (27) level 1 interrupt */
|
||||
#define T_L2INT 0x12 /* (26) level 2 interrupt */
|
||||
#define T_L3INT 0x13 /* (25) level 3 interrupt */
|
||||
#define T_L4INT 0x14 /* (24) level 4 interrupt */
|
||||
#define T_L5INT 0x15 /* (23) level 5 interrupt */
|
||||
#define T_L6INT 0x16 /* (22) level 6 interrupt */
|
||||
#define T_L7INT 0x17 /* (21) level 7 interrupt */
|
||||
#define T_L8INT 0x18 /* (20) level 8 interrupt */
|
||||
#define T_L9INT 0x19 /* (19) level 9 interrupt */
|
||||
#define T_L10INT 0x1a /* (18) level 10 interrupt */
|
||||
#define T_L11INT 0x1b /* (17) level 11 interrupt */
|
||||
#define T_L12INT 0x1c /* (16) level 12 interrupt */
|
||||
#define T_L13INT 0x1d /* (15) level 13 interrupt */
|
||||
#define T_L14INT 0x1e /* (14) level 14 interrupt */
|
||||
#define T_L15INT 0x1f /* (13) level 15 interrupt */
|
||||
/* 0x20 unused */
|
||||
/* through 0x23 unused */
|
||||
#define T_CPDISABLED 0x24 /* (5) coprocessor instr while disabled */
|
||||
#define T_UNIMPLFLUSH 0x25 /* Unimplemented FLUSH */
|
||||
/* through 0x27 unused */
|
||||
#define T_CPEXCEPTION 0x28 /* (9) coprocessor exception */
|
||||
/* 0x29 unused */
|
||||
#define T_IDIV0 0x2a /* divide by zero (from hw [su]div instr) */
|
||||
#define T_STOREBUFFAULT 0x2b /* SuperSPARC: Store buffer copy-back fault */
|
||||
/* 0x2c unused */
|
||||
/* through 0x7f unused */
|
||||
|
||||
/* beginning of `user' vectors (from trap instructions) - all priority 12 */
|
||||
#define T_SUN_SYSCALL 0x80 /* system call */
|
||||
#define T_BREAKPOINT 0x81 /* breakpoint `instruction' */
|
||||
#define T_DIV0 0x82 /* division routine was handed 0 */
|
||||
#define T_FLUSHWIN 0x83 /* flush windows */
|
||||
#define T_CLEANWIN 0x84 /* provide clean windows */
|
||||
#define T_RANGECHECK 0x85 /* ? */
|
||||
#define T_FIXALIGN 0x86 /* fix up unaligned accesses */
|
||||
#define T_INTOF 0x87 /* integer overflow ? */
|
||||
#define T_SVR4_SYSCALL 0x88 /* SVR4 system call */
|
||||
#define T_BSD_SYSCALL 0x89 /* BSD system call */
|
||||
#define T_KGDB_EXEC 0x8a /* for kernel gdb */
|
||||
|
||||
/* 0x8b..0xff are currently unallocated, except the following */
|
||||
#define T_SVR4_GETCC 0xa0
|
||||
#define T_SVR4_SETCC 0xa1
|
||||
#define T_SVR4_GETPSR 0xa2
|
||||
#define T_SVR4_SETPSR 0xa3
|
||||
#define T_SVR4_GETHRTIME 0xa4
|
||||
#define T_SVR4_GETHRVTIME 0xa5
|
||||
#define T_SVR4_GETHRESTIME 0xa7
|
||||
|
||||
|
||||
#ifdef _KERNEL /* pseudo traps for locore.s */
|
||||
#define T_RWRET -1 /* need first user window for trap return */
|
||||
#define T_AST -2 /* no-op, just needed reschedule or profile */
|
||||
#endif
|
||||
|
||||
/* flags to system call (flags in %g1 along with syscall number) */
|
||||
#define SYSCALL_G2RFLAG 0x400 /* on success, return to %g2 rather than npc */
|
||||
#define SYSCALL_G7RFLAG 0x800 /* use %g7 as above (deprecated) */
|
||||
|
||||
/*
|
||||
* `software trap' macros to keep people happy (sparc v8 manual says not
|
||||
* to set the upper bits).
|
||||
*/
|
||||
#define ST_BREAKPOINT (T_BREAKPOINT & 0x7f)
|
||||
#define ST_DIV0 (T_DIV0 & 0x7f)
|
||||
#define ST_FLUSHWIN (T_FLUSHWIN & 0x7f)
|
||||
#define ST_SYSCALL (T_SUN_SYSCALL & 0x7f)
|
||||
|
||||
#endif /* _MACHINE_TRAP_H_ */
|
16
klibc/include/arch/sparc64/klibc/archsetjmp.h
Normal file
16
klibc/include/arch/sparc64/klibc/archsetjmp.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* arch/sparc64/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __sp;
|
||||
unsigned long __fp;
|
||||
unsigned long __pc;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/sparc64/klibc/archsignal.h
Normal file
13
klibc/include/arch/sparc64/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/sparc64/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
22
klibc/include/arch/sparc64/klibc/archstat.h
Normal file
22
klibc/include/arch/sparc64/klibc/archstat.h
Normal file
@ -0,0 +1,22 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
/* No nsec fields?! */
|
||||
struct stat {
|
||||
unsigned st_dev;
|
||||
ino_t st_ino;
|
||||
mode_t st_mode;
|
||||
short st_nlink;
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
unsigned st_rdev;
|
||||
off_t st_size;
|
||||
time_t st_atime;
|
||||
time_t st_mtime;
|
||||
time_t st_ctime;
|
||||
off_t st_blksize;
|
||||
off_t st_blocks;
|
||||
unsigned long __unused4[2];
|
||||
};
|
||||
|
||||
#endif
|
10
klibc/include/arch/sparc64/klibc/archsys.h
Normal file
10
klibc/include/arch/sparc64/klibc/archsys.h
Normal file
@ -0,0 +1,10 @@
|
||||
/*
|
||||
* arch/sparc64/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
21
klibc/include/arch/x86_64/klibc/archsetjmp.h
Normal file
21
klibc/include/arch/x86_64/klibc/archsetjmp.h
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* arch/x86_64/include/klibc/archsetjmp.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSETJMP_H
|
||||
#define _KLIBC_ARCHSETJMP_H
|
||||
|
||||
struct __jmp_buf {
|
||||
unsigned long __rbx;
|
||||
unsigned long __rsp;
|
||||
unsigned long __rbp;
|
||||
unsigned long __r12;
|
||||
unsigned long __r13;
|
||||
unsigned long __r14;
|
||||
unsigned long __r15;
|
||||
unsigned long __rip;
|
||||
};
|
||||
|
||||
typedef struct __jmp_buf jmp_buf[1];
|
||||
|
||||
#endif /* _SETJMP_H */
|
13
klibc/include/arch/x86_64/klibc/archsignal.h
Normal file
13
klibc/include/arch/x86_64/klibc/archsignal.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* arch/x86_64/include/klibc/archsignal.h
|
||||
*
|
||||
* Architecture-specific signal definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSIGNAL_H
|
||||
#define _KLIBC_ARCHSIGNAL_H
|
||||
|
||||
/* No special stuff for this architecture */
|
||||
|
||||
#endif
|
26
klibc/include/arch/x86_64/klibc/archstat.h
Normal file
26
klibc/include/arch/x86_64/klibc/archstat.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef _KLIBC_ARCHSTAT_H
|
||||
#define _KLIBC_ARCHSTAT_H
|
||||
|
||||
#define _STATBUF_ST_NSEC
|
||||
|
||||
struct stat {
|
||||
unsigned long st_dev;
|
||||
unsigned long st_ino;
|
||||
unsigned long st_nlink;
|
||||
|
||||
unsigned int st_mode;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
unsigned int __pad0;
|
||||
unsigned long st_rdev;
|
||||
long st_size;
|
||||
long st_blksize;
|
||||
long st_blocks; /* Number 512-byte blocks allocated. */
|
||||
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
long __unused[3];
|
||||
};
|
||||
|
||||
#endif
|
109
klibc/include/arch/x86_64/klibc/archsys.h
Normal file
109
klibc/include/arch/x86_64/klibc/archsys.h
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
* arch/x86_64/include/klibc/archsys.h
|
||||
*
|
||||
* Architecture-specific syscall definitions
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_ARCHSYS_H
|
||||
#define _KLIBC_ARCHSYS_H
|
||||
|
||||
/* The x86-64 syscall headers are needlessly inefficient */
|
||||
|
||||
#undef _syscall0
|
||||
#undef _syscall1
|
||||
#undef _syscall2
|
||||
#undef _syscall3
|
||||
#undef _syscall4
|
||||
#undef _syscall5
|
||||
#undef _syscall6
|
||||
|
||||
#define _syscall0(type,name) \
|
||||
type name (void) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name) \
|
||||
: __syscall_clobber); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#define _syscall1(type,name,type1,arg1) \
|
||||
type name (type1 arg1) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"D" (arg1) \
|
||||
: __syscall_clobber); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#define _syscall2(type,name,type1,arg1,type2,arg2) \
|
||||
type name (type1 arg1,type2 arg2) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"D" (arg1),"S" (arg2) \
|
||||
: __syscall_clobber); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
|
||||
type name (type1 arg1,type2 arg2,type3 arg3) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"D" (arg1),"S" (arg2), \
|
||||
"d" (arg3) \
|
||||
: __syscall_clobber); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
|
||||
type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4) \
|
||||
{ \
|
||||
long __res; \
|
||||
register type4 __r10 asm("%r10") = arg4; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"D" (arg1),"S" (arg2), \
|
||||
"d" (arg3),"r" (__r10) \
|
||||
: __syscall_clobber); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
|
||||
type5,arg5) \
|
||||
type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
|
||||
{ \
|
||||
long __res; \
|
||||
register type4 __r10 asm("%r10") = arg4; \
|
||||
register type5 __r8 asm("%r8") = arg5; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"D" (arg1),"S" (arg2), \
|
||||
"d" (arg3),"r" (__r10),"r" (__r8) \
|
||||
: __syscall_clobber); \
|
||||
__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; \
|
||||
register type4 __r10 asm("%r10") = arg4; \
|
||||
register type5 __r8 asm("%r8") = arg5; \
|
||||
register type6 __r9 asm("%r9") = arg6; \
|
||||
__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"D" (arg1),"S" (arg2), \
|
||||
"d" (arg3),"r" (__r10),"r" (__r8), "r" (__r9) \
|
||||
: __syscall_clobber); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#endif /* _KLIBC_ARCHSYS_H */
|
126
klibc/include/arch/x86_64/sys/io.h
Normal file
126
klibc/include/arch/x86_64/sys/io.h
Normal file
@ -0,0 +1,126 @@
|
||||
#ident "$Id: io.h,v 1.1 2004/01/25 01:34:29 hpa Exp $"
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 2004 H. Peter Anvin - All Rights Reserved
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom
|
||||
* the Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall
|
||||
* be included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* sys/io.h for the i386 architecture
|
||||
*
|
||||
* Basic I/O macros
|
||||
*/
|
||||
|
||||
#ifndef _SYS_IO_H
|
||||
#define _SYS_IO_H 1
|
||||
|
||||
/* I/O-related system calls */
|
||||
|
||||
int iopl(int);
|
||||
int ioperm(unsigned long, unsigned long, int);
|
||||
|
||||
/* Basic I/O macros */
|
||||
|
||||
static __inline__ void
|
||||
outb(unsigned char __v, unsigned short __p)
|
||||
{
|
||||
asm volatile("outb %0,%1" : : "a" (__v), "dN" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outw(unsigned short __v, unsigned short __p)
|
||||
{
|
||||
asm volatile("outw %0,%1" : : "a" (__v), "dN" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outl(unsigned int __v, unsigned short __p)
|
||||
{
|
||||
asm volatile("outl %0,%1" : : "a" (__v), "dN" (__p));
|
||||
}
|
||||
|
||||
static __inline__ unsigned char
|
||||
inb(unsigned short __p)
|
||||
{
|
||||
unsigned char __v;
|
||||
asm volatile("inb %1,%0" : "=a" (__v) : "dN" (__p));
|
||||
return v;
|
||||
}
|
||||
|
||||
static __inline__ unsigned short
|
||||
inw(unsigned short __p)
|
||||
{
|
||||
unsigned short __v;
|
||||
asm volatile("inw %1,%0" : "=a" (__v) : "dN" (__p));
|
||||
return v;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int
|
||||
inl(unsigned short __p)
|
||||
{
|
||||
unsigned int __v;
|
||||
asm volatile("inl %1,%0" : "=a" (__v) : "dN" (__p));
|
||||
return v;
|
||||
}
|
||||
|
||||
/* String I/O macros */
|
||||
|
||||
static __inline__ void
|
||||
outsb (unsigned short __p, const void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; outsb" : "+S" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outsw (unsigned short __p, const void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; outsw" : "+S" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
outsl (unsigned short __p, const void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; outsl" : "+S" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
|
||||
static __inline__ void
|
||||
insb (unsigned short __p, void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; insb" : "+D" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
insw (unsigned short __p, void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; insw" : "+D" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
insl (unsigned short __p, void *__d, unsigned long __n)
|
||||
{
|
||||
asm volatile("cld; rep; insl" : "+D" (__d), "+c" (__n) : "d" (__p));
|
||||
}
|
||||
|
||||
#endif /* _SYS_IO_H */
|
24
klibc/include/arpa/inet.h
Normal file
24
klibc/include/arpa/inet.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* arpa/inet.h
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_INET_H
|
||||
#define _ARPA_INET_H
|
||||
|
||||
#include <klibc/extern.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/in6.h>
|
||||
|
||||
__extern uint32_t inet_addr(const char *);
|
||||
__extern int inet_aton(const char *, struct in_addr *);
|
||||
__extern char *inet_ntoa(struct in_addr);
|
||||
__extern int inet_pton(int, const char *, void *);
|
||||
__extern const char *inet_ntop(int, const void *, char *, size_t);
|
||||
__extern unsigned int inet_nsap_addr(const char *, unsigned char *, int);
|
||||
__extern char *inet_nsap_ntoa(int, const unsigned char *, char *);
|
||||
|
||||
#endif /* _ARPA_INET_H */
|
||||
|
||||
|
22
klibc/include/assert.h
Normal file
22
klibc/include/assert.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* assert.h
|
||||
*/
|
||||
|
||||
#ifndef _ASSERT_H
|
||||
#define _ASSERT_H
|
||||
|
||||
#ifdef NDEBUG
|
||||
|
||||
#define assert(x) ((void)(x))
|
||||
|
||||
#else
|
||||
|
||||
extern void __assert_fail(const char *, const char *,
|
||||
unsigned int);
|
||||
|
||||
#define assert(x) ((x) ? (void)0 : __assert_fail(#x, __FILE__, __LINE__))
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _ASSERT_H */
|
||||
|
14
klibc/include/bits32/bitsize/limits.h
Normal file
14
klibc/include/bits32/bitsize/limits.h
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* bits32/limits.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_LIMITS_H
|
||||
#define _BITSIZE_LIMITS_H
|
||||
|
||||
#define LONG_BIT 32
|
||||
|
||||
#define LONG_MIN (-2147483647L-1)
|
||||
#define LONG_MAX 2147483647L
|
||||
#define ULONG_MAX 4294967295UL
|
||||
|
||||
#endif /* _BITSIZE_LIMITS_H */
|
18
klibc/include/bits32/bitsize/stddef.h
Normal file
18
klibc/include/bits32/bitsize/stddef.h
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* bits32/stddef.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDDEF_H
|
||||
#define _BITSIZE_STDDEF_H
|
||||
|
||||
#define _SIZE_T
|
||||
#if defined(__s390__) || defined(__hppa__) || defined(__cris__)
|
||||
typedef unsigned long size_t;
|
||||
#else
|
||||
typedef unsigned int size_t;
|
||||
#endif
|
||||
|
||||
#define _PTRDIFF_T
|
||||
typedef signed int ptrdiff_t;
|
||||
|
||||
#endif /* _BITSIZE_STDDEF_H */
|
34
klibc/include/bits32/bitsize/stdint.h
Normal file
34
klibc/include/bits32/bitsize/stdint.h
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* bits32/stdint.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDINT_H
|
||||
#define _BITSIZE_STDINT_H
|
||||
|
||||
typedef signed char int8_t;
|
||||
typedef short int int16_t;
|
||||
typedef int int32_t;
|
||||
typedef long long int int64_t;
|
||||
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short int uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned long long int uint64_t;
|
||||
|
||||
typedef int int_fast16_t;
|
||||
typedef int int_fast32_t;
|
||||
|
||||
typedef unsigned int uint_fast16_t;
|
||||
typedef unsigned int uint_fast32_t;
|
||||
|
||||
typedef int intptr_t;
|
||||
typedef unsigned int uintptr_t;
|
||||
|
||||
#define __INT64_C(c) c ## LL
|
||||
#define __UINT64_C(c) c ## ULL
|
||||
|
||||
#define __PRI64_RANK "ll"
|
||||
#define __PRIFAST_RANK ""
|
||||
#define __PRIPTR_RANK ""
|
||||
|
||||
#endif /* _BITSIZE_STDINT_H */
|
18
klibc/include/bits32/bitsize/stdintconst.h
Normal file
18
klibc/include/bits32/bitsize/stdintconst.h
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* bits32/stdintconst.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDINTCONST_H
|
||||
#define _BITSIZE_STDINTCONST_H
|
||||
|
||||
#define INT_FAST16_C(c) INT32_C(c)
|
||||
#define INT_FAST32_C(c) INT32_C(c)
|
||||
|
||||
#define UINT_FAST16_C(c) UINT32_C(c)
|
||||
#define UINT_FAST32_C(c) UINT32_C(c)
|
||||
|
||||
#define INTPTR_C(c) INT32_C(c)
|
||||
#define UINTPTR_C(c) UINT32_C(c)
|
||||
#define PTRDIFF_C(c) INT32_C(c)
|
||||
|
||||
#endif /* _BITSIZE_STDINTCONST_H */
|
22
klibc/include/bits32/bitsize/stdintlimits.h
Normal file
22
klibc/include/bits32/bitsize/stdintlimits.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* bits32/stdintlimits.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDINTLIMITS_H
|
||||
#define _BITSIZE_STDINTLIMITS_H
|
||||
|
||||
#define INT_FAST16_MIN INT32_MIN
|
||||
#define INT_FAST32_MIN INT32_MIN
|
||||
#define INT_FAST16_MAX INT32_MAX
|
||||
#define INT_FAST32_MAX INT32_MAX
|
||||
#define UINT_FAST16_MAX UINT32_MAX
|
||||
#define UINT_FAST32_MAX UINT32_MAX
|
||||
|
||||
#define INTPTR_MIN INT32_MIN
|
||||
#define INTPTR_MAX INT32_MAX
|
||||
#define UINTPTR_MAX UINT32_MAX
|
||||
|
||||
#define PTRDIFF_MIN INT32_MIN
|
||||
#define PTRDIFF_MAX INT32_MAX
|
||||
|
||||
#endif /* _BITSIZE_STDINTLIMITS_H */
|
14
klibc/include/bits64/bitsize/limits.h
Normal file
14
klibc/include/bits64/bitsize/limits.h
Normal file
@ -0,0 +1,14 @@
|
||||
/*
|
||||
* bits64/limits.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_LIMITS_H
|
||||
#define _BITSIZE_LIMITS_H
|
||||
|
||||
#define LONG_BIT 64
|
||||
|
||||
#define LONG_MIN (-9223372036854775807L-1)
|
||||
#define LONG_MAX 9223372036854775807L
|
||||
#define ULONG_MAX 18446744073709551615UL
|
||||
|
||||
#endif /* _BITSIZE_LIMITS_H */
|
13
klibc/include/bits64/bitsize/stddef.h
Normal file
13
klibc/include/bits64/bitsize/stddef.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* bits64/stddef.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDDEF_H
|
||||
#define _BITSIZE_STDDEF_H
|
||||
|
||||
#define _SIZE_T
|
||||
typedef unsigned long size_t;
|
||||
#define _PTRDIFF_T
|
||||
typedef signed long ptrdiff_t;
|
||||
|
||||
#endif /* _BITSIZE_STDDEF_H */
|
36
klibc/include/bits64/bitsize/stdint.h
Normal file
36
klibc/include/bits64/bitsize/stdint.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* bits64/stdint.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDINT_H
|
||||
#define _BITSIZE_STDINT_H
|
||||
|
||||
typedef signed char int8_t;
|
||||
typedef short int int16_t;
|
||||
typedef int int32_t;
|
||||
typedef long int int64_t;
|
||||
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short int uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef unsigned long int uint64_t;
|
||||
|
||||
typedef long int int_fast16_t;
|
||||
typedef long int int_fast32_t;
|
||||
|
||||
typedef unsigned long int uint_fast16_t;
|
||||
typedef unsigned long int uint_fast32_t;
|
||||
|
||||
typedef long int intptr_t;
|
||||
typedef unsigned long int uintptr_t;
|
||||
|
||||
#define __INT64_C(c) c ## L
|
||||
#define __UINT64_C(c) c ## UL
|
||||
|
||||
#define __PRI64_RANK "l"
|
||||
#define __PRIFAST_RANK "l"
|
||||
#define __PRIPTR_RANK "l"
|
||||
|
||||
#endif /* _BITSIZE_STDINT_H */
|
||||
|
||||
|
18
klibc/include/bits64/bitsize/stdintconst.h
Normal file
18
klibc/include/bits64/bitsize/stdintconst.h
Normal file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* bits64/stdintconst.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDINTCONST_H
|
||||
#define _BITSIZE_STDINTCONST_H
|
||||
|
||||
#define INT_FAST16_C(c) INT64_C(c)
|
||||
#define INT_FAST32_C(c) INT64_C(c)
|
||||
|
||||
#define UINT_FAST16_C(c) UINT64_C(c)
|
||||
#define UINT_FAST32_C(c) UINT64_C(c)
|
||||
|
||||
#define INTPTR_C(c) INT64_C(c)
|
||||
#define UINTPTR_C(c) UINT64_C(c)
|
||||
#define PTRDIFF_C(c) INT64_C(c)
|
||||
|
||||
#endif /* _BITSIZE_STDINTCONST_H */
|
22
klibc/include/bits64/bitsize/stdintlimits.h
Normal file
22
klibc/include/bits64/bitsize/stdintlimits.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* bits64/stdintlimits.h
|
||||
*/
|
||||
|
||||
#ifndef _BITSIZE_STDINTLIMITS_H
|
||||
#define _BITSIZE_STDINTLIMITS_H
|
||||
|
||||
#define INT_FAST16_MIN INT64_MIN
|
||||
#define INT_FAST32_MIN INT64_MIN
|
||||
#define INT_FAST16_MAX INT64_MAX
|
||||
#define INT_FAST32_MAX INT64_MAX
|
||||
#define UINT_FAST16_MAX UINT64_MAX
|
||||
#define UINT_FAST32_MAX UINT64_MAX
|
||||
|
||||
#define INTPTR_MIN INT64_MIN
|
||||
#define INTPTR_MAX INT64_MAX
|
||||
#define UINTPTR_MAX UINT64_MAX
|
||||
|
||||
#define PTRDIFF_MIN INT64_MIN
|
||||
#define PTRDIFF_MAX INT64_MAX
|
||||
|
||||
#endif /* _BITSIZE_STDINTLIMITS_H */
|
119
klibc/include/ctype.h
Normal file
119
klibc/include/ctype.h
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* ctype.h
|
||||
*
|
||||
* This assumes ISO 8859-1, being a reasonable superset of ASCII.
|
||||
*/
|
||||
|
||||
#ifndef _CTYPE_H
|
||||
#define _CTYPE_H
|
||||
|
||||
#ifndef __CTYPE_NO_INLINE
|
||||
# define __ctype_inline extern __inline__
|
||||
#else
|
||||
# define __ctype_inline
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This relies on the following definitions:
|
||||
*
|
||||
* cntrl = !print
|
||||
* alpha = upper|lower
|
||||
* graph = punct|alpha|digit
|
||||
* blank = '\t' || ' ' (per POSIX requirement)
|
||||
*/
|
||||
enum {
|
||||
__ctype_upper = (1 << 0),
|
||||
__ctype_lower = (1 << 1),
|
||||
__ctype_digit = (1 << 2),
|
||||
__ctype_xdigit = (1 << 3),
|
||||
__ctype_space = (1 << 4),
|
||||
__ctype_print = (1 << 5),
|
||||
__ctype_punct = (1 << 6),
|
||||
__ctype_cntrl = (1 << 7),
|
||||
};
|
||||
|
||||
extern const unsigned char __ctypes[];
|
||||
|
||||
__ctype_inline int isalnum(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] &
|
||||
(__ctype_upper|__ctype_lower|__ctype_digit);
|
||||
}
|
||||
|
||||
__ctype_inline int isalpha(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] &
|
||||
(__ctype_upper|__ctype_lower);
|
||||
}
|
||||
|
||||
__ctype_inline int isascii(int __c)
|
||||
{
|
||||
return !(__c & ~0x7f);
|
||||
}
|
||||
|
||||
__ctype_inline int isblank(int __c)
|
||||
{
|
||||
return (__c == '\t') || (__c == ' ');
|
||||
}
|
||||
|
||||
__ctype_inline int iscntrl(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_cntrl;
|
||||
}
|
||||
|
||||
__ctype_inline int isdigit(int __c)
|
||||
{
|
||||
return ((unsigned)__c - '0') <= 9;
|
||||
}
|
||||
|
||||
__ctype_inline int isgraph(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] &
|
||||
(__ctype_upper|__ctype_lower|__ctype_digit|__ctype_punct);
|
||||
}
|
||||
|
||||
__ctype_inline int islower(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_lower;
|
||||
}
|
||||
|
||||
__ctype_inline int isprint(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_print;
|
||||
}
|
||||
|
||||
__ctype_inline int ispunct(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_punct;
|
||||
}
|
||||
|
||||
__ctype_inline int isspace(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_space;
|
||||
}
|
||||
|
||||
__ctype_inline int isupper(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_upper;
|
||||
}
|
||||
|
||||
__ctype_inline int isxdigit(int __c)
|
||||
{
|
||||
return __ctypes[__c+1] & __ctype_xdigit;
|
||||
}
|
||||
|
||||
/* Note: this is decimal, not hex, to avoid accidental promotion to unsigned */
|
||||
#define _toupper(__c) ((__c) & ~32)
|
||||
#define _tolower(__c) ((__c) | 32)
|
||||
|
||||
__ctype_inline int toupper(int __c)
|
||||
{
|
||||
return islower(__c) ? _toupper(__c) : __c;
|
||||
}
|
||||
|
||||
__ctype_inline int tolower(int __c)
|
||||
{
|
||||
return isupper(__c) ? _tolower(__c) : __c;
|
||||
}
|
||||
|
||||
#endif /* _CTYPE_H */
|
32
klibc/include/dirent.h
Normal file
32
klibc/include/dirent.h
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* dirent.h
|
||||
*/
|
||||
|
||||
#ifndef _DIRENT_H
|
||||
#define _DIRENT_H
|
||||
|
||||
#include <klibc/extern.h>
|
||||
#include <sys/dirent.h>
|
||||
|
||||
struct _IO_dir {
|
||||
int __fd;
|
||||
|
||||
#ifdef __KLIBC_DIRENT_INTERNALS
|
||||
/* These fields for internal use only */
|
||||
|
||||
size_t bytes_left;
|
||||
struct dirent *next;
|
||||
/* Declaring this as an array of struct enforces correct alignment */
|
||||
struct dirent buffer[15]; /* 15 times max dirent size =~ 4K */
|
||||
#endif
|
||||
};
|
||||
typedef struct _IO_dir DIR;
|
||||
|
||||
__extern DIR *opendir(const char *);
|
||||
__extern struct dirent *readdir(DIR *);
|
||||
__extern int closedir(DIR *);
|
||||
static __inline__ int dirfd (DIR *__d) {
|
||||
return __d->__fd;
|
||||
}
|
||||
|
||||
#endif /* _DIRENT_H */
|
12
klibc/include/elf.h
Normal file
12
klibc/include/elf.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* elf.h
|
||||
*/
|
||||
|
||||
#ifndef _ELF_H
|
||||
#define _ELF_H
|
||||
|
||||
#include <sys/elf32.h>
|
||||
#include <sys/elf64.h>
|
||||
|
||||
#endif /* _ELF_H */
|
||||
|
42
klibc/include/endian.h
Normal file
42
klibc/include/endian.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* endian.h
|
||||
*/
|
||||
|
||||
#ifndef _ENDIAN_H
|
||||
#define _ENDIAN_H
|
||||
|
||||
#include <klibc/compiler.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/* Linux' asm/byteorder.h defines either __LITTLE_ENDIAN or
|
||||
__BIG_ENDIAN, but the glibc/BSD-ish macros expect both to be
|
||||
defined with __BYTE_ORDER defining which is actually used... */
|
||||
|
||||
#if defined(__LITTLE_ENDIAN)
|
||||
# undef __LITTLE_ENDIAN
|
||||
# define __LITTLE_ENDIAN 1234
|
||||
# define __BIG_ENDIAN 4321
|
||||
# define __PDP_ENDIAN 3412
|
||||
# define __BYTE_ORDER __LITTLE_ENDIAN
|
||||
#elif defined(__BIG_ENDIAN)
|
||||
# undef __BIG_ENDIAN
|
||||
# define __LITTLE_ENDIAN 1234
|
||||
# define __BIG_ENDIAN 4321
|
||||
# define __PDP_ENDIAN 3412
|
||||
# define __BYTE_ORDER __BIG_ENDIAN
|
||||
#elif defined(__PDP_ENDIAN)
|
||||
# undef __PDP_ENDIAN
|
||||
# define __LITTLE_ENDIAN 1234
|
||||
# define __BIG_ENDIAN 4321
|
||||
# define __PDP_ENDIAN 3412
|
||||
# define __BYTE_ORDER __PDP_ENDIAN
|
||||
#else
|
||||
# error "Unknown byte order!"
|
||||
#endif
|
||||
|
||||
#define LITTLE_ENDIAN __LITTLE_ENDIAN
|
||||
#define BIG_ENDIAN __BIG_ENDIAN
|
||||
#define PDP_ENDIAN __PDP_ENDIAN
|
||||
#define BYTE_ORDER __BYTE_ORDER
|
||||
|
||||
#endif /* _ENDIAN_H */
|
8
klibc/include/errno.h
Normal file
8
klibc/include/errno.h
Normal file
@ -0,0 +1,8 @@
|
||||
/*
|
||||
* errno.h
|
||||
*/
|
||||
|
||||
#include <klibc/extern.h>
|
||||
#include <asm/errno.h>
|
||||
|
||||
__extern int errno;
|
46
klibc/include/fcntl.h
Normal file
46
klibc/include/fcntl.h
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* fcntl.h
|
||||
*/
|
||||
|
||||
#ifndef _FCNTL_H
|
||||
#define _FCNTL_H
|
||||
|
||||
#include <klibc/extern.h>
|
||||
#include <klibc/compiler.h>
|
||||
#include <sys/types.h>
|
||||
#if defined(__mips__) && !defined(__mips64__)
|
||||
# include <klibc/archfcntl.h>
|
||||
#endif
|
||||
#include <linux/fcntl.h>
|
||||
|
||||
/* This is ugly, but "struct flock" has actually been defined with
|
||||
a long off_t, so it's really "struct flock64". It just happens
|
||||
to work. Gag. Barf.
|
||||
|
||||
This happens to work on all 32-bit architectures except MIPS. */
|
||||
|
||||
#ifdef F_GETLK64
|
||||
# undef F_GETLK
|
||||
# define F_GETLK F_GETLK64
|
||||
#endif
|
||||
|
||||
#ifdef F_SETLK64
|
||||
# undef F_SETLK
|
||||
# define F_SETLK F_SETLK64
|
||||
#endif
|
||||
|
||||
#ifdef F_SETLKW64
|
||||
# undef F_SETLKW
|
||||
# define F_SETLKW F_SETLKW64
|
||||
#endif
|
||||
|
||||
/* This is defined here as well as in <unistd.h> since old-style code
|
||||
would still include <fcntl.h> when using open(), and open() being
|
||||
a varadic function changes its calling convention on some architectures. */
|
||||
#ifndef _KLIBC_IN_OPEN_C
|
||||
__extern int open(const char *, int, ...);
|
||||
#endif
|
||||
|
||||
__extern int fcntl(int, int, ...);
|
||||
|
||||
#endif /* _FCNTL_H */
|
13
klibc/include/grp.h
Normal file
13
klibc/include/grp.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* grp.h
|
||||
*/
|
||||
|
||||
#ifndef _GRP_H
|
||||
#define _GRP_H
|
||||
|
||||
#include <klibc/extern.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
__extern int setgroups(size_t, const gid_t *);
|
||||
|
||||
#endif /* _GRP_H */
|
226
klibc/include/inttypes.h
Normal file
226
klibc/include/inttypes.h
Normal file
@ -0,0 +1,226 @@
|
||||
/*
|
||||
* inttypes.h
|
||||
*/
|
||||
|
||||
#ifndef _INTTYPES_H
|
||||
#define _INTTYPES_H
|
||||
|
||||
#include <klibc/extern.h>
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
static __inline__ intmax_t imaxabs(intmax_t __n)
|
||||
{
|
||||
return (__n < (intmax_t)0) ? -__n : __n;
|
||||
}
|
||||
|
||||
__extern intmax_t strtoimax(const char *, char **, int);
|
||||
__extern uintmax_t strtoumax(const char *, char **, int);
|
||||
|
||||
/* extensions */
|
||||
__extern intmax_t strntoimax(const char *, char **, int, size_t);
|
||||
__extern uintmax_t strntoumax(const char *, char **, int, size_t);
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS)
|
||||
|
||||
#define PRId8 "d"
|
||||
#define PRId16 "d"
|
||||
#define PRId32 "d"
|
||||
#define PRId64 __PRI64_RANK "d"
|
||||
|
||||
#define PRIdLEAST8 "d"
|
||||
#define PRIdLEAST16 "d"
|
||||
#define PRIdLEAST32 "d"
|
||||
#define PRIdLEAST64 __PRI64_RANK "d"
|
||||
|
||||
#define PRIdFAST8 "d"
|
||||
#define PRIdFAST16 __PRIFAST_RANK "d"
|
||||
#define PRIdFAST32 __PRIFAST_RANK "d"
|
||||
#define PRIdFAST64 __PRI64_RANK "d"
|
||||
|
||||
#define PRIdMAX __PRI64_RANK "d"
|
||||
#define PRIdPTR __PRIPTR_RANK "d"
|
||||
|
||||
#define PRIi8 "i"
|
||||
#define PRIi16 "i"
|
||||
#define PRIi32 "i"
|
||||
#define PRIi64 __PRI64_RANK "i"
|
||||
|
||||
#define PRIiLEAST8 "i"
|
||||
#define PRIiLEAST16 "i"
|
||||
#define PRIiLEAST32 "i"
|
||||
#define PRIiLEAST64 __PRI64_RANK "i"
|
||||
|
||||
#define PRIiFAST8 "i"
|
||||
#define PRIiFAST16 __PRIFAST_RANK "i"
|
||||
#define PRIiFAST32 __PRIFAST_RANK "i"
|
||||
#define PRIiFAST64 __PRI64_RANK "i"
|
||||
|
||||
#define PRIiMAX __PRI64_RANK "i"
|
||||
#define PRIiPTR __PRIPTR_RANK "i"
|
||||
|
||||
#define PRIo8 "o"
|
||||
#define PRIo16 "o"
|
||||
#define PRIo32 "o"
|
||||
#define PRIo64 __PRI64_RANK "o"
|
||||
|
||||
#define PRIoLEAST8 "o"
|
||||
#define PRIoLEAST16 "o"
|
||||
#define PRIoLEAST32 "o"
|
||||
#define PRIoLEAST64 __PRI64_RANK "o"
|
||||
|
||||
#define PRIoFAST8 "o"
|
||||
#define PRIoFAST16 __PRIFAST_RANK "o"
|
||||
#define PRIoFAST32 __PRIFAST_RANK "o"
|
||||
#define PRIoFAST64 __PRI64_RANK "o"
|
||||
|
||||
#define PRIoMAX __PRI64_RANK "o"
|
||||
#define PRIoPTR __PRIPTR_RANK "o"
|
||||
|
||||
#define PRIu8 "u"
|
||||
#define PRIu16 "u"
|
||||
#define PRIu32 "u"
|
||||
#define PRIu64 __PRI64_RANK "u"
|
||||
|
||||
#define PRIuLEAST8 "u"
|
||||
#define PRIuLEAST16 "u"
|
||||
#define PRIuLEAST32 "u"
|
||||
#define PRIuLEAST64 __PRI64_RANK "u"
|
||||
|
||||
#define PRIuFAST8 "u"
|
||||
#define PRIuFAST16 __PRIFAST_RANK "u"
|
||||
#define PRIuFAST32 __PRIFAST_RANK "u"
|
||||
#define PRIuFAST64 __PRI64_RANK "u"
|
||||
|
||||
#define PRIuMAX __PRI64_RANK "u"
|
||||
#define PRIuPTR __PRIPTR_RANK "u"
|
||||
|
||||
#define PRIx8 "x"
|
||||
#define PRIx16 "x"
|
||||
#define PRIx32 "x"
|
||||
#define PRIx64 __PRI64_RANK "x"
|
||||
|
||||
#define PRIxLEAST8 "x"
|
||||
#define PRIxLEAST16 "x"
|
||||
#define PRIxLEAST32 "x"
|
||||
#define PRIxLEAST64 __PRI64_RANK "x"
|
||||
|
||||
#define PRIxFAST8 "x"
|
||||
#define PRIxFAST16 __PRIFAST_RANK "x"
|
||||
#define PRIxFAST32 __PRIFAST_RANK "x"
|
||||
#define PRIxFAST64 __PRI64_RANK "x"
|
||||
|
||||
#define PRIxMAX __PRI64_RANK "x"
|
||||
#define PRIxPTR __PRIPTR_RANK "x"
|
||||
|
||||
#define PRIX8 "X"
|
||||
#define PRIX16 "X"
|
||||
#define PRIX32 "X"
|
||||
#define PRIX64 __PRI64_RANK "X"
|
||||
|
||||
#define PRIXLEAST8 "X"
|
||||
#define PRIXLEAST16 "X"
|
||||
#define PRIXLEAST32 "X"
|
||||
#define PRIXLEAST64 __PRI64_RANK "X"
|
||||
|
||||
#define PRIXFAST8 "X"
|
||||
#define PRIXFAST16 __PRIFAST_RANK "X"
|
||||
#define PRIXFAST32 __PRIFAST_RANK "X"
|
||||
#define PRIXFAST64 __PRI64_RANK "X"
|
||||
|
||||
#define PRIXMAX __PRI64_RANK "X"
|
||||
#define PRIXPTR __PRIPTR_RANK "X"
|
||||
|
||||
#define SCNd8 "hhd"
|
||||
#define SCNd16 "hd"
|
||||
#define SCNd32 "d"
|
||||
#define SCNd64 __PRI64_RANK "d"
|
||||
|
||||
#define SCNdLEAST8 "hhd"
|
||||
#define SCNdLEAST16 "hd"
|
||||
#define SCNdLEAST32 "d"
|
||||
#define SCNdLEAST64 __PRI64_RANK "d"
|
||||
|
||||
#define SCNdFAST8 "hhd"
|
||||
#define SCNdFAST16 __PRIFAST_RANK "d"
|
||||
#define SCNdFAST32 __PRIFAST_RANK "d"
|
||||
#define SCNdFAST64 __PRI64_RANK "d"
|
||||
|
||||
#define SCNdMAX __PRI64_RANK "d"
|
||||
#define SCNdPTR __PRIPTR_RANK "d"
|
||||
|
||||
#define SCNi8 "hhi"
|
||||
#define SCNi16 "hi"
|
||||
#define SCNi32 "i"
|
||||
#define SCNi64 __PRI64_RANK "i"
|
||||
|
||||
#define SCNiLEAST8 "hhi"
|
||||
#define SCNiLEAST16 "hi"
|
||||
#define SCNiLEAST32 "i"
|
||||
#define SCNiLEAST64 __PRI64_RANK "i"
|
||||
|
||||
#define SCNiFAST8 "hhi"
|
||||
#define SCNiFAST16 __PRIFAST_RANK "i"
|
||||
#define SCNiFAST32 __PRIFAST_RANK "i"
|
||||
#define SCNiFAST64 __PRI64_RANK "i"
|
||||
|
||||
#define SCNiMAX __PRI64_RANK "i"
|
||||
#define SCNiPTR __PRIPTR_RANK "i"
|
||||
|
||||
#define SCNo8 "hho"
|
||||
#define SCNo16 "ho"
|
||||
#define SCNo32 "o"
|
||||
#define SCNo64 __PRI64_RANK "o"
|
||||
|
||||
#define SCNoLEAST8 "hho"
|
||||
#define SCNoLEAST16 "ho"
|
||||
#define SCNoLEAST32 "o"
|
||||
#define SCNoLEAST64 __PRI64_RANK "o"
|
||||
|
||||
#define SCNoFAST8 "hho"
|
||||
#define SCNoFAST16 __PRIFAST_RANK "o"
|
||||
#define SCNoFAST32 __PRIFAST_RANK "o"
|
||||
#define SCNoFAST64 __PRI64_RANK "o"
|
||||
|
||||
#define SCNoMAX __PRI64_RANK "o"
|
||||
#define SCNoPTR __PRIPTR_RANK "o"
|
||||
|
||||
#define SCNu8 "hhu"
|
||||
#define SCNu16 "hu"
|
||||
#define SCNu32 "u"
|
||||
#define SCNu64 __PRI64_RANK "u"
|
||||
|
||||
#define SCNuLEAST8 "hhu"
|
||||
#define SCNuLEAST16 "hu"
|
||||
#define SCNuLEAST32 "u"
|
||||
#define SCNuLEAST64 __PRI64_RANK "u"
|
||||
|
||||
#define SCNuFAST8 "hhu"
|
||||
#define SCNuFAST16 __PRIFAST_RANK "u"
|
||||
#define SCNuFAST32 __PRIFAST_RANK "u"
|
||||
#define SCNuFAST64 __PRI64_RANK "u"
|
||||
|
||||
#define SCNuMAX __PRI64_RANK "u"
|
||||
#define SCNuPTR __PRIPTR_RANK "u"
|
||||
|
||||
#define SCNx8 "hhx"
|
||||
#define SCNx16 "hx"
|
||||
#define SCNx32 "x"
|
||||
#define SCNx64 __PRI64_RANK "x"
|
||||
|
||||
#define SCNxLEAST8 "hhx"
|
||||
#define SCNxLEAST16 "hx"
|
||||
#define SCNxLEAST32 "x"
|
||||
#define SCNxLEAST64 __PRI64_RANK "x"
|
||||
|
||||
#define SCNxFAST8 "hhx"
|
||||
#define SCNxFAST16 __PRIFAST_RANK "x"
|
||||
#define SCNxFAST32 __PRIFAST_RANK "x"
|
||||
#define SCNxFAST64 __PRI64_RANK "x"
|
||||
|
||||
#define SCNxMAX __PRI64_RANK "x"
|
||||
#define SCNxPTR __PRIPTR_RANK "x"
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _INTTYPES_H */
|
119
klibc/include/klibc/compiler.h
Normal file
119
klibc/include/klibc/compiler.h
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* klibc/compiler.h
|
||||
*
|
||||
* Various compiler features
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_COMPILER_H
|
||||
#define _KLIBC_COMPILER_H
|
||||
|
||||
/* Specific calling conventions */
|
||||
/* __cdecl is used when we want varadic and non-varadic functions to have
|
||||
the same binary calling convention. */
|
||||
#ifdef __i386__
|
||||
# ifdef __GNUC__
|
||||
# define __cdecl __attribute__((cdecl,regparm(0)))
|
||||
# else
|
||||
/* Most other C compilers have __cdecl as a keyword */
|
||||
# endif
|
||||
#else
|
||||
# define __cdecl /* Meaningless on non-i386 */
|
||||
#endif
|
||||
|
||||
/* How to declare a function that *must* be inlined */
|
||||
#ifdef __GNUC__
|
||||
# if __GNUC_MAJOR__ >= 3
|
||||
# define __must_inline static __inline__ __attribute__((always_inline))
|
||||
# else
|
||||
# define __must_inline extern __inline__
|
||||
# endif
|
||||
#else
|
||||
# define __must_inline inline /* Just hope this works... */
|
||||
#endif
|
||||
|
||||
/* How to declare a function that does not return */
|
||||
#ifdef __GNUC__
|
||||
# define __noreturn void __attribute__((noreturn))
|
||||
#else
|
||||
# define __noreturn void
|
||||
#endif
|
||||
|
||||
/* "const" function:
|
||||
|
||||
Many functions do not examine any values except their arguments,
|
||||
and have no effects except the return value. Basically this is
|
||||
just slightly more strict class than the `pure' attribute above,
|
||||
since function is not allowed to read global memory.
|
||||
|
||||
Note that a function that has pointer arguments and examines the
|
||||
data pointed to must _not_ be declared `const'. Likewise, a
|
||||
function that calls a non-`const' function usually must not be
|
||||
`const'. It does not make sense for a `const' function to return
|
||||
`void'.
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
# define __constfunc __attribute__((const))
|
||||
#else
|
||||
# define __constfunc
|
||||
#endif
|
||||
#undef __attribute_const__
|
||||
#define __attribute_const__ __constfunc
|
||||
|
||||
/* "pure" function:
|
||||
|
||||
Many functions have no effects except the return value and their
|
||||
return value depends only on the parameters and/or global
|
||||
variables. Such a function can be subject to common subexpression
|
||||
elimination and loop optimization just as an arithmetic operator
|
||||
would be. These functions should be declared with the attribute
|
||||
`pure'.
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
# define __purefunc __attribute__((pure))
|
||||
#else
|
||||
# define __purefunc
|
||||
#endif
|
||||
#undef __attribute_pure__
|
||||
#define __attribute_pure__ __purefunc
|
||||
|
||||
/* Format attribute */
|
||||
#ifdef __GNUC__
|
||||
# define __formatfunc(t,f,a) __attribute__((format(t,f,a)))
|
||||
#else
|
||||
# define __formatfunc(t,f,a)
|
||||
#endif
|
||||
|
||||
/* malloc() function (returns unaliased pointer) */
|
||||
#if defined(__GNUC__) && (__GNUC_MAJOR__ >= 3)
|
||||
# define __mallocfunc __attribute__((malloc))
|
||||
#else
|
||||
# define __mallocfunc
|
||||
#endif
|
||||
|
||||
/* likely/unlikely */
|
||||
#if defined(__GNUC__) && (__GNUC_MAJOR__ > 2 || (__GNUC_MAJOR__ == 2 && __GNUC_MINOR__ >= 95))
|
||||
# define __likely(x) __builtin_expect((x), 1)
|
||||
# define __unlikely(x) __builtin_expect((x), 0)
|
||||
#else
|
||||
# define __likely(x) (x)
|
||||
# define __unlikely(x) (x)
|
||||
#endif
|
||||
|
||||
/* Possibly unused function */
|
||||
#ifdef __GNUC__
|
||||
# define __unusedfunc __attribute__((unused))
|
||||
#else
|
||||
# define __unusedfunc
|
||||
#endif
|
||||
|
||||
/* It's all user space... */
|
||||
#define __user
|
||||
|
||||
/* The bitwise attribute: disallow arithmetric operations */
|
||||
#ifdef __CHECKER__ /* sparse only */
|
||||
# define __bitwise __attribute__((bitwise))
|
||||
#else
|
||||
# define __bitwise
|
||||
#endif
|
||||
|
||||
#endif
|
16
klibc/include/klibc/diverr.h
Normal file
16
klibc/include/klibc/diverr.h
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* klibc/diverr.h
|
||||
*/
|
||||
|
||||
#ifndef _KLIBC_DIVERR_H
|
||||
#define _KLIBC_DIVERR_H
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
static __inline__ void
|
||||
__divide_error(void)
|
||||
{
|
||||
raise(SIGFPE);
|
||||
}
|
||||
|
||||
#endif /* _KLIBC_DIVERR_H */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user