asan_mapping_myriad.h revision 353358
11590Srgrimes//===-- asan_mapping_myriad.h -----------------------------------*- C++ -*-===//
21590Srgrimes//
31590Srgrimes// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
41590Srgrimes// See https://llvm.org/LICENSE.txt for license information.
51590Srgrimes// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
61590Srgrimes//
71590Srgrimes//===----------------------------------------------------------------------===//
81590Srgrimes//
91590Srgrimes// This file is a part of AddressSanitizer, an address sanity checker.
101590Srgrimes//
111590Srgrimes// Myriad-specific definitions for ASan memory mapping.
121590Srgrimes//===----------------------------------------------------------------------===//
131590Srgrimes#ifndef ASAN_MAPPING_MYRIAD_H
141590Srgrimes#define ASAN_MAPPING_MYRIAD_H
151590Srgrimes
161590Srgrimes#define RAW_ADDR(mem) ((mem) & ~kMyriadCacheBitMask32)
171590Srgrimes#define MEM_TO_SHADOW(mem) \
181590Srgrimes  (((RAW_ADDR(mem) - kLowMemBeg) >> SHADOW_SCALE) + (SHADOW_OFFSET))
191590Srgrimes
201590Srgrimes#define kLowMemBeg     kMyriadMemoryOffset32
211590Srgrimes#define kLowMemEnd     (SHADOW_OFFSET - 1)
221590Srgrimes
231590Srgrimes#define kLowShadowBeg  SHADOW_OFFSET
241590Srgrimes#define kLowShadowEnd  MEM_TO_SHADOW(kLowMemEnd)
251590Srgrimes
261590Srgrimes#define kHighMemBeg    0
271590Srgrimes
281590Srgrimes#define kHighShadowBeg 0
291590Srgrimes#define kHighShadowEnd 0
301590Srgrimes
3141568Sarchie#define kMidShadowBeg  0
321590Srgrimes#define kMidShadowEnd  0
331590Srgrimes
3487258Smarkm#define kShadowGapBeg  (kLowShadowEnd + 1)
351590Srgrimes#define kShadowGapEnd  kMyriadMemoryEnd32
3687628Sdwmalone
371590Srgrimes#define kShadowGap2Beg 0
3887628Sdwmalone#define kShadowGap2End 0
3954110Skris
4087628Sdwmalone#define kShadowGap3Beg 0
411590Srgrimes#define kShadowGap3End 0
4287628Sdwmalone
4387628Sdwmalonenamespace __asan {
4487628Sdwmalone
451590Srgrimesstatic inline bool AddrIsInLowMem(uptr a) {
461590Srgrimes  PROFILE_ASAN_MAPPING();
471590Srgrimes  a = RAW_ADDR(a);
481590Srgrimes  return a >= kLowMemBeg && a <= kLowMemEnd;
491590Srgrimes}
501590Srgrimes
511590Srgrimesstatic inline bool AddrIsInLowShadow(uptr a) {
521590Srgrimes  PROFILE_ASAN_MAPPING();
531590Srgrimes  a = RAW_ADDR(a);
541590Srgrimes  return a >= kLowShadowBeg && a <= kLowShadowEnd;
551590Srgrimes}
561590Srgrimes
571590Srgrimesstatic inline bool AddrIsInMidMem(uptr a) {
581590Srgrimes  PROFILE_ASAN_MAPPING();
591590Srgrimes  return false;
601590Srgrimes}
611590Srgrimes
62227152Sedstatic inline bool AddrIsInMidShadow(uptr a) {
631590Srgrimes  PROFILE_ASAN_MAPPING();
641590Srgrimes  return false;
651590Srgrimes}
661590Srgrimes
671590Srgrimesstatic inline bool AddrIsInHighMem(uptr a) {
681590Srgrimes  PROFILE_ASAN_MAPPING();
691590Srgrimes  return false;
701590Srgrimes}
711590Srgrimes
721590Srgrimesstatic inline bool AddrIsInHighShadow(uptr a) {
731590Srgrimes  PROFILE_ASAN_MAPPING();
741590Srgrimes  return false;
751590Srgrimes}
761590Srgrimes
771590Srgrimesstatic inline bool AddrIsInShadowGap(uptr a) {
781590Srgrimes  PROFILE_ASAN_MAPPING();
791590Srgrimes  a = RAW_ADDR(a);
801590Srgrimes  return a >= kShadowGapBeg && a <= kShadowGapEnd;
811590Srgrimes}
821590Srgrimes
831590Srgrimes}  // namespace __asan
841590Srgrimes
851590Srgrimes#endif  // ASAN_MAPPING_MYRIAD_H
861590Srgrimes