1 |
199 |
simons |
/* $Id: vaddrs.h,v 1.1.1.1 2001-09-10 07:44:43 simons 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 0x00200000 /* Length of the IO area */
|
21 |
|
|
#define IOBASE_END 0xfe200000
|
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 boundary! 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 0xffc00000 /* 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 0x03000 /* Prom SMP Mailbox */
|
60 |
|
|
#define PERCPU_CPUID_OFFSET 0x04000 /* Per-cpu ID number. */
|
61 |
|
|
#define PERCPU_ISALIVE_OFFSET 0x04004 /* Has CPU been initted yet? */
|
62 |
|
|
#define PERCPU_ISIDLING_OFFSET 0x04008 /* Is CPU in idle loop spinning? */
|
63 |
|
|
|
64 |
|
|
#endif /* !(_SPARC_VADDRS_H) */
|
65 |
|
|
|