11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __ASM_SH_PAGE_H 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __ASM_SH_PAGE_H 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 1999 Niibe Yutaka 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy#include <linux/const.h> 9d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* PAGE_SHIFT determines the page size */ 1121440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#if defined(CONFIG_PAGE_SIZE_4KB) 1221440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt# define PAGE_SHIFT 12 1321440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#elif defined(CONFIG_PAGE_SIZE_8KB) 1421440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt# define PAGE_SHIFT 13 1566dfe18114839a7297f56f43f03125f4121de79bPaul Mundt#elif defined(CONFIG_PAGE_SIZE_16KB) 1666dfe18114839a7297f56f43f03125f4121de79bPaul Mundt# define PAGE_SHIFT 14 1721440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#elif defined(CONFIG_PAGE_SIZE_64KB) 1821440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt# define PAGE_SHIFT 16 1921440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#else 2021440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt# error "Bogus kernel page size?" 2121440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#endif 228c12b5dc13bf8516303a8224ab4e9708b33d5b00Paul Mundt 23d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy#define PAGE_SIZE (_AC(1, UL) << PAGE_SHIFT) 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PAGE_MASK (~(PAGE_SIZE-1)) 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PTE_MASK PAGE_MASK 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if defined(CONFIG_HUGETLB_PAGE_SIZE_64K) 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HPAGE_SHIFT 16 2921440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#elif defined(CONFIG_HUGETLB_PAGE_SIZE_256K) 3021440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#define HPAGE_SHIFT 18 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#elif defined(CONFIG_HUGETLB_PAGE_SIZE_1MB) 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HPAGE_SHIFT 20 3321440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#elif defined(CONFIG_HUGETLB_PAGE_SIZE_4MB) 3421440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#define HPAGE_SHIFT 22 3521440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#elif defined(CONFIG_HUGETLB_PAGE_SIZE_64MB) 3621440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#define HPAGE_SHIFT 26 37caff44e7db86243fd6163bc79e543123b0139a46Paul Mundt#elif defined(CONFIG_HUGETLB_PAGE_SIZE_512MB) 38caff44e7db86243fd6163bc79e543123b0139a46Paul Mundt#define HPAGE_SHIFT 29 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HUGETLB_PAGE 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HPAGE_SIZE (1UL << HPAGE_SHIFT) 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HPAGE_MASK (~(HPAGE_SIZE-1)) 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT-PAGE_SHIFT) 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __ASSEMBLY__ 48d01447b3197c2c470a14666be2c640407bbbfec7Paul Mundt#include <asm/uncached.h> 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 50f3c2575818fab45f8609e4aef2e43ab02b3a142ePaul Mundtextern unsigned long shm_align_mask; 5101066625e9ae39742c92e21163f7f2a818e02762Paul Mundtextern unsigned long max_low_pfn, min_low_pfn; 525e2ff328c0668794ff408a4632f5b8a62827571fPaul Mundtextern unsigned long memory_start, memory_end, memory_limit; 53f3c2575818fab45f8609e4aef2e43ab02b3a142ePaul Mundt 542277ab4a1df50e05bc732fe9488d4e902bb8399aPaul Mundtstatic inline unsigned long 552277ab4a1df50e05bc732fe9488d4e902bb8399aPaul Mundtpages_do_alias(unsigned long addr1, unsigned long addr2) 562277ab4a1df50e05bc732fe9488d4e902bb8399aPaul Mundt{ 572277ab4a1df50e05bc732fe9488d4e902bb8399aPaul Mundt return (addr1 ^ addr2) & shm_align_mask; 582277ab4a1df50e05bc732fe9488d4e902bb8399aPaul Mundt} 592277ab4a1df50e05bc732fe9488d4e902bb8399aPaul Mundt 60dfff0fa65ab15db45acd64b3189787d37ab163cdPaul Mundt#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) 61379a95d1d2c3e3682e380084c40b6fc01e38fa1fPaul Mundtextern void copy_page(void *to, void *from); 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 63dfff0fa65ab15db45acd64b3189787d37ab163cdPaul Mundtstruct page; 64dfff0fa65ab15db45acd64b3189787d37ab163cdPaul Mundtstruct vm_area_struct; 65dfff0fa65ab15db45acd64b3189787d37ab163cdPaul Mundt 667747b9a493a197cb4db44c98d25ce6d3d9f586d1Paul Mundtextern void copy_user_highpage(struct page *to, struct page *from, 677747b9a493a197cb4db44c98d25ce6d3d9f586d1Paul Mundt unsigned long vaddr, struct vm_area_struct *vma); 687747b9a493a197cb4db44c98d25ce6d3d9f586d1Paul Mundt#define __HAVE_ARCH_COPY_USER_HIGHPAGE 69dfff0fa65ab15db45acd64b3189787d37ab163cdPaul Mundtextern void clear_user_highpage(struct page *page, unsigned long vaddr); 70dfff0fa65ab15db45acd64b3189787d37ab163cdPaul Mundt#define clear_user_highpage clear_user_highpage 710dfae7d5a21901b28ec0452d71be64adf5ea323ePaul Mundt 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * These are used to make use of C type-checking.. 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 7521440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#ifdef CONFIG_X2TLB 7621440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundttypedef struct { unsigned long pte_low, pte_high; } pte_t; 7721440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundttypedef struct { unsigned long long pgprot; } pgprot_t; 78d04a0f79f502a87bb17b147afc4b3e39e75275c3Paul Mundttypedef struct { unsigned long long pgd; } pgd_t; 7921440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#define pte_val(x) \ 8021440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) 8121440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#define __pte(x) \ 8221440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt ({ pte_t __pte = {(x), ((unsigned long long)(x)) >> 32}; __pte; }) 83249cfea914002baac0af4b080306e6b820cd86b2Paul Mundt#elif defined(CONFIG_SUPERH32) 8421440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundttypedef struct { unsigned long pte_low; } pte_t; 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { unsigned long pgprot; } pgprot_t; 86d04a0f79f502a87bb17b147afc4b3e39e75275c3Paul Mundttypedef struct { unsigned long pgd; } pgd_t; 8721440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#define pte_val(x) ((x).pte_low) 88249cfea914002baac0af4b080306e6b820cd86b2Paul Mundt#define __pte(x) ((pte_t) { (x) } ) 89249cfea914002baac0af4b080306e6b820cd86b2Paul Mundt#else 90249cfea914002baac0af4b080306e6b820cd86b2Paul Mundttypedef struct { unsigned long long pte_low; } pte_t; 9124ef7fc4dcc57afa0c33166c25bfe7676ffd4296Matt Flemingtypedef struct { unsigned long long pgprot; } pgprot_t; 92249cfea914002baac0af4b080306e6b820cd86b2Paul Mundttypedef struct { unsigned long pgd; } pgd_t; 93249cfea914002baac0af4b080306e6b820cd86b2Paul Mundt#define pte_val(x) ((x).pte_low) 94249cfea914002baac0af4b080306e6b820cd86b2Paul Mundt#define __pte(x) ((pte_t) { (x) } ) 9521440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt#endif 9621440cf04a64cd1b1209c12a6e1a3afba2a28709Paul Mundt 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define pgd_val(x) ((x).pgd) 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define pgprot_val(x) ((x).pgprot) 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pgd(x) ((pgd_t) { (x) } ) 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __pgprot(x) ((pgprot_t) { (x) } ) 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1032f569afd9ced9ebec9a6eb3dbf6f83429be0a7b4Martin Schwidefskytypedef struct page *pgtable_t; 1042f569afd9ced9ebec9a6eb3dbf6f83429be0a7b4Martin Schwidefsky 105cb700aa4f13d38726defab3060d3ebeaf67dc189Paul Mundt#define pte_pgprot(x) __pgprot(pte_val(x) & PTE_FLAGS_MASK) 106cb700aa4f13d38726defab3060d3ebeaf67dc189Paul Mundt 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* !__ASSEMBLY__ */ 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 109d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy/* 110d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * __MEMORY_START and SIZE are the physical addresses and size of RAM. 111d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy */ 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __MEMORY_START CONFIG_MEMORY_START 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __MEMORY_SIZE CONFIG_MEMORY_SIZE 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 115d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy/* 116e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman * PHYSICAL_OFFSET is the offset in physical memory where the base 117e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman * of the kernel is loaded. 118e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman */ 119e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman#ifdef CONFIG_PHYSICAL_START 120e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman#define PHYSICAL_OFFSET (CONFIG_PHYSICAL_START - __MEMORY_START) 121e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman#else 122e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman#define PHYSICAL_OFFSET 0 123e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman#endif 124e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman 125e66ac3f26aef131f5ca60350d25fba95f43acd0dSimon Horman/* 126d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * PAGE_OFFSET is the virtual address of the start of kernel address 127d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * space. 128d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy */ 129e7f93a355c7e32c26eab8910cf53b7506bb046c5Paul Mundt#define PAGE_OFFSET CONFIG_PAGE_OFFSET 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 131d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy/* 132d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * Virtual to physical RAM address translation. 133d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * 134d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * In 29 bit mode, the physical offset of RAM from address 0 is visible in 135d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * the kernel virtual address space, and thus we don't have to take 136d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * this into account when translating. However in 32 bit mode this offset 137d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * is not visible (it is part of the PMB mapping) and so needs to be 138d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * added or subtracted as required. 139d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy */ 1401d5cfcdff793e2f34ec61d902fa5ee0c7e4a2208Paul Mundt#ifdef CONFIG_PMB 1417c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#define ___pa(x) ((x)-PAGE_OFFSET+__MEMORY_START) 1427c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#define ___va(x) ((x)+PAGE_OFFSET-__MEMORY_START) 143d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy#else 1447c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#define ___pa(x) ((x)-PAGE_OFFSET) 1457c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#define ___va(x) ((x)+PAGE_OFFSET) 146d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy#endif 147d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy 1487c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#ifndef __ASSEMBLY__ 1497c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#define __pa(x) ___pa((unsigned long)x) 1507c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#define __va(x) (void *)___va((unsigned long)x) 1517c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming#endif /* !__ASSEMBLY__ */ 1527c4584d39a8a144c60adaf4cf998c3233b6683d9Matt Fleming 1539edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#ifdef CONFIG_UNCACHED_MAPPING 154dfd3b596fbbfa48b8e7966ef996d587157554b69Nobuhiro Iwamatsu#if defined(CONFIG_29BIT) 155dfd3b596fbbfa48b8e7966ef996d587157554b69Nobuhiro Iwamatsu#define UNCAC_ADDR(addr) P2SEGADDR(addr) 156dfd3b596fbbfa48b8e7966ef996d587157554b69Nobuhiro Iwamatsu#define CAC_ADDR(addr) P1SEGADDR(addr) 157dfd3b596fbbfa48b8e7966ef996d587157554b69Nobuhiro Iwamatsu#else 1589edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start) 1599edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET) 160dfd3b596fbbfa48b8e7966ef996d587157554b69Nobuhiro Iwamatsu#endif 1619edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#else 1629edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#define UNCAC_ADDR(addr) ((addr)) 1639edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#define CAC_ADDR(addr) ((addr)) 1649edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt#endif 1659edef28653a519bf0a48250f36cce96b1736ec4ePaul Mundt 166d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) 16701066625e9ae39742c92e21163f7f2a818e02762Paul Mundt#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 169d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy/* 170d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * PFN = physical frame number (ie PFN 0 == physical address 0) 171d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * PFN_START is the PFN of the first page of RAM. By defining this we 172d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * don't have struct page entries for the portion of address space 173d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy * between physical address 0 and the start of RAM. 174d02b08f6e8b184ffef349e395210a5e82ff4f4bcStuart Menefy */ 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PFN_START (__MEMORY_START >> PAGE_SHIFT) 17667bb2c692cc02e53c23e4debc92c3a79ddc52a8cAlexey Dobriyan#define ARCH_PFN_OFFSET (PFN_START) 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) 1785900711ad7173b1cf3ee72eb21572e20b263ca0dPaul Mundt#ifdef CONFIG_FLATMEM 17901066625e9ae39742c92e21163f7f2a818e02762Paul Mundt#define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_low_pfn) 1805900711ad7173b1cf3ee72eb21572e20b263ca0dPaul Mundt#endif 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 186104b8deaa5c0144cccfc7d914413ff80c7176af1KAMEZAWA Hiroyuki#include <asm-generic/memory_model.h> 1875b17e1cd8928ae65932758ce6478ac6d3e9a86b2Arnd Bergmann#include <asm-generic/getorder.h> 188fd4fd5aac1282825195c6816ed40a2a6d42db5bfStephen Rothwell 189cbd2d9d8fcd9d2a46d71d0703a76773c20383c66Paul Mundt/* 19066d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt * Some drivers need to perform DMA into kmalloc'ed buffers 19166d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt * and so we have to increase the kmalloc minalign for this. 192cbd2d9d8fcd9d2a46d71d0703a76773c20383c66Paul Mundt */ 193a6eb9fe105d5de0053b261148cee56c94b4720caFUJITA Tomonori#define ARCH_DMA_MINALIGN L1_CACHE_BYTES 19401fed9311ab8a724283b3f456c12e573cb51d92bPaul Mundt 19566d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt#ifdef CONFIG_SUPERH64 19601fed9311ab8a724283b3f456c12e573cb51d92bPaul Mundt/* 19766d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt * While BYTES_PER_WORD == 4 on the current sh64 ABI, GCC will still 19866d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt * happily generate {ld/st}.q pairs, requiring us to have 8-byte 19925985edcedea6396277003854657b5f3cb31a628Lucas De Marchi * alignment to avoid traps. The kmalloc alignment is guaranteed by 20066d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt * virtue of L1_CACHE_BYTES, requiring this to only be special cased 20166d485b45a5493f6a2ca067c6f472e7b2ca342c2Paul Mundt * for slab caches. 20201fed9311ab8a724283b3f456c12e573cb51d92bPaul Mundt */ 20301fed9311ab8a724283b3f456c12e573cb51d92bPaul Mundt#define ARCH_SLAB_MINALIGN 8 20401fed9311ab8a724283b3f456c12e573cb51d92bPaul Mundt#endif 205cbd2d9d8fcd9d2a46d71d0703a76773c20383c66Paul Mundt 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __ASM_SH_PAGE_H */ 207