172 lines
4.4 KiB
C++
172 lines
4.4 KiB
C++
|
#ifndef _KERNEL_H
|
||
|
#define _KERNEL_H
|
||
|
|
||
|
/*
|
||
|
* File:kernel.h Rev. 3
|
||
|
*/
|
||
|
/*
|
||
|
* $PSLibId: Run-time Library Release 4.7$
|
||
|
*/
|
||
|
#ifndef _R3000_H
|
||
|
#include <r3000.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef _ASM_H
|
||
|
#include <asm.h>
|
||
|
#endif
|
||
|
|
||
|
/* don't change these macros and structures which is refereced in kernel code */
|
||
|
|
||
|
#define DescMask 0xff000000
|
||
|
#define DescTH DescMask
|
||
|
#define DescHW 0xf0000000
|
||
|
#define DescEV 0xf1000000
|
||
|
#define DescRC 0xf2000000
|
||
|
#define DescUEV 0xf3000000 /* User event */
|
||
|
#define DescSW 0xf4000000 /* BIOS */
|
||
|
|
||
|
#define HwVBLANK (DescHW|0x01) /* VBLANK */
|
||
|
#define HwGPU (DescHW|0x02) /* GPU */
|
||
|
#define HwCdRom (DescHW|0x03) /* CDROM Decorder */
|
||
|
#define HwDMAC (DescHW|0x04) /* DMA controller */
|
||
|
#define HwRTC0 (DescHW|0x05) /* RTC0 */
|
||
|
#define HwRTC1 (DescHW|0x06) /* RTC1 */
|
||
|
#define HwRTC2 (DescHW|0x07) /* RTC2 */
|
||
|
#define HwCNTL (DescHW|0x08) /* Controller */
|
||
|
#define HwSPU (DescHW|0x09) /* SPU */
|
||
|
#define HwPIO (DescHW|0x0a) /* PIO */
|
||
|
#define HwSIO (DescHW|0x0b) /* SIO */
|
||
|
|
||
|
#define HwCPU (DescHW|0x10) /* Exception */
|
||
|
#define HwCARD (DescHW|0x11) /* memory card */
|
||
|
#define HwCARD_0 (DescHW|0x12) /* memory card */
|
||
|
#define HwCARD_1 (DescHW|0x13) /* memory card */
|
||
|
#define SwCARD (DescSW|0x01) /* memory card */
|
||
|
#define SwMATH (DescSW|0x02) /* libmath */
|
||
|
|
||
|
#define RCntCNT0 (DescRC|0x00) /* display pixel */
|
||
|
#define RCntCNT1 (DescRC|0x01) /* horizontal sync */
|
||
|
#define RCntCNT2 (DescRC|0x02) /* one-eighth of system clock */
|
||
|
#define RCntCNT3 (DescRC|0x03) /* vertical sync target value fixed to 1 */
|
||
|
|
||
|
#define RCntMdINTR 0x1000
|
||
|
#define RCntMdNOINTR 0x2000
|
||
|
#define RCntMdSC 0x0001
|
||
|
#define RCntMdSP 0x0000
|
||
|
#define RCntMdFR 0x0000
|
||
|
#define RCntMdGATE 0x0010
|
||
|
|
||
|
#define EvSpCZ 0x0001 /* counter becomes zero */
|
||
|
#define EvSpINT 0x0002 /* interrupted */
|
||
|
#define EvSpIOE 0x0004 /* end of i/o */
|
||
|
#define EvSpCLOSE 0x0008 /* file was closed */
|
||
|
#define EvSpACK 0x0010 /* command acknowledged */
|
||
|
#define EvSpCOMP 0x0020 /* command completed */
|
||
|
#define EvSpDR 0x0040 /* data ready */
|
||
|
#define EvSpDE 0x0080 /* data end */
|
||
|
#define EvSpTIMOUT 0x0100 /* time out */
|
||
|
#define EvSpUNKNOWN 0x0200 /* unknown command */
|
||
|
#define EvSpIOER 0x0400 /* end of read buffer */
|
||
|
#define EvSpIOEW 0x0800 /* end of write buffer */
|
||
|
#define EvSpTRAP 0x1000 /* general interrupt */
|
||
|
#define EvSpNEW 0x2000 /* new device */
|
||
|
#define EvSpSYSCALL 0x4000 /* system call instruction */
|
||
|
#define EvSpERROR 0x8000 /* error happned */
|
||
|
#define EvSpPERROR 0x8001 /* previous write error happned */
|
||
|
#define EvSpEDOM 0x0301 /* domain error in libmath */
|
||
|
#define EvSpERANGE 0x0302 /* range error in libmath */
|
||
|
|
||
|
#define EvMdINTR 0x1000
|
||
|
#define EvMdNOINTR 0x2000
|
||
|
|
||
|
#define EvStUNUSED 0x0000
|
||
|
#define EvStWAIT 0x1000
|
||
|
#define EvStACTIVE 0x2000
|
||
|
#define EvStALREADY 0x4000
|
||
|
|
||
|
#define TcbMdRT 0x1000 /* reserved by system */
|
||
|
#define TcbMdPRI 0x2000 /* reserved by system */
|
||
|
|
||
|
#define TcbStUNUSED 0x1000
|
||
|
#define TcbStACTIVE 0x4000
|
||
|
|
||
|
#if defined(_LANGUAGE_C)||defined(LANGUAGE_C)||defined(_LANGUAGE_C_PLUS_PLUS)||defined(__cplusplus)||defined(c_plusplus)
|
||
|
struct ToT {
|
||
|
unsigned long *head;
|
||
|
long size;
|
||
|
};
|
||
|
|
||
|
struct TCBH {
|
||
|
struct TCB *entry; /* NULL */
|
||
|
long flag;
|
||
|
};
|
||
|
|
||
|
struct TCB {
|
||
|
long status;
|
||
|
long mode;
|
||
|
unsigned long reg[NREGS]; /* never change the offset of this */
|
||
|
long system[6]; /* reserved by system */
|
||
|
};
|
||
|
|
||
|
struct EvCB {
|
||
|
unsigned long desc;
|
||
|
long status;
|
||
|
long spec;
|
||
|
long mode;
|
||
|
long (*FHandler)();
|
||
|
long system[2]; /* reserved by system */
|
||
|
};
|
||
|
|
||
|
|
||
|
struct EXEC {
|
||
|
unsigned long pc0;
|
||
|
unsigned long gp0;
|
||
|
unsigned long t_addr;
|
||
|
unsigned long t_size;
|
||
|
unsigned long d_addr;
|
||
|
unsigned long d_size;
|
||
|
unsigned long b_addr;
|
||
|
unsigned long b_size;
|
||
|
unsigned long s_addr;
|
||
|
unsigned long s_size;
|
||
|
unsigned long sp,fp,gp,ret,base;
|
||
|
};
|
||
|
|
||
|
|
||
|
struct XF_HDR {
|
||
|
char key[8];
|
||
|
unsigned long text;
|
||
|
unsigned long data;
|
||
|
struct EXEC exec;
|
||
|
char title[60]; /* "PlayStation(tm) Executable A1" */
|
||
|
};
|
||
|
|
||
|
|
||
|
struct DIRENTRY {
|
||
|
char name[20];
|
||
|
long attr;
|
||
|
long size;
|
||
|
struct DIRENTRY *next;
|
||
|
long head;
|
||
|
char system[4];
|
||
|
};
|
||
|
|
||
|
|
||
|
extern struct ToT SysToT[32];
|
||
|
|
||
|
extern long SysClearRCnt[];
|
||
|
|
||
|
#ifndef NULL
|
||
|
#define NULL (0)
|
||
|
#endif
|
||
|
|
||
|
#if defined(_LANGUAGE_C)||defined(LANGUAGE_C)
|
||
|
#define delete erase
|
||
|
#endif /* LANGUAGE_C */
|
||
|
|
||
|
#endif /* LANGUAGE_C||_LANGUAGE_C_PLUS_PLUS||__cplusplus||c_plusplus */
|
||
|
|
||
|
#endif /* _KERNEL_H */
|
||
|
|
||
|
|