master
  1/*
  2 * Copyright (c) 2007 Apple Inc. All rights reserved.
  3 *
  4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  5 *
  6 * This file contains Original Code and/or Modifications of Original Code
  7 * as defined in and that are subject to the Apple Public Source License
  8 * Version 2.0 (the 'License'). You may not use this file except in
  9 * compliance with the License. The rights granted to you under the License
 10 * may not be used to create, or enable the creation or redistribution of,
 11 * unlawful or unlicensed copies of an Apple operating system, or to
 12 * circumvent, violate, or enable the circumvention or violation of, any
 13 * terms of an Apple operating system software license agreement.
 14 *
 15 * Please obtain a copy of the License at
 16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
 17 *
 18 * The Original Code and all software distributed under the License are
 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 23 * Please see the License for the specific language governing rights and
 24 * limitations under the License.
 25 *
 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
 27 */
 28/*
 29 * FILE_ID: vm_param.h
 30 */
 31
 32/*
 33 *	ARM machine dependent virtual memory parameters.
 34 */
 35
 36#ifndef _MACH_ARM_VM_PARAM_H_
 37#define _MACH_ARM_VM_PARAM_H_
 38
 39#if defined (__arm__) || defined (__arm64__)
 40
 41
 42
 43#if !defined (KERNEL) && !defined (__ASSEMBLER__)
 44#include <mach/vm_page_size.h>
 45#endif
 46
 47#define BYTE_SIZE       8       /* byte size in bits */
 48
 49
 50#define PAGE_SHIFT                      vm_page_shift
 51#define PAGE_SIZE                       vm_page_size
 52#define PAGE_MASK                       vm_page_mask
 53
 54#define VM_PAGE_SIZE            vm_page_size
 55
 56#define machine_ptob(x)         ((x) << PAGE_SHIFT)
 57
 58
 59#define PAGE_MAX_SHIFT          14
 60#define PAGE_MAX_SIZE           (1 << PAGE_MAX_SHIFT)
 61#define PAGE_MAX_MASK           (PAGE_MAX_SIZE-1)
 62
 63#define PAGE_MIN_SHIFT          12
 64#define PAGE_MIN_SIZE           (1 << PAGE_MIN_SHIFT)
 65#define PAGE_MIN_MASK           (PAGE_MIN_SIZE-1)
 66
 67#define VM_MAX_PAGE_ADDRESS     MACH_VM_MAX_ADDRESS
 68
 69#ifndef __ASSEMBLER__
 70
 71
 72#if defined (__arm__)
 73
 74#define VM_MIN_ADDRESS          ((vm_address_t) 0x00000000)
 75#define VM_MAX_ADDRESS          ((vm_address_t) 0x80000000)
 76
 77/* system-wide values */
 78#define MACH_VM_MIN_ADDRESS     ((mach_vm_offset_t) 0)
 79#define MACH_VM_MAX_ADDRESS     ((mach_vm_offset_t) VM_MAX_ADDRESS)
 80
 81#elif defined (__arm64__)
 82
 83#define VM_MIN_ADDRESS          ((vm_address_t) 0x0000000000000000ULL)
 84#define VM_MAX_ADDRESS          ((vm_address_t) 0x00000000F0000000ULL)
 85
 86/* system-wide values */
 87#define MACH_VM_MIN_ADDRESS_RAW 0x0ULL
 88#define MACH_VM_MAX_ADDRESS_RAW 0x00007FFFFE000000ULL
 89
 90/*
 91 * `MACH_VM_MAX_ADDRESS` is exported to user space, but we don't want this
 92 * larger value for `MACH_VM_MAX_ADDRESS` to be exposed outside the kernel.
 93 */
 94
 95#define MACH_VM_MIN_ADDRESS     ((mach_vm_offset_t) MACH_VM_MIN_ADDRESS_RAW)
 96#define MACH_VM_MAX_ADDRESS     ((mach_vm_offset_t) MACH_VM_MAX_ADDRESS_RAW)
 97
 98#define MACH_VM_MIN_GPU_CARVEOUT_ADDRESS_RAW 0x0000001000000000ULL
 99#define MACH_VM_MAX_GPU_CARVEOUT_ADDRESS_RAW 0x0000007000000000ULL
100#define MACH_VM_MIN_GPU_CARVEOUT_ADDRESS     ((mach_vm_offset_t) MACH_VM_MIN_GPU_CARVEOUT_ADDRESS_RAW)
101#define MACH_VM_MAX_GPU_CARVEOUT_ADDRESS     ((mach_vm_offset_t) MACH_VM_MAX_GPU_CARVEOUT_ADDRESS_RAW)
102
103#else /* defined(__arm64__) */
104#error architecture not supported
105#endif
106
107#define VM_MAP_MIN_ADDRESS      VM_MIN_ADDRESS
108#define VM_MAP_MAX_ADDRESS      VM_MAX_ADDRESS
109
110
111#endif  /* !__ASSEMBLER__ */
112
113#define SWI_SYSCALL     0x80
114
115#endif /* defined (__arm__) || defined (__arm64__) */
116
117#endif  /* _MACH_ARM_VM_PARAM_H_ */