|  | @@ -69,3 +69,112 @@
 | 
	
		
			
				|  |  |  #define CP0_PERFORMANCE $25
 | 
	
		
			
				|  |  |  #define CP0_ECC $26
 | 
	
		
			
				|  |  |  #define CP0_CACHEERR $27
 | 
	
		
			
				|  |  | +#define CP0_TAGLO $28
 | 
	
		
			
				|  |  | +#define CP0_TAGHI $29
 | 
	
		
			
				|  |  | +#define CP0_ERROREPC $30
 | 
	
		
			
				|  |  | +#define CP0_DESAVE $31
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * R4640/R4650 cp0 register names.  These registers are listed
 | 
	
		
			
				|  |  | + * here only for completeness; without MMU these CPUs are not useable
 | 
	
		
			
				|  |  | + * by Linux.  A future ELKS port might take make Linux run on them
 | 
	
		
			
				|  |  | + * though ...
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define CP0_IBASE $0
 | 
	
		
			
				|  |  | +#define CP0_IBOUND $1
 | 
	
		
			
				|  |  | +#define CP0_DBASE $2
 | 
	
		
			
				|  |  | +#define CP0_DBOUND $3
 | 
	
		
			
				|  |  | +#define CP0_CALG $17
 | 
	
		
			
				|  |  | +#define CP0_IWATCH $18
 | 
	
		
			
				|  |  | +#define CP0_DWATCH $19
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Coprocessor 0 Set 1 register names
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define CP0_S1_DERRADDR0  $26
 | 
	
		
			
				|  |  | +#define CP0_S1_DERRADDR1  $27
 | 
	
		
			
				|  |  | +#define CP0_S1_INTCONTROL $20
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Coprocessor 0 Set 2 register names
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define CP0_S2_SRSCTL	  $12	/* MIPSR2 */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Coprocessor 0 Set 3 register names
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define CP0_S3_SRSMAP	  $12	/* MIPSR2 */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + *  TX39 Series
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define CP0_TX39_CACHE	$7
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Coprocessor 1 (FPU) register names
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define CP1_REVISION   $0
 | 
	
		
			
				|  |  | +#define CP1_STATUS     $31
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * FPU Status Register Values
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Status Register Values
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define FPU_CSR_FLUSH   0x01000000      /* flush denormalised results to 0 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND    0x00800000      /* $fcc0 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND0   0x00800000      /* $fcc0 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND1   0x02000000      /* $fcc1 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND2   0x04000000      /* $fcc2 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND3   0x08000000      /* $fcc3 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND4   0x10000000      /* $fcc4 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND5   0x20000000      /* $fcc5 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND6   0x40000000      /* $fcc6 */
 | 
	
		
			
				|  |  | +#define FPU_CSR_COND7   0x80000000      /* $fcc7 */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Bits 18 - 20 of the FPU Status Register will be read as 0,
 | 
	
		
			
				|  |  | + * and should be written as zero.
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +#define FPU_CSR_RSVD	0x001c0000
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * X the exception cause indicator
 | 
	
		
			
				|  |  | + * E the exception enable
 | 
	
		
			
				|  |  | + * S the sticky/flag bit
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  | +#define FPU_CSR_ALL_X   0x0003f000
 | 
	
		
			
				|  |  | +#define FPU_CSR_UNI_X   0x00020000
 | 
	
		
			
				|  |  | +#define FPU_CSR_INV_X   0x00010000
 | 
	
		
			
				|  |  | +#define FPU_CSR_DIV_X   0x00008000
 | 
	
		
			
				|  |  | +#define FPU_CSR_OVF_X   0x00004000
 | 
	
		
			
				|  |  | +#define FPU_CSR_UDF_X   0x00002000
 | 
	
		
			
				|  |  | +#define FPU_CSR_INE_X   0x00001000
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define FPU_CSR_ALL_E   0x00000f80
 | 
	
		
			
				|  |  | +#define FPU_CSR_INV_E   0x00000800
 | 
	
		
			
				|  |  | +#define FPU_CSR_DIV_E   0x00000400
 | 
	
		
			
				|  |  | +#define FPU_CSR_OVF_E   0x00000200
 | 
	
		
			
				|  |  | +#define FPU_CSR_UDF_E   0x00000100
 | 
	
		
			
				|  |  | +#define FPU_CSR_INE_E   0x00000080
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define FPU_CSR_ALL_S   0x0000007c
 | 
	
		
			
				|  |  | +#define FPU_CSR_INV_S   0x00000040
 | 
	
		
			
				|  |  | +#define FPU_CSR_DIV_S   0x00000020
 | 
	
		
			
				|  |  | +#define FPU_CSR_OVF_S   0x00000010
 | 
	
		
			
				|  |  | +#define FPU_CSR_UDF_S   0x00000008
 | 
	
		
			
				|  |  | +#define FPU_CSR_INE_S   0x00000004
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Bits 0 and 1 of FPU Status Register specify the rounding mode */
 | 
	
		
			
				|  |  | +#define FPU_CSR_RM	0x00000003
 | 
	
		
			
				|  |  | +#define FPU_CSR_RN      0x0     /* nearest */
 | 
	
		
			
				|  |  | +#define FPU_CSR_RZ      0x1     /* towards zero */
 | 
	
		
			
				|  |  | +#define FPU_CSR_RU      0x2     /* towards +Infinity */
 | 
	
		
			
				|  |  | +#define FPU_CSR_RD      0x3     /* towards -Infinity */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * Values for PageMask register
 | 
	
		
			
				|  |  | + */
 |