/* | |
* Copyright 2017, Data61, CSIRO (ABN 41 687 119 230) | |
* | |
* SPDX-License-Identifier: BSD-2-Clause | |
*/ | |
#pragma once | |
/* macros for forcing the compiler to leave in statments it would | |
* normally optimize away */ | |
#include <utils/attribute.h> | |
#include <utils/stringify.h> | |
/* Macro for doing dummy reads | |
* | |
* Forces a memory read access to the given address. | |
*/ | |
#define FORCE_READ(address) \ | |
do { \ | |
typeof(*(address)) *_ptr = (address); \ | |
asm volatile ("" : "=m"(*_ptr) : "r"(*_ptr)); \ | |
} while (0) |