parent
40c855574c
commit
b15cbc0be0
@ -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 |
@ -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 |
||||
|
@ -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_ */ |
||||
|
@ -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 |
@ -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 |
@ -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 |
@ -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 */ |
@ -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 */ |
@ -0,0 +1,6 @@ |
||||
#ifndef _LINUX_CONFIG_H |
||||
#define _LINUX_CONFIG_H |
||||
|
||||
/* #include <linux/autoconf.h> */ |
||||
|
||||
#endif |
@ -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 |
@ -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 new issue