Custom-OS-Kernel / h / pandos_const.h
pandos_const.h
Raw
#ifndef PANDOS_CONST_H_INCLUDED
#define PANDOS_CONST_H_INCLUDED

/****************************************************************************
 *
 * This header file contains utility constants & macro definitions.
 *
 ****************************************************************************/

#include <umps3/umps/const.h>
#include <umps3/umps/arch.h>


/* Hardware & software constants */
#define PAGESIZE 4096 /* page size in bytes	*/
#define WORDLEN  4    /* word size in bytes	*/


/* timer, timescale, TOD-LO and other bus regs */
#define RAMBASEADDR   0x10000000
#define RAMBASESIZE   0x10000004
#define TODLOADDR     0x1000001C
#define INTERVALTMR   0x10000020
#define TIMESCALEADDR 0x10000024

/* Memory related constants */
#define KSEG0        0x00000000
#define KSEG1        0x20000000
#define KSEG2        0x40000000
#define KUSEG        0x80000000
#define RAMSTART     0x20000000
#define BIOSDATAPAGE 0x0FFFF000
#define PASSUPVECTOR 0x0FFFF900

/* Exceptions related constants */
#define PGFAULTEXCEPT 0
#define GENERALEXCEPT 1

/* Mikeyg Added constants */

#define CREATEPROCESS 1
#define TERMPROCESS   2
#define PASSEREN      3
#define VERHOGEN      4
#define IOWAIT        5
#define GETTIME       6
#define CLOCKWAIT     7
#define GETSUPPORTPTR 8
#define TERMINATE     9
#define GET_TOD       10
#define WRITEPRINTER  11
#define WRITETERMINAL 12
#define READTERMINAL  13
#define DISK_GET      14
#define DISK_PUT      15
#define FLASH_READ    16
#define FLASH_WRITE   17
#define DELAY         18
#define PSEMVIRT      19
#define VSEMVIRT      20


/* Status register constants */
#define ALLOFF      0x00000000
#define USERPON     0x00000008
#define IEPON       0x00000004
#define IECON       0x00000001
#define IMON        0x0000FF00
#define TEBITON     0x08000000
#define DISABLEINTS 0xFFFFFFFE

/* Cause register constants */
#define GETEXECCODE    0x0000007C
#define CLEAREXECCODE  0xFFFFFF00
#define LOCALTIMERINT  0x00000200
#define TIMERINTERRUPT 0x00000400
#define DISKINTERRUPT  0x00000800
#define FLASHINTERRUPT 0x00001000
#define PRINTINTERRUPT 0x00004000
#define TERMINTERRUPT  0x00008000
#define IOINTERRUPTS   0
#define TLBINVLDL      2
#define TLBINVLDS      3
#define SYSEXCEPTION   8
#define BREAKEXCEPTION 9
#define PRIVINSTR      10
#define CAUSESHIFT     2


/* EntryLO register (NDVG) constants */
#define DIRTYON  0x00000400
#define VALIDON  0x00000200
#define GLOBALON 0x00000100


/* EntryHI register constants */
#define GETPAGENO     0x3FFFF000
#define GETSHAREFLAG  0xC0000000
#define VPNSHIFT      12
#define ASIDSHIFT     6
#define SHAREDSEGFLAG 30


/* Index register constants */
#define PRESENTFLAG 0x80000000


/* Device register constants */
#define DEV0ON 0x00000001
#define DEV1ON 0x00000002
#define DEV2ON 0x00000004
#define DEV3ON 0x00000008
#define DEV4ON 0x00000010
#define DEV5ON 0x00000020
#define DEV6ON 0x00000040
#define DEV7ON 0x00000080


#define OKCHARTRANS  5
#define TRANSMITCHAR 2

#define SEEKTOCYL  2
#define DISKREAD   3
#define DISKWRITE  4
#define FLASHREAD  2
#define FLASHWRITE 3
#define BACKREAD   1
#define BACKWRITE  2


/* Memory Constants */
#define UPROCSTARTADDR 0x800000B0
#define USERSTACKTOP   0xC0000000
#define KERNELSTACK    0x20001000


#define SHARED  0x3
#define PRIVATE 0x2


/* Utility constants */
#define ON         1
#define OFF        0
#define OK         0
#define NOPROC     -1
#define BYTELENGTH 8

#define PSECOND    100000
#define TIMESLICE  5000 /* length of proc's time slice	*/
#define NEVER      0x7FFFFFFF
#define SECOND     1000000
#define STATESIZE  0x8C
#define DEVICECNT  (DEVINTNUM * DEVPERINT)
#define MAXSTRLENG 128

#define VMDISK        0
#define MAXPAGES      32
#define USERPGTBLSIZE MAXPAGES
#define OSFRAMES      32

#define FLASHPOOLSTART (RAMSTART + (OSFRAMES * PAGESIZE))
#define DISKPOOLSTART  (FLASHPOOLSTART + (DEVPERINT * PAGESIZE))
#define FRAMEPOOLSTART (DISKPOOLSTART + (DEVPERINT * PAGESIZE))

#define RAMTOP(T) ((T) = ((*((int *)RAMBASEADDR)) + (*((int *)RAMBASESIZE))))


#define DISKBACK     1
#define FLASHBACK    0
#define BACKINGSTORE FLASHBACK

#define UPROCMAX 8
#define POOLSIZE (UPROCMAX * 2)
#define MAXPROC 20 /* Max number of PCBs */
/* End of Mikeyg constants */

/* Phase 3 */
#define SUPP_SEM_N 3
#define POOLSTART 0x20020000
#define SET_ASID(U, x) (U |= (memaddr)(x) << ASIDSHIFT)
#define PAGETBLSTART 0x80000000
#define DISABLE_INTERRUPTS_COMMAND setSTATUS(getSTATUS() & DISABLEINTS)
#define ENABLE_INTERRUPTS_COMMAND setSTATUS(getSTATUS() | IECON);
#define GET_DEV_ADDR(line, device) (devreg_t*) (DEVREG + (((line) - 3) * 0x80) + ((device) * 0x10))
#define DEVREG 0x10000054
#define GETSPTPTR 8
#define PRINTER 0
#define WRITETERM 1
#define READTERM 2
#define PFNSHIFT 12
#define VALID_BIT_POS 9
#define PRINTCHR 2
#define PASSERN 3
#define GET_EXEC_CODE(S) BitExtractor(S, GETEXECCODE, CAUSESHIFT)
#define UNSET_BIT(T, pos) (T &= ~(1 << pos))
#define GET_BDP_STATUS(T) state_t *T = (state_t *)BIOSDATAPAGE

#endif