## diffname bitsy/mem.h 2000/0831
## diff -e /dev/null /n/emeliedump/2000/0831/sys/src/9/bitsy/mem.h
0a
/*
* 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 MAXMACH 1 /* max # cpus system can run */
/*
* Time
*/
#define HZ (100) /* clock frequency */
#define MS2HZ (1000/HZ) /* millisec per clock tick */
#define TK2SEC(t) ((t)/HZ) /* ticks to seconds */
#define TK2MS(t) ((((ulong)(t))*1000)/HZ) /* ticks to milliseconds */
#define MS2TK(t) ((((ulong)(t))*HZ)/1000) /* milliseconds to ticks */
/*
* Address spaces
*/
#define KZERO 0x80000000
#define MACHADDR (KZERO+0x00001000)
#define KTTB (KZERO+0x00004000)
#define KTZERO (KZERO+0x00010000)
#define KSTACK (16*1024) /* Size of kernel stack */
/*
* virtual MMU
*/
#define PTEMAPMEM (1024*1024)
#define PTEPERTAB (PTEMAPMEM/BY2PG)
#define SEGMAPSIZE 1984
#define SSEGMAPSIZE 16
#define PPN(x) ((x)&~(BY2PG-1))
/*
* physical MMU
*/
.
## diffname bitsy/mem.h 2000/0901
## diff -e /n/emeliedump/2000/0831/sys/src/9/bitsy/mem.h /n/emeliedump/2000/0901/sys/src/9/bitsy/mem.h
34,35d
32c
#define KZERO 0xC0000000
.
## diffname bitsy/mem.h 2000/0902
## diff -e /n/emeliedump/2000/0901/sys/src/9/bitsy/mem.h /n/emeliedump/2000/0902/sys/src/9/bitsy/mem.h
48a
#define PTEVALID 0
#define PTERONLY 0
#define PTEWRITE 0
#define PTEUNCACHED 0
.
34a
/*
* Address spaces
*/
#define UZERO 0 /* base of user address space */
#define UTZERO (UZERO+BY2PG) /* first address in user text */
#define KZERO 0xC0000000 /* base of kernel address space */
#define KTZERO 0xC0008000 /* first address in kernel text */
#define USTKTOP (KZERO-BY2PG) /* byte just beyond user stack */
#define USTKSIZE (16*1024*1024) /* size of user stack */
#define TSTKTOP (USTKTOP-USTKSIZE) /* end of new stack in sysexec */
#define TSTKSIZ 100
.
32d
30c
* Fundamental addresses
.
16a
#define BLOCKALIGN 8
.
## diffname bitsy/mem.h 2000/0904
## diff -e /n/emeliedump/2000/0902/sys/src/9/bitsy/mem.h /n/emeliedump/2000/0904/sys/src/9/bitsy/mem.h
42c
#define IOZERO 0x80000000 /* 1 gig of special regs */
#define USTKTOP (IOZERO-BY2PG) /* byte just beyond user stack */
.
36c
* Address spaces:
*
* We've direct mapped the DRAM's and all the
* special use space. Since the DRAM's lie at
* 0xc0000000 and since the Compaq boot loader
* copies the kernel to the start of DRAM, we've
* made KZERO 0xc0000000. We've also direct mapped
* the special use io space between 0x8000000 and KZERO.
* That means we can leave the MMU off till we're pretty
* far into the boot.
*
* Both these decisions can be changed by putting an MMU setup in
* l.s and changing the definitions below.
.
## diffname bitsy/mem.h 2000/0906
## diff -e /n/emeliedump/2000/0904/sys/src/9/bitsy/mem.h /n/emeliedump/2000/0906/sys/src/9/bitsy/mem.h
78a
/*
* memory physical addresses
*/
#define PHYSFLASH0 0x00000000
#define PHYSDRAM0 0xC0000000
#define PHYSNULL0 0xE0000000
/*
* peripheral control module physical addresses
*/
#define LCDREGS 0xB0100000 /* display */
#define USBREGS 0x80000000 /* serial port 0 - USB */
#define UART1REGS 0x80010000 /* serial port 1 - UART */
#define GPCLKREGS 0x80020060 /* serial port 1 - general purpose clock */
#define UART2REGS 0x80030000 /* serial port 2 - low speed IR */
#define HSSPREGS 0x80040060 /* serial port 2 - high speed IR */
#define UART3REGS 0x80050000 /* serial port 3 - RS232 UART */
#define MCPREGS 0x80060000 /* serial port 4 - multimedia comm port */
#define SSPREGS 0x80070060 /* serial port 4 - synchronous serial port */
#define PPCREGS 0x90060000 /* peripheral pin controller */
#define GPIOREGS 0x90040000 /* 28 general purpose IO pins */
/*
* Program Status Registers
*/
#define PsrMusr 0x00000010 /* mode */
#define PsrMfiq 0x00000011
#define PsrMirq 0x00000012
#define PsrMsvc 0x00000013
#define PsrMabt 0x00000017
#define PsrMund 0x0000001B
#define PsrMask 0x0000001F
#define PsrDfiq 0x00000040 /* disable FIQ interrupts */
#define PsrDirq 0x00000080 /* disable IRQ interrupts */
#define PsrV 0x10000000 /* overflow */
#define PsrC 0x20000000 /* carry/borrow/extend */
#define PsrZ 0x40000000 /* zero */
#define PsrN 0x80000000 /* negative/less than */
/*
* Coprocessors
*/
#define CpMMU 15
/*
* Internal MMU coprocessor registers
*/
#define CpCPUID 0 /* R: */
#define CpControl 1 /* R: */
#define CpTTB 2 /* RW: translation table base */
#define CpDAC 3 /* RW: domain access control */
#define CpFSR 5 /* RW: fault status */
#define CpFAR 6 /* RW: fault address */
#define CpCacheFlush 7 /* W: cache flushing, wb draining*/
#define CpTLBFlush 8 /* W: TLB flushing */
#define CpRBFlush 9 /* W: Read Buffer ops */
#define CpPID 13 /* RW: PID for virtual mapping */
#define CpBpt 14 /* W: Breakpoint register */
#define CpTest 15 /* W: Test, CLock and Idle Control */
/*
* CpControl
*/
#define CpCmmu 0x00000001 /* M: MMU enable */
#define CpCalign 0x00000002 /* A: alignment fault enable */
#define CpCdcache 0x00000004 /* C: data cache on */
#define CpCwb 0x00000008 /* W: write buffer turned on */
#define CpCi32 0x00000010 /* P: 32-bit program space */
#define CpCd32 0x00000020 /* D: 32-bit data space */
#define CpCbe 0x00000080 /* B: big-endian operation */
#define CpCsystem 0x00000100 /* S: system permission */
#define CpCrom 0x00000200 /* R: ROM permission */
#define CpCicache 0x00001000 /* I: instruction cache on */
#define CpCvivec 0x00002000 /* X: virtual interrupt vector adjust */
/*
* fault codes
*/
#define FCterm 0x2 /* terminal */
#define FCvec 0x0 /* vector */
#define FCalignf 0x1 /* unaligned full word data access */
#define FCalignh 0x3 /* unaligned half word data access */
#define FCl1abort 0xc /* level 1 external abort on translation */
#define FCl2abort 0xe /* level 2 external abort on translation */
#define FCtransSec 0x5 /* section translation */
#define FCtransPage 0x7 /* page translation */
#define FCdomainSec 0x9 /* section domain */
#define FCdomainPage 0x11 /* page domain */
#define FCpermSec 0x9 /* section permissions */
#define FCpermPage 0x11 /* page permissions */
#define FCabortLFSec 0x4 /* external abort on linefetch for section */
#define FCabortLFPage 0x6 /* external abort on linefetch for page */
#define FCabortNLFSec 0x8 /* external abort on non-linefetch for section */
#define FCabortNLFPage 0xa /* external abort on non-linefetch for page */
/*
* PTE bits used by fault.h. mmu.c translates them to real values.
*/
#define PTEVALID (1<<0)
#define PTERONLY 0 /* this is implied by the absence of PTEWRITE */
#define PTEWRITE (1<<1)
#define PTEUNCACHED (1<<2)
/*
* H3650 specific definitions
*/
#define EGPIOREGS 0x49000000 /* Additional GPIO register */
.
74,77d
72c
* SA1110 definitions
.
58a
#define MACHADDR (KZERO+0x00001000)
.
54,55c
#define REGZERO 0xA0000000 /* 256 meg for special regs */
#define FLASHZERO 0xB0000000 /* 256 meg for flash */
#define USTKTOP (REGZERO-BY2PG) /* byte just beyond user stack */
.
47,48c
* Flash is mapped to 0xb0000000 and special registers are mapped
* on demand to areas starting at 0xa0000000.
*
* The direct mapping is convenient but not necessary. It means
* that we don't have to turn on the MMU till well into the
* kernel. This can be changed by providing a mapping in l.s
* before calling main.
.
38,45c
* We direct map all discovered DRAM and the area twixt 0xe0000000 and
* 0xe8000000 used to provide zeros for cache flushing.
.
31,36c
* Virtual addresses:
.
## diffname bitsy/mem.h 2000/0907
## diff -e /n/emeliedump/2000/0906/sys/src/9/bitsy/mem.h /n/emeliedump/2000/0907/sys/src/9/bitsy/mem.h
174a
#define PTEKERNEL (1<<3) /* no user access */
.
48a
#define REGTOP 0xB0000000 /* 256 meg for special regs */
.
## diffname bitsy/mem.h 2000/0929
## diff -e /n/emeliedump/2000/0907/sys/src/9/bitsy/mem.h /n/emeliedump/2000/0929/sys/src/9/bitsy/mem.h
137c
#define CpCmmuena 0x00000001 /* M: MMU enable */
.
55a
#define EVECTORS 0xFFFF0000 /* base of exception vectors (also mapped to KZERO) */
.
## diffname bitsy/mem.h 2000/1001
## diff -e /n/emeliedump/2000/0929/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1001/sys/src/9/bitsy/mem.h
93a
#define INTRREGS 0x90050000 /* interrupt registers */
.
## diffname bitsy/mem.h 2000/1006
## diff -e /n/emeliedump/2000/1001/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1006/sys/src/9/bitsy/mem.h
94a
#define OSTIMERREGS 0x90000000 /* operating system timer registers */
.
24c
#define HZ (10) /* clock frequency */
.
## diffname bitsy/mem.h 2000/1007
## diff -e /n/emeliedump/2000/1006/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1007/sys/src/9/bitsy/mem.h
56c
#define EVECTORS 0xFFFF0000 /* virt base of exception vectors */
.
## diffname bitsy/mem.h 2000/1011
## diff -e /n/emeliedump/2000/1007/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1011/sys/src/9/bitsy/mem.h
48,52c
#define REGZERO 0xA0000000 /* 256 meg for mapspecial regs */
#define REGTOP 0xB0000000 /* ... */
#define FLASHZERO 0xB0000000 /* 128 meg for flash */
#define FLASHTOP 0xB8000000 /* ... */
#define DRAMZERO 0xC0000000 /* 128 meg for memory */
#define DRAMTOP 0xC8000000 /* ... */
#define NULLZERO 0xE0000000 /* 128 meg for cache flush zeroes */
#define NULLTOP 0xE8000000 /* ... */
#define USTKTOP 0x2000000 /* byte just beyond user stack */
#define USTKSIZE (8*1024*1024) /* size of user stack */
.
## diffname bitsy/mem.h 2000/1016
## diff -e /n/emeliedump/2000/1011/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1016/sys/src/9/bitsy/mem.h
65a
* Offsets into flash
*/
#define Flash_bootldr (FLASHZERO+0x0) /* boot loader */
#define Flash_kernel (FLASHZERO+0x10000) /* boot kernel */
#define Flash_tar (FLASHZERO+0x100000) /* tar file containing fs.sac */
/*
.
## diffname bitsy/mem.h 2000/1018
## diff -e /n/emeliedump/2000/1016/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1018/sys/src/9/bitsy/mem.h
24c
#define HZ (20) /* clock frequency */
.
## diffname bitsy/mem.h 2000/1019
## diff -e /n/emeliedump/2000/1018/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1019/sys/src/9/bitsy/mem.h
147c
#define CpTest 15 /* W: Test, Clock and Idle Control */
.
## diffname bitsy/mem.h 2000/1118
## diff -e /n/emeliedump/2000/1019/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1118/sys/src/9/bitsy/mem.h
107a
/*
* PCMCIA addresses
*/
#define PHYSPCM0REGS 0x20000000
#define PYHSPCM0ATTR 0x28000000
#define PYHSPCM0MEM 0x2C000000
#define PHYSPCM1REGS 0x30000000
#define PYHSPCM1ATTR 0x38000000
#define PYHSPCM1MEM 0x3C000000
.
48,49c
#define EMEMZERO 0x90000000 /* 256 meg for add on memory */
#define EMEMTOP 0xA0000000 /* ... */
#define REGZERO 0xA0000000 /* 128 meg for mapspecial regs */
#define REGTOP 0xA8000000 /* ... */
.
## diffname bitsy/mem.h 2000/1121
## diff -e /n/emeliedump/2000/1118/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1121/sys/src/9/bitsy/mem.h
109c
#define PPCREGS 0x90060000 /* peripheral pin controller */
#define MEMCONFREGS 0xA0000000 /* memory configuration */
#define LCDREGS 0xB0100000 /* display */
.
106c
#define OSTIMERREGS 0x90000000 /* operating system timer registers */
#define POWERREGS 0x90020000 /* power management */
.
97d
## diffname bitsy/mem.h 2000/1130
## diff -e /n/emeliedump/2000/1121/sys/src/9/bitsy/mem.h /n/emeliedump/2000/1130/sys/src/9/bitsy/mem.h
145a
#define CpPWR 15
.
55a
#define UCDRAMZERO 0xC8000000 /* 128 meg for dram (uncached/unbuffered) */
#define UCDRAMTOP 0xD0000000 /* ... */
.
54c
#define DRAMZERO 0xC0000000 /* 128 meg for dram */
.
## diffname bitsy/mem.h 2001/0616
## diff -e /n/emeliedump/2000/1130/sys/src/9/bitsy/mem.h /n/emeliedump/2001/0616/sys/src/9/bitsy/mem.h
67c
#define KSTACK (32*1024) /* Size of kernel stack */
.
## diffname bitsy/mem.h 2001/0618
## diff -e /n/emeliedump/2001/0616/sys/src/9/bitsy/mem.h /n/emeliedump/2001/0618/sys/src/9/bitsy/mem.h
108,110c
#define POWERREGS 0x90020000 /* power management */
#define RESETREGS 0x90030000 /* reset controller */
#define GPIOREGS 0x90040000 /* 28 general purpose IO pins */
#define INTRREGS 0x90050000 /* interrupt registers */
.
100,104c
#define UART1REGS 0x80010000 /* serial port 1 - UART */
#define GPCLKREGS 0x80020060 /* serial port 1 - general purpose clock */
#define UART2REGS 0x80030000 /* serial port 2 - low speed IR */
#define HSSPREGS 0x80040060 /* serial port 2 - high speed IR */
#define UART3REGS 0x80050000 /* serial port 3 - RS232 UART */
.
67c
#define KSTACK (16*1024) /* Size of kernel stack */
.
63,64c
#define TSTKSIZ 100
#define MACHADDR (KZERO+0x00001000)
.
61c
#define USTKSIZE (8*1024*1024) /* size of user stack */
.
59c
#define NULLTOP 0xE8000000 /* ... */
.
57c
#define UCDRAMTOP 0xD0000000 /* ... */
.
55c
#define DRAMTOP 0xC8000000 /* ... */
.
44,45c
#define UZERO 0 /* base of user address space */
#define UTZERO (UZERO+BY2PG) /* first address in user text */
.
25c
#define MS2HZ (1000/HZ) /* millisec per clock tick */
.
19c
#define MAXMACH 1 /* max # cpus system can run */
.
15,16c
#define ROUND(s, sz) (((s)+(sz-1))&~(sz-1))
#define PGROUND(s) ROUND(s, BY2PG)
.
9c
#define BI2WD 32 /* bits per word */
.
## diffname bitsy/mem.h 2001/0711
## diff -e /n/emeliedump/2001/0618/sys/src/9/bitsy/mem.h /n/emeliedump/2001/0711/sys/src/9/bitsy/mem.h
27d
## diffname bitsy/mem.h 2001/0808
## diff -e /n/emeliedump/2001/0711/sys/src/9/bitsy/mem.h /n/emeliedump/2001/0808/sys/src/9/bitsy/mem.h
73c
#define Flash_tar (FLASHZERO+0x200000) /* fs.sac (tar file) */
.
## diffname bitsy/mem.h 2001/0814
## diff -e /n/emeliedump/2001/0808/sys/src/9/bitsy/mem.h /n/emeliedump/2001/0814/sys/src/9/bitsy/mem.h
163c
#define CpBpt 14 /* W: Breakpoint register */
.
## diffname bitsy/mem.h 2002/0326
## diff -e /n/emeliedump/2001/0814/sys/src/9/bitsy/mem.h /n/emeliedump/2002/0326/sys/src/9/bitsy/mem.h
27d
## diffname bitsy/mem.h 2002/0518
## diff -e /n/emeliedump/2002/0326/sys/src/9/bitsy/mem.h /n/emeliedump/2002/0518/sys/src/9/bitsy/mem.h
212a
/* Power management */
#define PWR_rtc 0x80000000 /* resume on RTC */
#define PWR_gpio0 0x00000001 /* resume on power button */
#define RCSR_all 0x0000000f
#define PCFR_opde 0x00000001 /* oscillator power-down enable */
#define PCFR_suspend 0x00000001
#define PCFR_fp 0x00000002 /* float pcmcia */
#define PCFR_fs 0x00000004 /* float static memory */
#define PCFR_fo 0x00000008
#define MDREFR_k1db2 (1 << 22)
#define MDREFR_slfrsh 0x80000000 /* self refresh */
#define MDREFR_e1pin (1 << 20)
#define MSC_rt 0x00030003
#define MDCNFG_de0 0x00000001 /* dram enable */
#define MDCNFG_de1 0x00000002
#define MDCNFG_de2 0x00000004
#define MDCNFG_de3 0x00000008
#define MDCFNG_de 0x0000000f
#define PMCR_sf 1
.
|