diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-08-18 23:37:42 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-08-18 23:37:42 +0000 |
commit | 794ff4dc959a8dfef4f704ef6a5bb7334e421623 (patch) | |
tree | 9ea4d7f31e69420a29819a7e4c88e4097aa4380f /include/asm-mips64/page.h | |
parent | 8b92ed51419c907aa453c063b0afaefaef268c02 (diff) |
- Drop support for 32/32 fp register model
- Fix siginfo structure definition
- Ptrace fixes, one of them was an uninitialized pointer.
- Header file fixes.
- Fixes to linker scripts required for new binutils.
- MIPS64. Chainsaw edition.
Btw, Harald, why does the kernel no longer compile ...
Diffstat (limited to 'include/asm-mips64/page.h')
-rw-r--r-- | include/asm-mips64/page.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/include/asm-mips64/page.h b/include/asm-mips64/page.h new file mode 100644 index 000000000..5a97a951f --- /dev/null +++ b/include/asm-mips64/page.h @@ -0,0 +1,88 @@ +/* $Id$ + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 1994 - 1999 by Ralf Baechle + * Copyright (C) 1999 Silicon Graphics, Inc. + * + * XXX This is all complete bullshit on MIPS64. + */ +#ifndef _ASM_PAGE_H +#define _ASM_PAGE_H + +/* PAGE_SHIFT determines the page size */ +#define PAGE_SHIFT 12 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) + +#ifdef __KERNEL__ + +#define STRICT_MM_TYPECHECKS + +#ifndef _LANGUAGE_ASSEMBLY + +#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0) +#define PAGE_BUG(page) do { BUG(); } while (0) + +extern void (*clear_page)(unsigned long page); +extern void (*copy_page)(unsigned long to, unsigned long from); + +#ifdef STRICT_MM_TYPECHECKS +/* + * These are used to make use of C type-checking.. + */ +typedef struct { unsigned long pte; } pte_t; +typedef struct { unsigned long pmd; } pmd_t; +typedef struct { unsigned long pgd; } pgd_t; +typedef struct { unsigned long pgprot; } pgprot_t; + +#define pte_val(x) ((x).pte) +#define pmd_val(x) ((x).pmd) +#define pgd_val(x) ((x).pgd) +#define pgprot_val(x) ((x).pgprot) + +#define __pte(x) ((pte_t) { (x) } ) +#define __pme(x) ((pme_t) { (x) } ) +#define __pgd(x) ((pgd_t) { (x) } ) +#define __pgprot(x) ((pgprot_t) { (x) } ) + +#else /* !defined (STRICT_MM_TYPECHECKS) */ +/* + * .. while these make it easier on the compiler + */ +typedef unsigned long pte_t; +typedef unsigned long pmd_t; +typedef unsigned long pgd_t; +typedef unsigned long pgprot_t; + +#define pte_val(x) (x) +#define pmd_val(x) (x) +#define pgd_val(x) (x) +#define pgprot_val(x) (x) + +#define __pte(x) (x) +#define __pmd(x) (x) +#define __pgd(x) (x) +#define __pgprot(x) (x) + +#endif /* !defined (STRICT_MM_TYPECHECKS) */ + +#endif /* _LANGUAGE_ASSEMBLY */ + +/* to align the pointer to the (next) page boundary */ +#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) + +/* + * This handles the memory map. + * We handle pages at KSEG0 for kernels with 32 bit address space. + */ +#define PAGE_OFFSET 0x80000000UL +#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET) +#define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET)) +#define MAP_NR(addr) (__pa(addr) >> PAGE_SHIFT) + +#endif /* defined (__KERNEL__) */ + +#endif /* _ASM_PAGE_H */ |