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: Chris Metcalf <cmetcalf@tilera.com>
This commit is contained in:
@@ -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 @@
|
|||||||
*
|
*
|
||||||
* @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 @@
|
|||||||
#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 @@
|
|||||||
#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 @@
|
|||||||
#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);
|
|||||||
|
|
||||||
#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 @@
|
|||||||
|
|
||||||
#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 @@
|
|||||||
*/
|
*/
|
||||||
#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).
|
||||||
*/
|
*/
|
||||||
|
@@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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 */
|
|
Reference in New Issue
Block a user