mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 07:31:15 +00:00
Initial revision
This commit is contained in:
parent
40c855574c
commit
b15cbc0be0
11 changed files with 1145 additions and 0 deletions
138
include/asm-ppc/errno.h
Normal file
138
include/asm-ppc/errno.h
Normal file
|
@ -0,0 +1,138 @@
|
|||
#ifndef _PPC_ERRNO_H
|
||||
#define _PPC_ERRNO_H
|
||||
|
||||
#define EPERM 1 /* Operation not permitted */
|
||||
#define ENOENT 2 /* No such file or directory */
|
||||
#define ESRCH 3 /* No such process */
|
||||
#define EINTR 4 /* Interrupted system call */
|
||||
#define EIO 5 /* I/O error */
|
||||
#define ENXIO 6 /* No such device or address */
|
||||
#define E2BIG 7 /* Arg list too long */
|
||||
#define ENOEXEC 8 /* Exec format error */
|
||||
#define EBADF 9 /* Bad file number */
|
||||
#define ECHILD 10 /* No child processes */
|
||||
#define EAGAIN 11 /* Try again */
|
||||
#define ENOMEM 12 /* Out of memory */
|
||||
#define EACCES 13 /* Permission denied */
|
||||
#define EFAULT 14 /* Bad address */
|
||||
#define ENOTBLK 15 /* Block device required */
|
||||
#define EBUSY 16 /* Device or resource busy */
|
||||
#define EEXIST 17 /* File exists */
|
||||
#define EXDEV 18 /* Cross-device link */
|
||||
#define ENODEV 19 /* No such device */
|
||||
#define ENOTDIR 20 /* Not a directory */
|
||||
#define EISDIR 21 /* Is a directory */
|
||||
#define EINVAL 22 /* Invalid argument */
|
||||
#define ENFILE 23 /* File table overflow */
|
||||
#define EMFILE 24 /* Too many open files */
|
||||
#define ENOTTY 25 /* Not a typewriter */
|
||||
#define ETXTBSY 26 /* Text file busy */
|
||||
#define EFBIG 27 /* File too large */
|
||||
#define ENOSPC 28 /* No space left on device */
|
||||
#define ESPIPE 29 /* Illegal seek */
|
||||
#define EROFS 30 /* Read-only file system */
|
||||
#define EMLINK 31 /* Too many links */
|
||||
#define EPIPE 32 /* Broken pipe */
|
||||
#define EDOM 33 /* Math argument out of domain of func */
|
||||
#define ERANGE 34 /* Math result not representable */
|
||||
#define EDEADLK 35 /* Resource deadlock would occur */
|
||||
#define ENAMETOOLONG 36 /* File name too long */
|
||||
#define ENOLCK 37 /* No record locks available */
|
||||
#define ENOSYS 38 /* Function not implemented */
|
||||
#define ENOTEMPTY 39 /* Directory not empty */
|
||||
#define ELOOP 40 /* Too many symbolic links encountered */
|
||||
#define EWOULDBLOCK EAGAIN /* Operation would block */
|
||||
#define ENOMSG 42 /* No message of desired type */
|
||||
#define EIDRM 43 /* Identifier removed */
|
||||
#define ECHRNG 44 /* Channel number out of range */
|
||||
#define EL2NSYNC 45 /* Level 2 not synchronized */
|
||||
#define EL3HLT 46 /* Level 3 halted */
|
||||
#define EL3RST 47 /* Level 3 reset */
|
||||
#define ELNRNG 48 /* Link number out of range */
|
||||
#define EUNATCH 49 /* Protocol driver not attached */
|
||||
#define ENOCSI 50 /* No CSI structure available */
|
||||
#define EL2HLT 51 /* Level 2 halted */
|
||||
#define EBADE 52 /* Invalid exchange */
|
||||
#define EBADR 53 /* Invalid request descriptor */
|
||||
#define EXFULL 54 /* Exchange full */
|
||||
#define ENOANO 55 /* No anode */
|
||||
#define EBADRQC 56 /* Invalid request code */
|
||||
#define EBADSLT 57 /* Invalid slot */
|
||||
#define EDEADLOCK 58 /* File locking deadlock error */
|
||||
#define EBFONT 59 /* Bad font file format */
|
||||
#define ENOSTR 60 /* Device not a stream */
|
||||
#define ENODATA 61 /* No data available */
|
||||
#define ETIME 62 /* Timer expired */
|
||||
#define ENOSR 63 /* Out of streams resources */
|
||||
#define ENONET 64 /* Machine is not on the network */
|
||||
#define ENOPKG 65 /* Package not installed */
|
||||
#define EREMOTE 66 /* Object is remote */
|
||||
#define ENOLINK 67 /* Link has been severed */
|
||||
#define EADV 68 /* Advertise error */
|
||||
#define ESRMNT 69 /* Srmount error */
|
||||
#define ECOMM 70 /* Communication error on send */
|
||||
#define EPROTO 71 /* Protocol error */
|
||||
#define EMULTIHOP 72 /* Multihop attempted */
|
||||
#define EDOTDOT 73 /* RFS specific error */
|
||||
#define EBADMSG 74 /* Not a data message */
|
||||
#define EOVERFLOW 75 /* Value too large for defined data type */
|
||||
#define ENOTUNIQ 76 /* Name not unique on network */
|
||||
#define EBADFD 77 /* File descriptor in bad state */
|
||||
#define EREMCHG 78 /* Remote address changed */
|
||||
#define ELIBACC 79 /* Can not access a needed shared library */
|
||||
#define ELIBBAD 80 /* Accessing a corrupted shared library */
|
||||
#define ELIBSCN 81 /* .lib section in a.out corrupted */
|
||||
#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
|
||||
#define ELIBEXEC 83 /* Cannot exec a shared library directly */
|
||||
#define EILSEQ 84 /* Illegal byte sequence */
|
||||
#define ERESTART 85 /* Interrupted system call should be restarted */
|
||||
#define ESTRPIPE 86 /* Streams pipe error */
|
||||
#define EUSERS 87 /* Too many users */
|
||||
#define ENOTSOCK 88 /* Socket operation on non-socket */
|
||||
#define EDESTADDRREQ 89 /* Destination address required */
|
||||
#define EMSGSIZE 90 /* Message too long */
|
||||
#define EPROTOTYPE 91 /* Protocol wrong type for socket */
|
||||
#define ENOPROTOOPT 92 /* Protocol not available */
|
||||
#define EPROTONOSUPPORT 93 /* Protocol not supported */
|
||||
#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
|
||||
#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
|
||||
#define EPFNOSUPPORT 96 /* Protocol family not supported */
|
||||
#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
|
||||
#define EADDRINUSE 98 /* Address already in use */
|
||||
#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
|
||||
#define ENETDOWN 100 /* Network is down */
|
||||
#define ENETUNREACH 101 /* Network is unreachable */
|
||||
#define ENETRESET 102 /* Network dropped connection because of reset */
|
||||
#define ECONNABORTED 103 /* Software caused connection abort */
|
||||
#define ECONNRESET 104 /* Connection reset by peer */
|
||||
#define ENOBUFS 105 /* No buffer space available */
|
||||
#define EISCONN 106 /* Transport endpoint is already connected */
|
||||
#define ENOTCONN 107 /* Transport endpoint is not connected */
|
||||
#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
|
||||
#define ETOOMANYREFS 109 /* Too many references: cannot splice */
|
||||
#define ETIMEDOUT 110 /* Connection timed out */
|
||||
#define ECONNREFUSED 111 /* Connection refused */
|
||||
#define EHOSTDOWN 112 /* Host is down */
|
||||
#define EHOSTUNREACH 113 /* No route to host */
|
||||
#define EALREADY 114 /* Operation already in progress */
|
||||
#define EINPROGRESS 115 /* Operation now in progress */
|
||||
#define ESTALE 116 /* Stale NFS file handle */
|
||||
#define EUCLEAN 117 /* Structure needs cleaning */
|
||||
#define ENOTNAM 118 /* Not a XENIX named type file */
|
||||
#define ENAVAIL 119 /* No XENIX semaphores available */
|
||||
#define EISNAM 120 /* Is a named type file */
|
||||
#define EREMOTEIO 121 /* Remote I/O error */
|
||||
#define EDQUOT 122 /* Quota exceeded */
|
||||
|
||||
#define ENOMEDIUM 123 /* No medium found */
|
||||
#define EMEDIUMTYPE 124 /* Wrong medium type */
|
||||
|
||||
/* Should never be seen by user programs */
|
||||
#define ERESTARTSYS 512
|
||||
#define ERESTARTNOINTR 513
|
||||
#define ERESTARTNOHAND 514 /* restart if no handler.. */
|
||||
#define ENOIOCTLCMD 515 /* No ioctl command */
|
||||
|
||||
#define _LAST_ERRNO 515
|
||||
|
||||
#endif
|
108
include/asm-ppc/ptrace.h
Normal file
108
include/asm-ppc/ptrace.h
Normal file
|
@ -0,0 +1,108 @@
|
|||
#ifndef _PPC_PTRACE_H
|
||||
#define _PPC_PTRACE_H
|
||||
|
||||
/*
|
||||
* This struct defines the way the registers are stored on the
|
||||
* kernel stack during a system call or other kernel entry.
|
||||
*
|
||||
* this should only contain volatile regs
|
||||
* since we can keep non-volatile in the thread_struct
|
||||
* should set this up when only volatiles are saved
|
||||
* by intr code.
|
||||
*
|
||||
* Since this is going on the stack, *CARE MUST BE TAKEN* to insure
|
||||
* that the overall structure is a multiple of 16 bytes in length.
|
||||
*
|
||||
* Note that the offsets of the fields in this struct correspond with
|
||||
* the PT_* values below. This simplifies arch/ppc/kernel/ptrace.c.
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#ifdef CONFIG_PPC64BRIDGE
|
||||
#define PPC_REG unsigned long /*long*/
|
||||
#else
|
||||
#define PPC_REG unsigned long
|
||||
#endif
|
||||
struct pt_regs {
|
||||
PPC_REG gpr[32];
|
||||
PPC_REG nip;
|
||||
PPC_REG msr;
|
||||
PPC_REG orig_gpr3; /* Used for restarting system calls */
|
||||
PPC_REG ctr;
|
||||
PPC_REG link;
|
||||
PPC_REG xer;
|
||||
PPC_REG ccr;
|
||||
PPC_REG mq; /* 601 only (not used at present) */
|
||||
/* Used on APUS to hold IPL value. */
|
||||
PPC_REG trap; /* Reason for being here */
|
||||
PPC_REG dar; /* Fault registers */
|
||||
PPC_REG dsisr;
|
||||
PPC_REG result; /* Result of a system call */
|
||||
};
|
||||
#endif
|
||||
|
||||
#define STACK_FRAME_OVERHEAD 16 /* size of minimum stack frame */
|
||||
|
||||
/* Size of stack frame allocated when calling signal handler. */
|
||||
#define __SIGNAL_FRAMESIZE 64
|
||||
|
||||
#define instruction_pointer(regs) ((regs)->nip)
|
||||
#define user_mode(regs) (((regs)->msr & MSR_PR) != 0)
|
||||
|
||||
/*
|
||||
* Offsets used by 'ptrace' system call interface.
|
||||
* These can't be changed without breaking binary compatibility
|
||||
* with MkLinux, etc.
|
||||
*/
|
||||
#define PT_R0 0
|
||||
#define PT_R1 1
|
||||
#define PT_R2 2
|
||||
#define PT_R3 3
|
||||
#define PT_R4 4
|
||||
#define PT_R5 5
|
||||
#define PT_R6 6
|
||||
#define PT_R7 7
|
||||
#define PT_R8 8
|
||||
#define PT_R9 9
|
||||
#define PT_R10 10
|
||||
#define PT_R11 11
|
||||
#define PT_R12 12
|
||||
#define PT_R13 13
|
||||
#define PT_R14 14
|
||||
#define PT_R15 15
|
||||
#define PT_R16 16
|
||||
#define PT_R17 17
|
||||
#define PT_R18 18
|
||||
#define PT_R19 19
|
||||
#define PT_R20 20
|
||||
#define PT_R21 21
|
||||
#define PT_R22 22
|
||||
#define PT_R23 23
|
||||
#define PT_R24 24
|
||||
#define PT_R25 25
|
||||
#define PT_R26 26
|
||||
#define PT_R27 27
|
||||
#define PT_R28 28
|
||||
#define PT_R29 29
|
||||
#define PT_R30 30
|
||||
#define PT_R31 31
|
||||
|
||||
#define PT_NIP 32
|
||||
#define PT_MSR 33
|
||||
#ifdef __KERNEL__
|
||||
#define PT_ORIG_R3 34
|
||||
#endif
|
||||
#define PT_CTR 35
|
||||
#define PT_LNK 36
|
||||
#define PT_XER 37
|
||||
#define PT_CCR 38
|
||||
#define PT_MQ 39
|
||||
|
||||
#define PT_FPR0 48 /* each FP reg occupies 2 slots in this space */
|
||||
#define PT_FPR31 (PT_FPR0 + 2*31)
|
||||
#define PT_FPSCR (PT_FPR0 + 2*32 + 1)
|
||||
|
||||
#endif
|
||||
|
332
include/asm-ppc/residual.h
Normal file
332
include/asm-ppc/residual.h
Normal file
|
@ -0,0 +1,332 @@
|
|||
/* 7/18/95 */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Residual Data header definitions and prototypes */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
/* Structure map for RESIDUAL on PowerPC Reference Platform */
|
||||
/* residual.h - Residual data structure passed in r3. */
|
||||
/* Load point passed in r4 to boot image. */
|
||||
/* For enum's: if given in hex then they are bit significant, */
|
||||
/* i.e. only one bit is on for each enum */
|
||||
/* Reserved fields must be filled with zeros. */
|
||||
|
||||
#ifndef _RESIDUAL_
|
||||
#define _RESIDUAL_
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#define MAX_CPUS 32 /* These should be set to the maximum */
|
||||
#define MAX_MEMS 64 /* number possible for this system. */
|
||||
#define MAX_DEVICES 256 /* Changing these will change the */
|
||||
#define AVE_PNP_SIZE 32 /* structure, hence the version of */
|
||||
#define MAX_MEM_SEGS 64 /* this header file. */
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Public structures... */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#include "pnp.h"
|
||||
|
||||
typedef enum _L1CACHE_TYPE {
|
||||
NoneCAC = 0,
|
||||
SplitCAC = 1,
|
||||
CombinedCAC = 2
|
||||
} L1CACHE_TYPE;
|
||||
|
||||
typedef enum _TLB_TYPE {
|
||||
NoneTLB = 0,
|
||||
SplitTLB = 1,
|
||||
CombinedTLB = 2
|
||||
} TLB_TYPE;
|
||||
|
||||
typedef enum _FIRMWARE_SUPPORT {
|
||||
Conventional = 0x01,
|
||||
OpenFirmware = 0x02,
|
||||
Diagnostics = 0x04,
|
||||
LowDebug = 0x08,
|
||||
Multiboot = 0x10,
|
||||
LowClient = 0x20,
|
||||
Hex41 = 0x40,
|
||||
FAT = 0x80,
|
||||
ISO9660 = 0x0100,
|
||||
SCSI_InitiatorID_Override = 0x0200,
|
||||
Tape_Boot = 0x0400,
|
||||
FW_Boot_Path = 0x0800
|
||||
} FIRMWARE_SUPPORT;
|
||||
|
||||
typedef enum _FIRMWARE_SUPPLIERS {
|
||||
IBMFirmware = 0x00,
|
||||
MotoFirmware = 0x01, /* 7/18/95 */
|
||||
FirmWorks = 0x02, /* 10/5/95 */
|
||||
Bull = 0x03, /* 04/03/96 */
|
||||
} FIRMWARE_SUPPLIERS;
|
||||
|
||||
typedef enum _ENDIAN_SWITCH_METHODS {
|
||||
UsePort92 = 0x01,
|
||||
UsePCIConfigA8 = 0x02,
|
||||
UseFF001030 = 0x03,
|
||||
} ENDIAN_SWITCH_METHODS;
|
||||
|
||||
typedef enum _SPREAD_IO_METHODS {
|
||||
UsePort850 = 0x00,
|
||||
/*UsePCIConfigA8 = 0x02,*/
|
||||
} SPREAD_IO_METHODS;
|
||||
|
||||
typedef struct _VPD {
|
||||
|
||||
/* Box dependent stuff */
|
||||
unsigned char PrintableModel[32]; /* Null terminated string.
|
||||
Must be of the form:
|
||||
vvv,<20h>,<model designation>,<0x0>
|
||||
where vvv is the vendor ID
|
||||
e.g. IBM PPS MODEL 6015<0x0> */
|
||||
unsigned char Serial[16]; /* 12/94:
|
||||
Serial Number; must be of the form:
|
||||
vvv<serial number> where vvv is the
|
||||
vendor ID.
|
||||
e.g. IBM60151234567<20h><20h> */
|
||||
unsigned char Reserved[48];
|
||||
unsigned long FirmwareSupplier; /* See FirmwareSuppliers enum */
|
||||
unsigned long FirmwareSupports; /* See FirmwareSupport enum */
|
||||
unsigned long NvramSize; /* Size of nvram in bytes */
|
||||
unsigned long NumSIMMSlots;
|
||||
unsigned short EndianSwitchMethod; /* See EndianSwitchMethods enum */
|
||||
unsigned short SpreadIOMethod; /* See SpreadIOMethods enum */
|
||||
unsigned long SmpIar;
|
||||
unsigned long RAMErrLogOffset; /* Heap offset to error log */
|
||||
unsigned long Reserved5;
|
||||
unsigned long Reserved6;
|
||||
unsigned long ProcessorHz; /* Processor clock frequency in Hertz */
|
||||
unsigned long ProcessorBusHz; /* Processor bus clock frequency */
|
||||
unsigned long Reserved7;
|
||||
unsigned long TimeBaseDivisor; /* (Bus clocks per timebase tic)*1000 */
|
||||
unsigned long WordWidth; /* Word width in bits */
|
||||
unsigned long PageSize; /* Page size in bytes */
|
||||
unsigned long CoherenceBlockSize; /* Unit of transfer in/out of cache
|
||||
for which coherency is maintained;
|
||||
normally <= CacheLineSize. */
|
||||
unsigned long GranuleSize; /* Unit of lock allocation to avoid */
|
||||
/* false sharing of locks. */
|
||||
|
||||
/* L1 Cache variables */
|
||||
unsigned long CacheSize; /* L1 Cache size in KB. This is the */
|
||||
/* total size of the L1, whether */
|
||||
/* combined or split */
|
||||
unsigned long CacheAttrib; /* L1CACHE_TYPE */
|
||||
unsigned long CacheAssoc; /* L1 Cache associativity. Use this
|
||||
for combined cache. If split, put
|
||||
zeros here. */
|
||||
unsigned long CacheLineSize; /* L1 Cache line size in bytes. Use
|
||||
for combined cache. If split, put
|
||||
zeros here. */
|
||||
/* For split L1 Cache: (= combined if combined cache) */
|
||||
unsigned long I_CacheSize;
|
||||
unsigned long I_CacheAssoc;
|
||||
unsigned long I_CacheLineSize;
|
||||
unsigned long D_CacheSize;
|
||||
unsigned long D_CacheAssoc;
|
||||
unsigned long D_CacheLineSize;
|
||||
|
||||
/* Translation Lookaside Buffer variables */
|
||||
unsigned long TLBSize; /* Total number of TLBs on the system */
|
||||
unsigned long TLBAttrib; /* Combined I+D or split TLB */
|
||||
unsigned long TLBAssoc; /* TLB Associativity. Use this for
|
||||
combined TLB. If split, put zeros
|
||||
here. */
|
||||
/* For split TLB: (= combined if combined TLB) */
|
||||
unsigned long I_TLBSize;
|
||||
unsigned long I_TLBAssoc;
|
||||
unsigned long D_TLBSize;
|
||||
unsigned long D_TLBAssoc;
|
||||
|
||||
unsigned long ExtendedVPD; /* Offset to extended VPD area;
|
||||
null if unused */
|
||||
} VPD;
|
||||
|
||||
typedef enum _DEVICE_FLAGS {
|
||||
Enabled = 0x4000, /* 1 - PCI device is enabled */
|
||||
Integrated = 0x2000,
|
||||
Failed = 0x1000, /* 1 - device failed POST code tests */
|
||||
Static = 0x0800, /* 0 - dynamically configurable
|
||||
1 - static */
|
||||
Dock = 0x0400, /* 0 - not a docking station device
|
||||
1 - is a docking station device */
|
||||
Boot = 0x0200, /* 0 - device cannot be used for BOOT
|
||||
1 - can be a BOOT device */
|
||||
Configurable = 0x0100, /* 1 - device is configurable */
|
||||
Disableable = 0x80, /* 1 - device can be disabled */
|
||||
PowerManaged = 0x40, /* 0 - not managed; 1 - managed */
|
||||
ReadOnly = 0x20, /* 1 - device is read only */
|
||||
Removable = 0x10, /* 1 - device is removable */
|
||||
ConsoleIn = 0x08,
|
||||
ConsoleOut = 0x04,
|
||||
Input = 0x02,
|
||||
Output = 0x01
|
||||
} DEVICE_FLAGS;
|
||||
|
||||
typedef enum _BUS_ID {
|
||||
ISADEVICE = 0x01,
|
||||
EISADEVICE = 0x02,
|
||||
PCIDEVICE = 0x04,
|
||||
PCMCIADEVICE = 0x08,
|
||||
PNPISADEVICE = 0x10,
|
||||
MCADEVICE = 0x20,
|
||||
MXDEVICE = 0x40, /* Devices on mezzanine bus */
|
||||
PROCESSORDEVICE = 0x80, /* Devices on processor bus */
|
||||
VMEDEVICE = 0x100,
|
||||
} BUS_ID;
|
||||
|
||||
typedef struct _DEVICE_ID {
|
||||
unsigned long BusId; /* See BUS_ID enum above */
|
||||
unsigned long DevId; /* Big Endian format */
|
||||
unsigned long SerialNum; /* For multiple usage of a single
|
||||
DevId */
|
||||
unsigned long Flags; /* See DEVICE_FLAGS enum above */
|
||||
unsigned char BaseType; /* See pnp.h for bit definitions */
|
||||
unsigned char SubType; /* See pnp.h for bit definitions */
|
||||
unsigned char Interface; /* See pnp.h for bit definitions */
|
||||
unsigned char Spare;
|
||||
} DEVICE_ID;
|
||||
|
||||
typedef union _BUS_ACCESS {
|
||||
struct _PnPAccess{
|
||||
unsigned char CSN;
|
||||
unsigned char LogicalDevNumber;
|
||||
unsigned short ReadDataPort;
|
||||
} PnPAccess;
|
||||
struct _ISAAccess{
|
||||
unsigned char SlotNumber; /* ISA Slot Number generally not
|
||||
available; 0 if unknown */
|
||||
unsigned char LogicalDevNumber;
|
||||
unsigned short ISAReserved;
|
||||
} ISAAccess;
|
||||
struct _MCAAccess{
|
||||
unsigned char SlotNumber;
|
||||
unsigned char LogicalDevNumber;
|
||||
unsigned short MCAReserved;
|
||||
} MCAAccess;
|
||||
struct _PCMCIAAccess{
|
||||
unsigned char SlotNumber;
|
||||
unsigned char LogicalDevNumber;
|
||||
unsigned short PCMCIAReserved;
|
||||
} PCMCIAAccess;
|
||||
struct _EISAAccess{
|
||||
unsigned char SlotNumber;
|
||||
unsigned char FunctionNumber;
|
||||
unsigned short EISAReserved;
|
||||
} EISAAccess;
|
||||
struct _PCIAccess{
|
||||
unsigned char BusNumber;
|
||||
unsigned char DevFuncNumber;
|
||||
unsigned short PCIReserved;
|
||||
} PCIAccess;
|
||||
struct _ProcBusAccess{
|
||||
unsigned char BusNumber;
|
||||
unsigned char BUID;
|
||||
unsigned short ProcBusReserved;
|
||||
} ProcBusAccess;
|
||||
} BUS_ACCESS;
|
||||
|
||||
/* Per logical device information */
|
||||
typedef struct _PPC_DEVICE {
|
||||
DEVICE_ID DeviceId;
|
||||
BUS_ACCESS BusAccess;
|
||||
|
||||
/* The following three are offsets into the DevicePnPHeap */
|
||||
/* All are in PnP compressed format */
|
||||
unsigned long AllocatedOffset; /* Allocated resource description */
|
||||
unsigned long PossibleOffset; /* Possible resource description */
|
||||
unsigned long CompatibleOffset; /* Compatible device identifiers */
|
||||
} PPC_DEVICE;
|
||||
|
||||
typedef enum _CPU_STATE {
|
||||
CPU_GOOD = 0, /* CPU is present, and active */
|
||||
CPU_GOOD_FW = 1, /* CPU is present, and in firmware */
|
||||
CPU_OFF = 2, /* CPU is present, but inactive */
|
||||
CPU_FAILED = 3, /* CPU is present, but failed POST */
|
||||
CPU_NOT_PRESENT = 255 /* CPU not present */
|
||||
} CPU_STATE;
|
||||
|
||||
typedef struct _PPC_CPU {
|
||||
unsigned long CpuType; /* Result of mfspr from Processor
|
||||
Version Register (PVR).
|
||||
PVR(0-15) = Version (e.g. 601)
|
||||
PVR(16-31 = EC Level */
|
||||
unsigned char CpuNumber; /* CPU Number for this processor */
|
||||
unsigned char CpuState; /* CPU State, see CPU_STATE enum */
|
||||
unsigned short Reserved;
|
||||
} PPC_CPU;
|
||||
|
||||
typedef struct _PPC_MEM {
|
||||
unsigned long SIMMSize; /* 0 - absent or bad
|
||||
8M, 32M (in MB) */
|
||||
} PPC_MEM;
|
||||
|
||||
typedef enum _MEM_USAGE {
|
||||
Other = 0x8000,
|
||||
ResumeBlock = 0x4000, /* for use by power management */
|
||||
SystemROM = 0x2000, /* Flash memory (populated) */
|
||||
UnPopSystemROM = 0x1000, /* Unpopulated part of SystemROM area */
|
||||
IOMemory = 0x0800,
|
||||
SystemIO = 0x0400,
|
||||
SystemRegs = 0x0200,
|
||||
PCIAddr = 0x0100,
|
||||
PCIConfig = 0x80,
|
||||
ISAAddr = 0x40,
|
||||
Unpopulated = 0x20, /* Unpopulated part of System Memory */
|
||||
Free = 0x10, /* Free part of System Memory */
|
||||
BootImage = 0x08, /* BootImage part of System Memory */
|
||||
FirmwareCode = 0x04, /* FirmwareCode part of System Memory */
|
||||
FirmwareHeap = 0x02, /* FirmwareHeap part of System Memory */
|
||||
FirmwareStack = 0x01 /* FirmwareStack part of System Memory*/
|
||||
} MEM_USAGE;
|
||||
|
||||
typedef struct _MEM_MAP {
|
||||
unsigned long Usage; /* See MEM_USAGE above */
|
||||
unsigned long BasePage; /* Page number measured in 4KB pages */
|
||||
unsigned long PageCount; /* Page count measured in 4KB pages */
|
||||
} MEM_MAP;
|
||||
|
||||
typedef struct _RESIDUAL {
|
||||
unsigned long ResidualLength; /* Length of Residual */
|
||||
unsigned char Version; /* of this data structure */
|
||||
unsigned char Revision; /* of this data structure */
|
||||
unsigned short EC; /* of this data structure */
|
||||
/* VPD */
|
||||
VPD VitalProductData;
|
||||
/* CPU */
|
||||
unsigned short MaxNumCpus; /* Max CPUs in this system */
|
||||
unsigned short ActualNumCpus; /* ActualNumCpus < MaxNumCpus means */
|
||||
/* that there are unpopulated or */
|
||||
/* otherwise unusable cpu locations */
|
||||
PPC_CPU Cpus[MAX_CPUS];
|
||||
/* Memory */
|
||||
unsigned long TotalMemory; /* Total amount of memory installed */
|
||||
unsigned long GoodMemory; /* Total amount of good memory */
|
||||
unsigned long ActualNumMemSegs;
|
||||
MEM_MAP Segs[MAX_MEM_SEGS];
|
||||
unsigned long ActualNumMemories;
|
||||
PPC_MEM Memories[MAX_MEMS];
|
||||
/* Devices */
|
||||
unsigned long ActualNumDevices;
|
||||
PPC_DEVICE Devices[MAX_DEVICES];
|
||||
unsigned char DevicePnPHeap[2*MAX_DEVICES*AVE_PNP_SIZE];
|
||||
} RESIDUAL;
|
||||
|
||||
|
||||
extern RESIDUAL *res;
|
||||
extern void print_residual_device_info(void);
|
||||
extern PPC_DEVICE *residual_find_device(unsigned long BusMask,
|
||||
unsigned char * DevID, int BaseType,
|
||||
int SubType, int Interface, int n);
|
||||
extern PnP_TAG_PACKET *PnP_find_packet(unsigned char *p, unsigned packet_tag,
|
||||
int n);
|
||||
extern PnP_TAG_PACKET *PnP_find_small_vendor_packet(unsigned char *p,
|
||||
unsigned packet_type,
|
||||
int n);
|
||||
extern PnP_TAG_PACKET *PnP_find_large_vendor_packet(unsigned char *p,
|
||||
unsigned packet_type,
|
||||
int n);
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* ndef _RESIDUAL_ */
|
||||
|
29
include/asm-ppc/string.h
Normal file
29
include/asm-ppc/string.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#ifndef _PPC_STRING_H_
|
||||
#define _PPC_STRING_H_
|
||||
|
||||
#define __HAVE_ARCH_STRCPY
|
||||
#define __HAVE_ARCH_STRNCPY
|
||||
#define __HAVE_ARCH_STRLEN
|
||||
#define __HAVE_ARCH_STRCMP
|
||||
#define __HAVE_ARCH_STRCAT
|
||||
#define __HAVE_ARCH_MEMSET
|
||||
#define __HAVE_ARCH_BCOPY
|
||||
#define __HAVE_ARCH_MEMCPY
|
||||
#define __HAVE_ARCH_MEMMOVE
|
||||
#define __HAVE_ARCH_MEMCMP
|
||||
#define __HAVE_ARCH_MEMCHR
|
||||
|
||||
extern int strcasecmp(const char *, const char *);
|
||||
extern int strncasecmp(const char *, const char *, int);
|
||||
extern char * strcpy(char *,const char *);
|
||||
extern char * strncpy(char *,const char *, __kernel_size_t);
|
||||
extern __kernel_size_t strlen(const char *);
|
||||
extern int strcmp(const char *,const char *);
|
||||
extern char * strcat(char *, const char *);
|
||||
extern void * memset(void *,int,__kernel_size_t);
|
||||
extern void * memcpy(void *,const void *,__kernel_size_t);
|
||||
extern void * memmove(void *,const void *,__kernel_size_t);
|
||||
extern int memcmp(const void *,const void *,__kernel_size_t);
|
||||
extern void * memchr(const void *,int,__kernel_size_t);
|
||||
|
||||
#endif
|
50
include/asm-ppc/types.h
Normal file
50
include/asm-ppc/types.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
#ifndef _PPC_TYPES_H
|
||||
#define _PPC_TYPES_H
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
typedef __signed__ char __s8;
|
||||
typedef unsigned char __u8;
|
||||
|
||||
typedef __signed__ short __s16;
|
||||
typedef unsigned short __u16;
|
||||
|
||||
typedef __signed__ int __s32;
|
||||
typedef unsigned int __u32;
|
||||
|
||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
||||
typedef __signed__ long long __s64;
|
||||
typedef unsigned long long __u64;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
__u32 u[4];
|
||||
} __attribute((aligned(16))) vector128;
|
||||
|
||||
#ifdef __KERNEL__
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
|
||||
typedef signed short s16;
|
||||
typedef unsigned short u16;
|
||||
|
||||
typedef signed int s32;
|
||||
typedef unsigned int u32;
|
||||
|
||||
typedef signed long long s64;
|
||||
typedef unsigned long long u64;
|
||||
|
||||
#define BITS_PER_LONG 32
|
||||
|
||||
/* DMA addresses are 32-bits wide */
|
||||
typedef u32 dma_addr_t;
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif
|
72
include/linux/bitops.h
Normal file
72
include/linux/bitops.h
Normal file
|
@ -0,0 +1,72 @@
|
|||
#ifndef _LINUX_BITOPS_H
|
||||
#define _LINUX_BITOPS_H
|
||||
|
||||
|
||||
/*
|
||||
* ffs: find first bit set. This is defined the same way as
|
||||
* the libc and compiler builtin ffs routines, therefore
|
||||
* differs in spirit from the above ffz (man ffs).
|
||||
*/
|
||||
|
||||
static inline int generic_ffs(int x)
|
||||
{
|
||||
int r = 1;
|
||||
|
||||
if (!x)
|
||||
return 0;
|
||||
if (!(x & 0xffff)) {
|
||||
x >>= 16;
|
||||
r += 16;
|
||||
}
|
||||
if (!(x & 0xff)) {
|
||||
x >>= 8;
|
||||
r += 8;
|
||||
}
|
||||
if (!(x & 0xf)) {
|
||||
x >>= 4;
|
||||
r += 4;
|
||||
}
|
||||
if (!(x & 3)) {
|
||||
x >>= 2;
|
||||
r += 2;
|
||||
}
|
||||
if (!(x & 1)) {
|
||||
x >>= 1;
|
||||
r += 1;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/*
|
||||
* hweightN: returns the hamming weight (i.e. the number
|
||||
* of bits set) of a N-bit word
|
||||
*/
|
||||
|
||||
static inline unsigned int generic_hweight32(unsigned int w)
|
||||
{
|
||||
unsigned int res = (w & 0x55555555) + ((w >> 1) & 0x55555555);
|
||||
res = (res & 0x33333333) + ((res >> 2) & 0x33333333);
|
||||
res = (res & 0x0F0F0F0F) + ((res >> 4) & 0x0F0F0F0F);
|
||||
res = (res & 0x00FF00FF) + ((res >> 8) & 0x00FF00FF);
|
||||
return (res & 0x0000FFFF) + ((res >> 16) & 0x0000FFFF);
|
||||
}
|
||||
|
||||
static inline unsigned int generic_hweight16(unsigned int w)
|
||||
{
|
||||
unsigned int res = (w & 0x5555) + ((w >> 1) & 0x5555);
|
||||
res = (res & 0x3333) + ((res >> 2) & 0x3333);
|
||||
res = (res & 0x0F0F) + ((res >> 4) & 0x0F0F);
|
||||
return (res & 0x00FF) + ((res >> 8) & 0x00FF);
|
||||
}
|
||||
|
||||
static inline unsigned int generic_hweight8(unsigned int w)
|
||||
{
|
||||
unsigned int res = (w & 0x55) + ((w >> 1) & 0x55);
|
||||
res = (res & 0x33) + ((res >> 2) & 0x33);
|
||||
return (res & 0x0F) + ((res >> 4) & 0x0F);
|
||||
}
|
||||
|
||||
#include <asm/bitops.h>
|
||||
|
||||
|
||||
#endif
|
68
include/linux/byteorder/big_endian.h
Normal file
68
include/linux/byteorder/big_endian.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
#ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
|
||||
#define _LINUX_BYTEORDER_BIG_ENDIAN_H
|
||||
|
||||
#ifndef __BIG_ENDIAN
|
||||
#define __BIG_ENDIAN 4321
|
||||
#endif
|
||||
#ifndef __BIG_ENDIAN_BITFIELD
|
||||
#define __BIG_ENDIAN_BITFIELD
|
||||
#endif
|
||||
|
||||
#include <linux/byteorder/swab.h>
|
||||
|
||||
#define __constant_htonl(x) ((__u32)(x))
|
||||
#define __constant_ntohl(x) ((__u32)(x))
|
||||
#define __constant_htons(x) ((__u16)(x))
|
||||
#define __constant_ntohs(x) ((__u16)(x))
|
||||
#define __constant_cpu_to_le64(x) ___swab64((x))
|
||||
#define __constant_le64_to_cpu(x) ___swab64((x))
|
||||
#define __constant_cpu_to_le32(x) ___swab32((x))
|
||||
#define __constant_le32_to_cpu(x) ___swab32((x))
|
||||
#define __constant_cpu_to_le16(x) ___swab16((x))
|
||||
#define __constant_le16_to_cpu(x) ___swab16((x))
|
||||
#define __constant_cpu_to_be64(x) ((__u64)(x))
|
||||
#define __constant_be64_to_cpu(x) ((__u64)(x))
|
||||
#define __constant_cpu_to_be32(x) ((__u32)(x))
|
||||
#define __constant_be32_to_cpu(x) ((__u32)(x))
|
||||
#define __constant_cpu_to_be16(x) ((__u16)(x))
|
||||
#define __constant_be16_to_cpu(x) ((__u16)(x))
|
||||
#define __cpu_to_le64(x) __swab64((x))
|
||||
#define __le64_to_cpu(x) __swab64((x))
|
||||
#define __cpu_to_le32(x) __swab32((x))
|
||||
#define __le32_to_cpu(x) __swab32((x))
|
||||
#define __cpu_to_le16(x) __swab16((x))
|
||||
#define __le16_to_cpu(x) __swab16((x))
|
||||
#define __cpu_to_be64(x) ((__u64)(x))
|
||||
#define __be64_to_cpu(x) ((__u64)(x))
|
||||
#define __cpu_to_be32(x) ((__u32)(x))
|
||||
#define __be32_to_cpu(x) ((__u32)(x))
|
||||
#define __cpu_to_be16(x) ((__u16)(x))
|
||||
#define __be16_to_cpu(x) ((__u16)(x))
|
||||
#define __cpu_to_le64p(x) __swab64p((x))
|
||||
#define __le64_to_cpup(x) __swab64p((x))
|
||||
#define __cpu_to_le32p(x) __swab32p((x))
|
||||
#define __le32_to_cpup(x) __swab32p((x))
|
||||
#define __cpu_to_le16p(x) __swab16p((x))
|
||||
#define __le16_to_cpup(x) __swab16p((x))
|
||||
#define __cpu_to_be64p(x) (*(__u64*)(x))
|
||||
#define __be64_to_cpup(x) (*(__u64*)(x))
|
||||
#define __cpu_to_be32p(x) (*(__u32*)(x))
|
||||
#define __be32_to_cpup(x) (*(__u32*)(x))
|
||||
#define __cpu_to_be16p(x) (*(__u16*)(x))
|
||||
#define __be16_to_cpup(x) (*(__u16*)(x))
|
||||
#define __cpu_to_le64s(x) __swab64s((x))
|
||||
#define __le64_to_cpus(x) __swab64s((x))
|
||||
#define __cpu_to_le32s(x) __swab32s((x))
|
||||
#define __le32_to_cpus(x) __swab32s((x))
|
||||
#define __cpu_to_le16s(x) __swab16s((x))
|
||||
#define __le16_to_cpus(x) __swab16s((x))
|
||||
#define __cpu_to_be64s(x) do {} while (0)
|
||||
#define __be64_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be32s(x) do {} while (0)
|
||||
#define __be32_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be16s(x) do {} while (0)
|
||||
#define __be16_to_cpus(x) do {} while (0)
|
||||
|
||||
#include <linux/byteorder/generic.h>
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */
|
158
include/linux/byteorder/swab.h
Normal file
158
include/linux/byteorder/swab.h
Normal file
|
@ -0,0 +1,158 @@
|
|||
#ifndef _LINUX_BYTEORDER_SWAB_H
|
||||
#define _LINUX_BYTEORDER_SWAB_H
|
||||
|
||||
/*
|
||||
* linux/byteorder/swab.h
|
||||
* Byte-swapping, independently from CPU endianness
|
||||
* swabXX[ps]?(foo)
|
||||
*
|
||||
* Francois-Rene Rideau <fare@tunes.org> 19971205
|
||||
* separated swab functions from cpu_to_XX,
|
||||
* to clean up support for bizarre-endian architectures.
|
||||
*
|
||||
* See asm-i386/byteorder.h and suches for examples of how to provide
|
||||
* architecture-dependent optimized versions
|
||||
*
|
||||
*/
|
||||
|
||||
/* casts are necessary for constants, because we never know how for sure
|
||||
* how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way.
|
||||
*/
|
||||
#define ___swab16(x) \
|
||||
((__u16)( \
|
||||
(((__u16)(x) & (__u16)0x00ffU) << 8) | \
|
||||
(((__u16)(x) & (__u16)0xff00U) >> 8) ))
|
||||
#define ___swab32(x) \
|
||||
((__u32)( \
|
||||
(((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
|
||||
(((__u32)(x) & (__u32)0x0000ff00UL) << 8) | \
|
||||
(((__u32)(x) & (__u32)0x00ff0000UL) >> 8) | \
|
||||
(((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
|
||||
#define ___swab64(x) \
|
||||
((__u64)( \
|
||||
(__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \
|
||||
(__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) ))
|
||||
|
||||
/*
|
||||
* provide defaults when no architecture-specific optimization is detected
|
||||
*/
|
||||
#ifndef __arch__swab16
|
||||
# define __arch__swab16(x) ___swab16(x)
|
||||
#endif
|
||||
#ifndef __arch__swab32
|
||||
# define __arch__swab32(x) ___swab32(x)
|
||||
#endif
|
||||
#ifndef __arch__swab64
|
||||
# define __arch__swab64(x) ___swab64(x)
|
||||
#endif
|
||||
|
||||
#ifndef __arch__swab16p
|
||||
# define __arch__swab16p(x) __swab16(*(x))
|
||||
#endif
|
||||
#ifndef __arch__swab32p
|
||||
# define __arch__swab32p(x) __swab32(*(x))
|
||||
#endif
|
||||
#ifndef __arch__swab64p
|
||||
# define __arch__swab64p(x) __swab64(*(x))
|
||||
#endif
|
||||
|
||||
#ifndef __arch__swab16s
|
||||
# define __arch__swab16s(x) do { *(x) = __swab16p((x)); } while (0)
|
||||
#endif
|
||||
#ifndef __arch__swab32s
|
||||
# define __arch__swab32s(x) do { *(x) = __swab32p((x)); } while (0)
|
||||
#endif
|
||||
#ifndef __arch__swab64s
|
||||
# define __arch__swab64s(x) do { *(x) = __swab64p((x)); } while (0)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Allow constant folding
|
||||
*/
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 2) && defined(__OPTIMIZE__)
|
||||
# define __swab16(x) \
|
||||
(__builtin_constant_p((__u16)(x)) ? \
|
||||
___swab16((x)) : \
|
||||
__fswab16((x)))
|
||||
# define __swab32(x) \
|
||||
(__builtin_constant_p((__u32)(x)) ? \
|
||||
___swab32((x)) : \
|
||||
__fswab32((x)))
|
||||
# define __swab64(x) \
|
||||
(__builtin_constant_p((__u64)(x)) ? \
|
||||
___swab64((x)) : \
|
||||
__fswab64((x)))
|
||||
#else
|
||||
# define __swab16(x) __fswab16(x)
|
||||
# define __swab32(x) __fswab32(x)
|
||||
# define __swab64(x) __fswab64(x)
|
||||
#endif /* OPTIMIZE */
|
||||
|
||||
|
||||
extern __inline__ __const__ __u16 __fswab16(__u16 x)
|
||||
{
|
||||
return __arch__swab16(x);
|
||||
}
|
||||
extern __inline__ __u16 __swab16p(__u16 *x)
|
||||
{
|
||||
return __arch__swab16p(x);
|
||||
}
|
||||
extern __inline__ void __swab16s(__u16 *addr)
|
||||
{
|
||||
__arch__swab16s(addr);
|
||||
}
|
||||
|
||||
extern __inline__ __const__ __u32 __fswab32(__u32 x)
|
||||
{
|
||||
return __arch__swab32(x);
|
||||
}
|
||||
extern __inline__ __u32 __swab32p(__u32 *x)
|
||||
{
|
||||
return __arch__swab32p(x);
|
||||
}
|
||||
extern __inline__ void __swab32s(__u32 *addr)
|
||||
{
|
||||
__arch__swab32s(addr);
|
||||
}
|
||||
|
||||
#ifdef __BYTEORDER_HAS_U64__
|
||||
extern __inline__ __const__ __u64 __fswab64(__u64 x)
|
||||
{
|
||||
# ifdef __SWAB_64_THRU_32__
|
||||
__u32 h = x >> 32;
|
||||
__u32 l = x & ((1ULL<<32)-1);
|
||||
return (((__u64)__swab32(l)) << 32) | ((__u64)(__swab32(h)));
|
||||
# else
|
||||
return __arch__swab64(x);
|
||||
# endif
|
||||
}
|
||||
extern __inline__ __u64 __swab64p(__u64 *x)
|
||||
{
|
||||
return __arch__swab64p(x);
|
||||
}
|
||||
extern __inline__ void __swab64s(__u64 *addr)
|
||||
{
|
||||
__arch__swab64s(addr);
|
||||
}
|
||||
#endif /* __BYTEORDER_HAS_U64__ */
|
||||
|
||||
#if defined(__KERNEL__)
|
||||
#define swab16 __swab16
|
||||
#define swab32 __swab32
|
||||
#define swab64 __swab64
|
||||
#define swab16p __swab16p
|
||||
#define swab32p __swab32p
|
||||
#define swab64p __swab64p
|
||||
#define swab16s __swab16s
|
||||
#define swab32s __swab32s
|
||||
#define swab64s __swab64s
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_BYTEORDER_SWAB_H */
|
6
include/linux/config.h
Normal file
6
include/linux/config.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
#ifndef _LINUX_CONFIG_H
|
||||
#define _LINUX_CONFIG_H
|
||||
|
||||
/* #include <linux/autoconf.h> */
|
||||
|
||||
#endif
|
54
include/linux/ctype.h
Normal file
54
include/linux/ctype.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
#ifndef _LINUX_CTYPE_H
|
||||
#define _LINUX_CTYPE_H
|
||||
|
||||
/*
|
||||
* NOTE! This ctype does not handle EOF like the standard C
|
||||
* library is required to.
|
||||
*/
|
||||
|
||||
#define _U 0x01 /* upper */
|
||||
#define _L 0x02 /* lower */
|
||||
#define _D 0x04 /* digit */
|
||||
#define _C 0x08 /* cntrl */
|
||||
#define _P 0x10 /* punct */
|
||||
#define _S 0x20 /* white space (space/lf/tab) */
|
||||
#define _X 0x40 /* hex digit */
|
||||
#define _SP 0x80 /* hard space (0x20) */
|
||||
|
||||
extern unsigned char _ctype[];
|
||||
|
||||
#define __ismask(x) (_ctype[(int)(unsigned char)(x)])
|
||||
|
||||
#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
|
||||
#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
|
||||
#define iscntrl(c) ((__ismask(c)&(_C)) != 0)
|
||||
#define isdigit(c) ((__ismask(c)&(_D)) != 0)
|
||||
#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
|
||||
#define islower(c) ((__ismask(c)&(_L)) != 0)
|
||||
#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
|
||||
#define ispunct(c) ((__ismask(c)&(_P)) != 0)
|
||||
#define isspace(c) ((__ismask(c)&(_S)) != 0)
|
||||
#define isupper(c) ((__ismask(c)&(_U)) != 0)
|
||||
#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
|
||||
|
||||
#define isascii(c) (((unsigned char)(c))<=0x7f)
|
||||
#define toascii(c) (((unsigned char)(c))&0x7f)
|
||||
|
||||
static inline unsigned char __tolower(unsigned char c)
|
||||
{
|
||||
if (isupper(c))
|
||||
c -= 'A'-'a';
|
||||
return c;
|
||||
}
|
||||
|
||||
static inline unsigned char __toupper(unsigned char c)
|
||||
{
|
||||
if (islower(c))
|
||||
c -= 'a'-'A';
|
||||
return c;
|
||||
}
|
||||
|
||||
#define tolower(c) __tolower(c)
|
||||
#define toupper(c) __toupper(c)
|
||||
|
||||
#endif
|
130
include/linux/types.h
Normal file
130
include/linux/types.h
Normal file
|
@ -0,0 +1,130 @@
|
|||
#ifndef _LINUX_TYPES_H
|
||||
#define _LINUX_TYPES_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/config.h>
|
||||
#endif
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
#include <asm/types.h>
|
||||
|
||||
#ifndef __KERNEL_STRICT_NAMES
|
||||
|
||||
typedef __kernel_fd_set fd_set;
|
||||
typedef __kernel_dev_t dev_t;
|
||||
typedef __kernel_ino_t ino_t;
|
||||
typedef __kernel_mode_t mode_t;
|
||||
typedef __kernel_nlink_t nlink_t;
|
||||
typedef __kernel_off_t off_t;
|
||||
typedef __kernel_pid_t pid_t;
|
||||
typedef __kernel_daddr_t daddr_t;
|
||||
typedef __kernel_key_t key_t;
|
||||
typedef __kernel_suseconds_t suseconds_t;
|
||||
|
||||
#ifdef __KERNEL__
|
||||
typedef __kernel_uid32_t uid_t;
|
||||
typedef __kernel_gid32_t gid_t;
|
||||
typedef __kernel_uid16_t uid16_t;
|
||||
typedef __kernel_gid16_t gid16_t;
|
||||
|
||||
#ifdef CONFIG_UID16
|
||||
/* This is defined by include/asm-{arch}/posix_types.h */
|
||||
typedef __kernel_old_uid_t old_uid_t;
|
||||
typedef __kernel_old_gid_t old_gid_t;
|
||||
#endif /* CONFIG_UID16 */
|
||||
|
||||
/* libc5 includes this file to define uid_t, thus uid_t can never change
|
||||
* when it is included by non-kernel code
|
||||
*/
|
||||
#else
|
||||
typedef __kernel_uid_t uid_t;
|
||||
typedef __kernel_gid_t gid_t;
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
||||
typedef __kernel_loff_t loff_t;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The following typedefs are also protected by individual ifdefs for
|
||||
* historical reasons:
|
||||
*/
|
||||
#ifndef _SIZE_T
|
||||
#define _SIZE_T
|
||||
typedef __kernel_size_t size_t;
|
||||
#endif
|
||||
|
||||
#ifndef _SSIZE_T
|
||||
#define _SSIZE_T
|
||||
typedef __kernel_ssize_t ssize_t;
|
||||
#endif
|
||||
|
||||
#ifndef _PTRDIFF_T
|
||||
#define _PTRDIFF_T
|
||||
typedef __kernel_ptrdiff_t ptrdiff_t;
|
||||
#endif
|
||||
|
||||
#ifndef _TIME_T
|
||||
#define _TIME_T
|
||||
typedef __kernel_time_t time_t;
|
||||
#endif
|
||||
|
||||
#ifndef _CLOCK_T
|
||||
#define _CLOCK_T
|
||||
typedef __kernel_clock_t clock_t;
|
||||
#endif
|
||||
|
||||
#ifndef _CADDR_T
|
||||
#define _CADDR_T
|
||||
typedef __kernel_caddr_t caddr_t;
|
||||
#endif
|
||||
|
||||
/* bsd */
|
||||
typedef unsigned char u_char;
|
||||
typedef unsigned short u_short;
|
||||
typedef unsigned int u_int;
|
||||
typedef unsigned long u_long;
|
||||
|
||||
/* sysv */
|
||||
typedef unsigned char unchar;
|
||||
typedef unsigned short ushort;
|
||||
typedef unsigned int uint;
|
||||
typedef unsigned long ulong;
|
||||
|
||||
#ifndef __BIT_TYPES_DEFINED__
|
||||
#define __BIT_TYPES_DEFINED__
|
||||
|
||||
typedef __u8 u_int8_t;
|
||||
typedef __s8 int8_t;
|
||||
typedef __u16 u_int16_t;
|
||||
typedef __s16 int16_t;
|
||||
typedef __u32 u_int32_t;
|
||||
typedef __s32 int32_t;
|
||||
|
||||
#endif /* !(__BIT_TYPES_DEFINED__) */
|
||||
|
||||
typedef __u8 uint8_t;
|
||||
typedef __u16 uint16_t;
|
||||
typedef __u32 uint32_t;
|
||||
|
||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
||||
typedef __u64 uint64_t;
|
||||
typedef __u64 u_int64_t;
|
||||
typedef __s64 int64_t;
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL_STRICT_NAMES */
|
||||
|
||||
/*
|
||||
* Below are truly Linux-specific types that should never collide with
|
||||
* any application/library that wants linux/types.h.
|
||||
*/
|
||||
|
||||
struct ustat {
|
||||
__kernel_daddr_t f_tfree;
|
||||
__kernel_ino_t f_tinode;
|
||||
char f_fname[6];
|
||||
char f_fpack[6];
|
||||
};
|
||||
|
||||
#endif /* _LINUX_TYPES_H */
|
Loading…
Reference in a new issue