1 /* $Id: vaddrs.h,v 1.17 1996/01/10 21:00:16 davem Exp $ */ 2 #ifndef _SPARC_VADDRS_H 3 #define _SPARC_VADDRS_H 4 5 #include <asm/head.h> 6 7 /* asm-sparc/vaddrs.h: Here will be define the virtual addresses at 8 * which important I/O addresses will be mapped. 9 * For instance the timer register virtual address 10 * is defined here. 11 * 12 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) 13 */ 14 15 /* I can see only one reason why we should have statically defined 16 * mappings for devices and is the speedup improvements of not loading 17 * a pointer and then the value in the assembly code 18 */ 19 #define IOBASE_VADDR 0xfe000000 /* Base for mapping pages */ 20 #define IOBASE_LEN 0x00100000 /* Length of the IO area */ 21 #define IOBASE_END 0xfe100000 22 #define DVMA_VADDR 0xfff00000 /* Base area of the DVMA on suns */ 23 #define DVMA_LEN 0x00040000 /* Size of the DVMA address space */ 24 #define DVMA_END 0xfff40000 25 26 /* IOMMU Mapping area, must be on a 16MB boundry! Note this 27 * doesn't count the DVMA areas, the prom lives between the 28 * iommu mapping area (for scsi transfer buffers) and the 29 * dvma upper range (for lance packet ring buffers). 30 */ 31 #define IOMMU_VADDR 0xff000000 32 #define IOMMU_LEN 0x00c00000 33 #define IOMMU_END 0xffc00000 /* KADB debugger vm starts here */ 34 35 /* On the sun4/4c we don't need an IOMMU area, but we need a place 36 * to reliably map locked down kernel data. This includes the 37 * task_struct and kernel stack pages of each process plus the 38 * scsi buffers during dvma IO transfers, also the floppy buffers 39 * during pseudo dma which runs with traps off (no faults allowed). 40 * Some quick calculations yield: 41 * NR_TASKS <512> * (3 * PAGE_SIZE) == 0x600000 42 * Subtract this from 0xc00000 and you get 0x927C0 of vm left 43 * over to map SCSI dvma + floppy pseudo-dma buffers. So be 44 * careful if you change NR_TASKS or else there won't be enough 45 * room for it all. 46 */ 47 #define SUN4C_LOCK_VADDR 0xff000000 48 #define SUN4C_LOCK_LEN 0x00c00000 49 #define SUN4C_LOCK_END 0xffc00000 50 51 /* On sun4m machines we need per-cpu virtual areas */ 52 #define PERCPU_VADDR 0xff000000 /* Base for per-cpu virtual mappings */ 53 #define PERCPU_ENTSIZE 0x00100000 54 #define PERCPU_LEN ((PERCPU_ENTSIZE*NCPUS)) 55 56 /* per-cpu offsets */ 57 #define PERCPU_TBR_OFFSET 0x00000 /* %tbr, mainly used for identification. */ 58 #define PERCPU_KSTACK_OFFSET 0x01000 /* Beginning of kernel stack for this cpu */ 59 #define PERCPU_MBOX_OFFSET 0x02000 /* Prom SMP Mailbox */ 60 #define PERCPU_CPUID_OFFSET 0x03000 /* Per-cpu ID number. */ 61 #define PERCPU_ISALIVE_OFFSET 0x03004 /* Has CPU been initted yet? */ 62 #define PERCPU_ISIDLING_OFFSET 0x03008 /* Is CPU in idle loop spinning? */ 63 64 #endif /* !(_SPARC_VADDRS_H) */ 65