1  /* SPDX-License-Identifier: GPL-2.0-only */
2  /*
3   * AMD Memory Encryption Support
4   *
5   * Copyright (C) 2016 Advanced Micro Devices, Inc.
6   *
7   * Author: Tom Lendacky <thomas.lendacky@amd.com>
8   */
9  
10  #ifndef __MEM_ENCRYPT_H__
11  #define __MEM_ENCRYPT_H__
12  
13  #ifndef __ASSEMBLY__
14  
15  #ifdef CONFIG_ARCH_HAS_MEM_ENCRYPT
16  
17  #include <asm/mem_encrypt.h>
18  
19  #endif	/* CONFIG_ARCH_HAS_MEM_ENCRYPT */
20  
21  #ifdef CONFIG_AMD_MEM_ENCRYPT
22  /*
23   * The __sme_set() and __sme_clr() macros are useful for adding or removing
24   * the encryption mask from a value (e.g. when dealing with pagetable
25   * entries).
26   */
27  #define __sme_set(x)		((x) | sme_me_mask)
28  #define __sme_clr(x)		((x) & ~sme_me_mask)
29  #else
30  #define __sme_set(x)		(x)
31  #define __sme_clr(x)		(x)
32  #endif
33  
34  #endif	/* __ASSEMBLY__ */
35  
36  #endif	/* __MEM_ENCRYPT_H__ */
37