X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=include%2Fasm-sparc64%2Fpage.h;h=c3dc444563e07546abaffc734235500d62aecc54;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=7259d9984c58a09b49f420f3301f9c056e3e514f;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/include/asm-sparc64/page.h b/include/asm-sparc64/page.h index 7259d9984..c3dc44456 100644 --- a/include/asm-sparc64/page.h +++ b/include/asm-sparc64/page.h @@ -21,11 +21,14 @@ extern void clear_user_page(void *addr, unsigned long vaddr, struct page *page); #define copy_page(X,Y) memcpy((void *)(X), (void *)(Y), PAGE_SIZE) extern void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage); -/* GROSS, defining this makes gcc pass these types as aggregates, - * and thus on the stack, turn this crap off... -DaveM +/* Unlike sparc32, sparc64's parameter passing API is more + * sane in that structures which as small enough are passed + * in registers instead of on the stack. Thus, setting + * STRICT_MM_TYPECHECKS does not generate worse code so + * let's enable it to get the type checking. */ -/* #define STRICT_MM_TYPECHECKS */ +#define STRICT_MM_TYPECHECKS #ifdef STRICT_MM_TYPECHECKS /* These are used to make use of C type-checking.. */ @@ -33,25 +36,19 @@ typedef struct { unsigned long pte; } pte_t; typedef struct { unsigned long iopte; } iopte_t; typedef struct { unsigned int pmd; } pmd_t; typedef struct { unsigned int pgd; } pgd_t; -typedef struct { unsigned long ctxd; } ctxd_t; typedef struct { unsigned long pgprot; } pgprot_t; -typedef struct { unsigned long iopgprot; } iopgprot_t; #define pte_val(x) ((x).pte) #define iopte_val(x) ((x).iopte) #define pmd_val(x) ((x).pmd) #define pgd_val(x) ((x).pgd) -#define ctxd_val(x) ((x).ctxd) #define pgprot_val(x) ((x).pgprot) -#define iopgprot_val(x) ((x).iopgprot) #define __pte(x) ((pte_t) { (x) } ) #define __iopte(x) ((iopte_t) { (x) } ) #define __pmd(x) ((pmd_t) { (x) } ) #define __pgd(x) ((pgd_t) { (x) } ) -#define __ctxd(x) ((ctxd_t) { (x) } ) #define __pgprot(x) ((pgprot_t) { (x) } ) -#define __iopgprot(x) ((iopgprot_t) { (x) } ) #else /* .. while these make it easier on the compiler */ @@ -59,25 +56,19 @@ typedef unsigned long pte_t; typedef unsigned long iopte_t; typedef unsigned int pmd_t; typedef unsigned int pgd_t; -typedef unsigned long ctxd_t; typedef unsigned long pgprot_t; -typedef unsigned long iopgprot_t; #define pte_val(x) (x) #define iopte_val(x) (x) #define pmd_val(x) (x) #define pgd_val(x) (x) -#define ctxd_val(x) (x) #define pgprot_val(x) (x) -#define iopgprot_val(x) (x) #define __pte(x) (x) #define __iopte(x) (x) #define __pmd(x) (x) #define __pgd(x) (x) -#define __ctxd(x) (x) #define __pgprot(x) (x) -#define __iopgprot(x) (x) #endif /* (STRICT_MM_TYPECHECKS) */