Commit 5386e735 authored by Chris Metcalf's avatar Chris Metcalf

arch/tile: kernel-related cleanups from removing static page size

User space code has been able to discover the static page size
by including a special <hv/pagesize.h> file.  In the current release,
that file is now gone, and <asm/page.h> doesn't rely on it.  The
getpagesize() API is now the only way for userspace to get the page size.
Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
parent 28d71741
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
/** /**
* @file * @file
* *
* Support for invalidating bytes in the instruction * Support for invalidating bytes in the instruction cache.
*/ */
#ifndef __ARCH_ICACHE_H__ #ifndef __ARCH_ICACHE_H__
...@@ -30,11 +30,10 @@ ...@@ -30,11 +30,10 @@
* *
* @param addr The start of memory to be invalidated. * @param addr The start of memory to be invalidated.
* @param size The number of bytes to be invalidated. * @param size The number of bytes to be invalidated.
* @param page_size The system's page size, typically the PAGE_SIZE constant * @param page_size The system's page size, e.g. getpagesize() in userspace.
* in sys/page.h. This value must be a power of two no larger * This value must be a power of two no larger than the page containing
* than the page containing the code to be invalidated. If the value * the code to be invalidated. If the value is smaller than the actual page
* is smaller than the actual page size, this function will still * size, this function will still work, but may run slower than necessary.
* work, but may run slower than necessary.
*/ */
static __inline void static __inline void
invalidate_icache(const void* addr, unsigned long size, invalidate_icache(const void* addr, unsigned long size,
......
...@@ -16,7 +16,8 @@ ...@@ -16,7 +16,8 @@
#define _ASM_TILE_PAGE_H #define _ASM_TILE_PAGE_H
#include <linux/const.h> #include <linux/const.h>
#include <hv/pagesize.h> #include <hv/hypervisor.h>
#include <arch/chip.h>
/* PAGE_SHIFT and HPAGE_SHIFT determine the page sizes. */ /* PAGE_SHIFT and HPAGE_SHIFT determine the page sizes. */
#define PAGE_SHIFT HV_LOG2_PAGE_SIZE_SMALL #define PAGE_SHIFT HV_LOG2_PAGE_SIZE_SMALL
...@@ -28,8 +29,6 @@ ...@@ -28,8 +29,6 @@
#define PAGE_MASK (~(PAGE_SIZE - 1)) #define PAGE_MASK (~(PAGE_SIZE - 1))
#define HPAGE_MASK (~(HPAGE_SIZE - 1)) #define HPAGE_MASK (~(HPAGE_SIZE - 1))
#ifdef __KERNEL__
/* /*
* If the Kconfig doesn't specify, set a maximum zone order that * If the Kconfig doesn't specify, set a maximum zone order that
* is enough so that we can create huge pages from small pages given * is enough so that we can create huge pages from small pages given
...@@ -39,9 +38,6 @@ ...@@ -39,9 +38,6 @@
#define CONFIG_FORCE_MAX_ZONEORDER (HPAGE_SHIFT - PAGE_SHIFT + 1) #define CONFIG_FORCE_MAX_ZONEORDER (HPAGE_SHIFT - PAGE_SHIFT + 1)
#endif #endif
#include <hv/hypervisor.h>
#include <arch/chip.h>
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <linux/types.h> #include <linux/types.h>
...@@ -337,6 +333,4 @@ extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr); ...@@ -337,6 +333,4 @@ extern pte_t *virt_to_pte(struct mm_struct *mm, unsigned long addr);
#include <asm-generic/memory_model.h> #include <asm-generic/memory_model.h>
#endif /* __KERNEL__ */
#endif /* _ASM_TILE_PAGE_H */ #endif /* _ASM_TILE_PAGE_H */
...@@ -22,8 +22,6 @@ ...@@ -22,8 +22,6 @@
#include <arch/chip.h> #include <arch/chip.h>
#include <hv/pagesize.h>
/* Linux builds want unsigned long constants, but assembler wants numbers */ /* Linux builds want unsigned long constants, but assembler wants numbers */
#ifdef __ASSEMBLER__ #ifdef __ASSEMBLER__
/** One, for assembler */ /** One, for assembler */
...@@ -44,11 +42,21 @@ ...@@ -44,11 +42,21 @@
*/ */
#define HV_L1_SPAN (__HV_SIZE_ONE << HV_LOG2_L1_SPAN) #define HV_L1_SPAN (__HV_SIZE_ONE << HV_LOG2_L1_SPAN)
/** The log2 of the size of small pages, in bytes. This value should
* be verified at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_SMALL).
*/
#define HV_LOG2_PAGE_SIZE_SMALL 16
/** The size of small pages, in bytes. This value should be verified /** The size of small pages, in bytes. This value should be verified
* at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_SMALL). * at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_SMALL).
*/ */
#define HV_PAGE_SIZE_SMALL (__HV_SIZE_ONE << HV_LOG2_PAGE_SIZE_SMALL) #define HV_PAGE_SIZE_SMALL (__HV_SIZE_ONE << HV_LOG2_PAGE_SIZE_SMALL)
/** The log2 of the size of large pages, in bytes. This value should be
* verified at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_LARGE).
*/
#define HV_LOG2_PAGE_SIZE_LARGE 24
/** The size of large pages, in bytes. This value should be verified /** The size of large pages, in bytes. This value should be verified
* at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_LARGE). * at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_LARGE).
*/ */
......
/*
* Copyright 2010 Tilera Corporation. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, version 2.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
* NON INFRINGEMENT. See the GNU General Public License for
* more details.
*/
/**
* @file pagesize.h
*/
#ifndef _HV_PAGESIZE_H
#define _HV_PAGESIZE_H
/** The log2 of the size of small pages, in bytes. This value should
* be verified at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_SMALL).
*/
#define HV_LOG2_PAGE_SIZE_SMALL 16
/** The log2 of the size of large pages, in bytes. This value should be
* verified at runtime by calling hv_sysconf(HV_SYSCONF_PAGE_SIZE_LARGE).
*/
#define HV_LOG2_PAGE_SIZE_LARGE 24
#endif /* _HV_PAGESIZE_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment