Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * Memory layout definitions for the Hexagon architecture
  4 *
  5 * Copyright (c) 2010-2013, The Linux Foundation. All rights reserved.
  6 */
  7
  8#ifndef _ASM_HEXAGON_MEM_LAYOUT_H
  9#define _ASM_HEXAGON_MEM_LAYOUT_H
 10
 11#include <linux/const.h>
 12
 13/*
 14 * Have to do this for ginormous numbers, else they get printed as
 15 * negative numbers, which the linker no likey when you try to
 16 * assign it to the location counter.
 17 */
 18
 19#define PAGE_OFFSET			_AC(0xc0000000, UL)
 20
 21/*
 22 * Compiling for a platform that needs a crazy physical offset
 23 * (like if the memory starts at 1GB and up) means we need
 24 * an actual PHYS_OFFSET.  Should be set up in head.S.
 25 */
 26
 27#ifdef CONFIG_HEXAGON_PHYS_OFFSET
 28#ifndef __ASSEMBLY__
 29extern unsigned long	__phys_offset;
 30#endif
 31#define PHYS_OFFSET	__phys_offset
 32#endif
 33
 34#ifndef PHYS_OFFSET
 35#define PHYS_OFFSET	0
 36#endif
 37
 38#define PHYS_PFN_OFFSET	(PHYS_OFFSET >> PAGE_SHIFT)
 39#define ARCH_PFN_OFFSET	PHYS_PFN_OFFSET
 40
 41#define TASK_SIZE			(PAGE_OFFSET)
 42
 43/*  not sure how these are used yet  */
 44#define STACK_TOP			TASK_SIZE
 45#define STACK_TOP_MAX			TASK_SIZE
 46
 47#ifndef __ASSEMBLY__
 48enum fixed_addresses {
 49	FIX_KMAP_BEGIN,
 50	FIX_KMAP_END,  /*  check for per-cpuism  */
 51	__end_of_fixed_addresses
 52};
 53
 54#define MIN_KERNEL_SEG (PAGE_OFFSET >> PGDIR_SHIFT)   /* L1 shift is 22 bits */
 55extern int max_kernel_seg;
 56
 57/*
 58 * Start of vmalloc virtual address space for kernel;
 59 * supposed to be based on the amount of physical memory available
 60 */
 61
 62#define VMALLOC_START ((unsigned long) __va(high_memory + VMALLOC_OFFSET))
 63
 64/* Gap between physical ram and vmalloc space for guard purposes. */
 65#define VMALLOC_OFFSET PAGE_SIZE
 66
 67/*
 68 * Create the space between VMALLOC_START and FIXADDR_TOP backwards
 69 * from the ... "top".
 70 *
 71 * Permanent IO mappings will live at 0xfexx_xxxx
 72 * Hypervisor occupies the last 16MB page at 0xffxxxxxx
 73 */
 74
 75#define FIXADDR_TOP     0xfe000000
 76#define FIXADDR_SIZE    (__end_of_fixed_addresses << PAGE_SHIFT)
 77#define FIXADDR_START   (FIXADDR_TOP - FIXADDR_SIZE)
 78
 79/*
 80 * "permanent kernel mappings", defined as long-lasting mappings of
 81 * high-memory page frames into the kernel address space.
 82 */
 83
 84#define LAST_PKMAP	PTRS_PER_PTE
 85#define LAST_PKMAP_MASK	(LAST_PKMAP - 1)
 86#define PKMAP_NR(virt)	((virt - PKMAP_BASE) >> PAGE_SHIFT)
 87#define PKMAP_ADDR(nr)	(PKMAP_BASE + ((nr) << PAGE_SHIFT))
 88
 89/*
 90 * To the "left" of the fixed map space is the kmap space
 91 *
 92 * "Permanent Kernel Mappings"; fancy (or less fancy) PTE table
 93 * that looks like it's actually walked.
 94 * Need to check the alignment/shift usage; some archs use
 95 * PMD_MASK on this value
 96 */
 97#define PKMAP_BASE (FIXADDR_START-PAGE_SIZE*LAST_PKMAP)
 98
 99/*
100 * 2 pages of guard gap between where vmalloc area ends
101 * and pkmap_base begins.
102 */
103#define VMALLOC_END (PKMAP_BASE-PAGE_SIZE*2)
104#endif /*  !__ASSEMBLY__  */
105
106
107#endif /* _ASM_HEXAGON_MEM_LAYOUT_H */