1 /* SPDX-License-Identifier: Intel */ 2 /* 3 * Copyright (C) 2013, Intel Corporation 4 * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com> 5 */ 6 7 #ifndef __FSP_TYPES_H__ 8 #define __FSP_TYPES_H__ 9 10 /** 11 * Returns a 16-bit signature built from 2 ASCII characters. 12 * 13 * This macro returns a 16-bit value built from the two ASCII characters 14 * specified by A and B. 15 * 16 * @A: The first ASCII character. 17 * @B: The second ASCII character. 18 * 19 * @return: A 16-bit value built from the two ASCII characters specified by 20 * A and B. 21 */ 22 #define SIGNATURE_16(A, B) ((A) | (B << 8)) 23 24 /** 25 * Returns a 32-bit signature built from 4 ASCII characters. 26 * 27 * This macro returns a 32-bit value built from the four ASCII characters 28 * specified by A, B, C, and D. 29 * 30 * @A: The first ASCII character. 31 * @B: The second ASCII character. 32 * @C: The third ASCII character. 33 * @D: The fourth ASCII character. 34 * 35 * @return: A 32-bit value built from the two ASCII characters specified by 36 * A, B, C and D. 37 */ 38 #define SIGNATURE_32(A, B, C, D) \ 39 (SIGNATURE_16(A, B) | (SIGNATURE_16(C, D) << 16)) 40 41 /** 42 * Returns a 64-bit signature built from 8 ASCII characters. 43 * 44 * This macro returns a 64-bit value built from the eight ASCII characters 45 * specified by A, B, C, D, E, F, G,and H. 46 * 47 * @A: The first ASCII character. 48 * @B: The second ASCII character. 49 * @C: The third ASCII character. 50 * @D: The fourth ASCII character. 51 * @E: The fifth ASCII character. 52 * @F: The sixth ASCII character. 53 * @G: The seventh ASCII character. 54 * @H: The eighth ASCII character. 55 * 56 * @return: A 64-bit value built from the two ASCII characters specified by 57 * A, B, C, D, E, F, G and H. 58 */ 59 #define SIGNATURE_64(A, B, C, D, E, F, G, H) \ 60 (SIGNATURE_32(A, B, C, D) | ((u64)(SIGNATURE_32(E, F, G, H)) << 32)) 61 62 #endif 63