/* * Memory and machine-specific definitions. Used in C and assembler. */ /* * Sizes */ #define BI2BY 8 /* bits per byte */ #define BI2WD 32 /* bits per word */ #define BY2WD 4 /* bytes per word */ #define BY2V 8 /* bytes per double word */ #define BY2PG 4096 /* bytes per page */ #define WD2PG (BY2PG/BY2WD) /* words per page */ #define PGSHIFT 12 /* log(BY2PG) */ #define ROUND(s, sz) (((s)+(sz-1))&~(sz-1)) #define PGROUND(s) ROUND(s, BY2PG) #define CACHELINELOG 5 #define CACHELINESZ (1< */ #define USER 29 /* R29 is up-> */ /* * Fundamental addresses */ #define UREGSIZE ((8+32)*4) /* * MMU */ #define BATSHIFT 17 /* units of 128k */ #define BATVs 2 /* supervisor mode valid */ #define BATVp 1 /* user mode valid */ #define SEGKs (1<<30) #define SEGKu (1<<29) #define SEGN (1<<28) /* 24bit VSID */ #define API(a) (((ulong)(a)>>22)&0x3F) #define SRN(a) (((ulong)(a)>>28)&0xF) #define PTEVALID (1<<2) /* software */ #define PTEHWVALID (1<<31) /* hardware */ #define PTEWRITE 2 /* kernel only when SEGKu=1 */ #define PTERONLY 3 #define PTEWIMG (PTEW|PTEI|PTEM|PTEG) #define PTEUNCACHED (PTEI|PTEG|PTEM) /* will trap if text is guarded */ #define PTEAPI(a) (a) #define PTEHASH2 (1<<6) #define PTEMOD (1<<7) #define PTEREF (1<<8) #define PTEW 0x40 /* write through */ #define PTEI 0x20 /* cache inhibit */ #define PTEM 0x10 /* memory coherent */ #define PTEG 0x08 /* guarded */ #define TLBSETS 32 /* number of tlb sets (603/603e) */ /* * Address spaces */ #define KUSEG 0x00000000 #define KSEG0 0x20000000 #define BESEG 0x70000000 /* Be control and configuration space (from 2Gb to 4Gb) */ #define KSEG1 0x80000000 /* PCI/ISA i/o space */ #define KSEG2 0xC0000000 /* PCI/ISA memory */ #define KSEGM 0xE0000000 /* mask to check which seg */ #define KZERO KSEG0 /* base of kernel address space */ #define KTZERO (KZERO+0x3000) /* first address in kernel text */ #define KSTACK 4096 /* Size of kernel stack */ #define ISAIO KSEG1 #define ISAMEM KSEG2 #define PCIMEM (KSEG2+MB) /* leave space for ISA devices */ #define MEM2PCI 0x80000000 /* system memory from PCI/ISA side */ /* * Be interrupt control addresses in MPC105 slave space */ #define BEMASK0 0x7FFFF0F0 #define BEMASK1 0x7FFFF1F0 #define BEISR 0x7FFFF2F0 #define BECPU 0x7FFFF3F0 #define BESMI0 (1<<30) #define BESMI1 (1<<29) #define BEISCPU1 (1<<25) #define BERESET 0x7FFFF4F0 #define BESRESET1 (1<<30) #define BEHRESET1 (1<<29) #define BEFLUSHREQ (1<<28) #define BEDISKLED (1<<24) #define BESET (1<<31)