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