1 /* s4clow.h: Defines for in-window low level tlb refill code. 2 * 3 * Copyright (C) 1995 David S. Miller (davem@caipfs.rutgers.edu) 4 */ 5 #ifndef _SPARC_S4CLOW_H 6 #define _SPARC_S4CLOW_H 7 8 #define PAGE_SIZE 0x00001000 9 #define REAL_PGDIR_MASK 0xfffc0000 10 #define VMALLOC_START 0xfe100000 11 12 #define RING_RINGHD 0x00 13 #define RING_NENTRIES 0x10 14 15 #define MMU_ENTRY_NEXT 0x00 16 #define MMU_ENTRY_PREV 0x04 17 #define MMU_ENTRY_VADDR 0x08 18 #define MMU_ENTRY_PSEG 0x0c 19 #define MMU_ENTRY_LCK 0x0d 20 21 #define VACINFO_SIZE 0x00 22 #define VACINFO_HWFLSH 0x08 23 #define VACINFO_LSIZE 0x0c 24 25 /* Each of the routines could get called by any of the 26 * other low level sun4c tlb routines. Well... at least 27 * we code it that way. Because we are in window we need 28 * a way to make a routine completely self contained and 29 * only need to worry about saving it's own set of registers 30 * which it in fact uses. With traps off this is difficult 31 * ... however... 32 * 33 * The Sparc can address anywhere in the two ranges 34 * 0 --> PAGE_SIZE and -PAGE_SIZE --> -1 without any 35 * address calculation registers. So we pull a trick, 36 * we map a special page for these low level tlb routines 37 * since they must be as quick as possible. Since the low 38 * page is the NULL unmapped page and in user space we use 39 * the high one for simplicity. Kids, do not try this at 40 * home. 41 */ 42 #define REGSAVE_BASE (-PAGE_SIZE) 43 44 #define FLUSHREGS 0 45 #define KFLTREGS 256 46 #define UFLTREGS 512 47 48 #endif /* !(_SPARC_S4CLOW_H) */