162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
262306a36Sopenharmony_ci/******************************************************************************
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Name: acmacros.h - C macros for the entire subsystem.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2000 - 2023, Intel Corp.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci *****************************************************************************/
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef __ACMACROS_H__
1162306a36Sopenharmony_ci#define __ACMACROS_H__
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/*
1462306a36Sopenharmony_ci * Extract data using a pointer. Any more than a byte and we
1562306a36Sopenharmony_ci * get into potential alignment issues -- see the STORE macros below.
1662306a36Sopenharmony_ci * Use with care.
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_ci#define ACPI_CAST8(ptr)                 ACPI_CAST_PTR (u8, (ptr))
1962306a36Sopenharmony_ci#define ACPI_CAST16(ptr)                ACPI_CAST_PTR (u16, (ptr))
2062306a36Sopenharmony_ci#define ACPI_CAST32(ptr)                ACPI_CAST_PTR (u32, (ptr))
2162306a36Sopenharmony_ci#define ACPI_CAST64(ptr)                ACPI_CAST_PTR (u64, (ptr))
2262306a36Sopenharmony_ci#define ACPI_GET8(ptr)                  (*ACPI_CAST8 (ptr))
2362306a36Sopenharmony_ci#define ACPI_GET16(ptr)                 (*ACPI_CAST16 (ptr))
2462306a36Sopenharmony_ci#define ACPI_GET32(ptr)                 (*ACPI_CAST32 (ptr))
2562306a36Sopenharmony_ci#define ACPI_GET64(ptr)                 (*ACPI_CAST64 (ptr))
2662306a36Sopenharmony_ci#define ACPI_SET8(ptr, val)             (*ACPI_CAST8 (ptr) = (u8) (val))
2762306a36Sopenharmony_ci#define ACPI_SET16(ptr, val)            (*ACPI_CAST16 (ptr) = (u16) (val))
2862306a36Sopenharmony_ci#define ACPI_SET32(ptr, val)            (*ACPI_CAST32 (ptr) = (u32) (val))
2962306a36Sopenharmony_ci#define ACPI_SET64(ptr, val)            (*ACPI_CAST64 (ptr) = (u64) (val))
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/*
3262306a36Sopenharmony_ci * printf() format helper. This macro is a workaround for the difficulties
3362306a36Sopenharmony_ci * with emitting 64-bit integers and 64-bit pointers with the same code
3462306a36Sopenharmony_ci * for both 32-bit and 64-bit hosts.
3562306a36Sopenharmony_ci */
3662306a36Sopenharmony_ci#define ACPI_FORMAT_UINT64(i)           ACPI_HIDWORD(i), ACPI_LODWORD(i)
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci/*
3962306a36Sopenharmony_ci * Macros for moving data around to/from buffers that are possibly unaligned.
4062306a36Sopenharmony_ci * If the hardware supports the transfer of unaligned data, just do the store.
4162306a36Sopenharmony_ci * Otherwise, we have to move one byte at a time.
4262306a36Sopenharmony_ci */
4362306a36Sopenharmony_ci#ifdef ACPI_BIG_ENDIAN
4462306a36Sopenharmony_ci/*
4562306a36Sopenharmony_ci * Macros for big-endian machines
4662306a36Sopenharmony_ci */
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci/* These macros reverse the bytes during the move, converting little-endian to big endian */
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	 /* Big Endian      <==        Little Endian */
5162306a36Sopenharmony_ci	 /*  Hi...Lo                     Lo...Hi     */
5262306a36Sopenharmony_ci/* 16-bit source, 16/32/64 destination */
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_16(d, s)        {((  u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[1];\
5562306a36Sopenharmony_ci			  ((  u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[0];}
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_32(d, s)        {(*(u32 *)(void *)(d))=0;\
5862306a36Sopenharmony_ci					  ((u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[1];\
5962306a36Sopenharmony_ci					  ((u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[0];}
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_64(d, s)        {(*(u64 *)(void *)(d))=0;\
6262306a36Sopenharmony_ci							   ((u8 *)(void *)(d))[6] = ((u8 *)(void *)(s))[1];\
6362306a36Sopenharmony_ci							   ((u8 *)(void *)(d))[7] = ((u8 *)(void *)(s))[0];}
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci/* 32-bit source, 16/32/64 destination */
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)	/* Truncate to 16 */
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_32(d, s)        {((  u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[3];\
7062306a36Sopenharmony_ci									  ((  u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[2];\
7162306a36Sopenharmony_ci									  ((  u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[1];\
7262306a36Sopenharmony_ci									  ((  u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[0];}
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_64(d, s)        {(*(u64 *)(void *)(d))=0;\
7562306a36Sopenharmony_ci										   ((u8 *)(void *)(d))[4] = ((u8 *)(void *)(s))[3];\
7662306a36Sopenharmony_ci										   ((u8 *)(void *)(d))[5] = ((u8 *)(void *)(s))[2];\
7762306a36Sopenharmony_ci										   ((u8 *)(void *)(d))[6] = ((u8 *)(void *)(s))[1];\
7862306a36Sopenharmony_ci										   ((u8 *)(void *)(d))[7] = ((u8 *)(void *)(s))[0];}
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci/* 64-bit source, 16/32/64 destination */
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)	/* Truncate to 16 */
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_32(d, s)        ACPI_MOVE_32_TO_32(d, s)	/* Truncate to 32 */
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_64(d, s)        {((  u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[7];\
8762306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[6];\
8862306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[5];\
8962306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[4];\
9062306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[4] = ((u8 *)(void *)(s))[3];\
9162306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[5] = ((u8 *)(void *)(s))[2];\
9262306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[6] = ((u8 *)(void *)(s))[1];\
9362306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[7] = ((u8 *)(void *)(s))[0];}
9462306a36Sopenharmony_ci#else
9562306a36Sopenharmony_ci/*
9662306a36Sopenharmony_ci * Macros for little-endian machines
9762306a36Sopenharmony_ci */
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci#ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci/* The hardware supports unaligned transfers, just do the little-endian move */
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci/* 16-bit source, 16/32/64 destination */
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_16(d, s)        *(u16 *)(void *)(d) = *(u16 *)(void *)(s)
10662306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_32(d, s)        *(u32 *)(void *)(d) = *(u16 *)(void *)(s)
10762306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_64(d, s)        *(u64 *)(void *)(d) = *(u16 *)(void *)(s)
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci/* 32-bit source, 16/32/64 destination */
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)	/* Truncate to 16 */
11262306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_32(d, s)        *(u32 *)(void *)(d) = *(u32 *)(void *)(s)
11362306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_64(d, s)        *(u64 *)(void *)(d) = *(u32 *)(void *)(s)
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci/* 64-bit source, 16/32/64 destination */
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)	/* Truncate to 16 */
11862306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_32(d, s)        ACPI_MOVE_32_TO_32(d, s)	/* Truncate to 32 */
11962306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_64(d, s)        *(u64 *)(void *)(d) = *(u64 *)(void *)(s)
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci#else
12262306a36Sopenharmony_ci/*
12362306a36Sopenharmony_ci * The hardware does not support unaligned transfers. We must move the
12462306a36Sopenharmony_ci * data one byte at a time. These macros work whether the source or
12562306a36Sopenharmony_ci * the destination (or both) is/are unaligned. (Little-endian move)
12662306a36Sopenharmony_ci */
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci/* 16-bit source, 16/32/64 destination */
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_16(d, s)        {((  u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\
13162306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];}
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_32(d, s)        {(*(u32 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s);}
13462306a36Sopenharmony_ci#define ACPI_MOVE_16_TO_64(d, s)        {(*(u64 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s);}
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci/* 32-bit source, 16/32/64 destination */
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)	/* Truncate to 16 */
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_32(d, s)        {((  u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\
14162306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];\
14262306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[2];\
14362306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[3];}
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci#define ACPI_MOVE_32_TO_64(d, s)        {(*(u64 *)(void *)(d)) = 0; ACPI_MOVE_32_TO_32(d, s);}
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci/* 64-bit source, 16/32/64 destination */
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)	/* Truncate to 16 */
15062306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_32(d, s)        ACPI_MOVE_32_TO_32(d, s)	/* Truncate to 32 */
15162306a36Sopenharmony_ci#define ACPI_MOVE_64_TO_64(d, s)        {((  u8 *)(void *)(d))[0] = ((u8 *)(void *)(s))[0];\
15262306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[1] = ((u8 *)(void *)(s))[1];\
15362306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[2] = ((u8 *)(void *)(s))[2];\
15462306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[3] = ((u8 *)(void *)(s))[3];\
15562306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[4] = ((u8 *)(void *)(s))[4];\
15662306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[5] = ((u8 *)(void *)(s))[5];\
15762306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[6] = ((u8 *)(void *)(s))[6];\
15862306a36Sopenharmony_ci										 ((  u8 *)(void *)(d))[7] = ((u8 *)(void *)(s))[7];}
15962306a36Sopenharmony_ci#endif
16062306a36Sopenharmony_ci#endif
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci/*
16362306a36Sopenharmony_ci * Fast power-of-two math macros for non-optimized compilers
16462306a36Sopenharmony_ci */
16562306a36Sopenharmony_ci#define _ACPI_DIV(value, power_of2)     ((u32) ((value) >> (power_of2)))
16662306a36Sopenharmony_ci#define _ACPI_MUL(value, power_of2)     ((u32) ((value) << (power_of2)))
16762306a36Sopenharmony_ci#define _ACPI_MOD(value, divisor)       ((u32) ((value) & ((divisor) -1)))
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci#define ACPI_DIV_2(a)                   _ACPI_DIV(a, 1)
17062306a36Sopenharmony_ci#define ACPI_MUL_2(a)                   _ACPI_MUL(a, 1)
17162306a36Sopenharmony_ci#define ACPI_MOD_2(a)                   _ACPI_MOD(a, 2)
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci#define ACPI_DIV_4(a)                   _ACPI_DIV(a, 2)
17462306a36Sopenharmony_ci#define ACPI_MUL_4(a)                   _ACPI_MUL(a, 2)
17562306a36Sopenharmony_ci#define ACPI_MOD_4(a)                   _ACPI_MOD(a, 4)
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci#define ACPI_DIV_8(a)                   _ACPI_DIV(a, 3)
17862306a36Sopenharmony_ci#define ACPI_MUL_8(a)                   _ACPI_MUL(a, 3)
17962306a36Sopenharmony_ci#define ACPI_MOD_8(a)                   _ACPI_MOD(a, 8)
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci#define ACPI_DIV_16(a)                  _ACPI_DIV(a, 4)
18262306a36Sopenharmony_ci#define ACPI_MUL_16(a)                  _ACPI_MUL(a, 4)
18362306a36Sopenharmony_ci#define ACPI_MOD_16(a)                  _ACPI_MOD(a, 16)
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci#define ACPI_DIV_32(a)                  _ACPI_DIV(a, 5)
18662306a36Sopenharmony_ci#define ACPI_MUL_32(a)                  _ACPI_MUL(a, 5)
18762306a36Sopenharmony_ci#define ACPI_MOD_32(a)                  _ACPI_MOD(a, 32)
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci/* Test for ASCII character */
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci#define ACPI_IS_ASCII(c)                ((c) < 0x80)
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci/* Signed integers */
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci#define ACPI_SIGN_POSITIVE              0
19662306a36Sopenharmony_ci#define ACPI_SIGN_NEGATIVE              1
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci/*
19962306a36Sopenharmony_ci * Rounding macros (Power of two boundaries only)
20062306a36Sopenharmony_ci */
20162306a36Sopenharmony_ci#define ACPI_ROUND_DOWN(value, boundary)    (((acpi_size)(value)) & \
20262306a36Sopenharmony_ci												(~(((acpi_size) boundary)-1)))
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci#define ACPI_ROUND_UP(value, boundary)      ((((acpi_size)(value)) + \
20562306a36Sopenharmony_ci												(((acpi_size) boundary)-1)) & \
20662306a36Sopenharmony_ci												(~(((acpi_size) boundary)-1)))
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci/* Note: sizeof(acpi_size) evaluates to either 4 or 8 (32- vs 64-bit mode) */
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci#define ACPI_ROUND_DOWN_TO_32BIT(a)         ACPI_ROUND_DOWN(a, 4)
21162306a36Sopenharmony_ci#define ACPI_ROUND_DOWN_TO_64BIT(a)         ACPI_ROUND_DOWN(a, 8)
21262306a36Sopenharmony_ci#define ACPI_ROUND_DOWN_TO_NATIVE_WORD(a)   ACPI_ROUND_DOWN(a, sizeof(acpi_size))
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci#define ACPI_ROUND_UP_TO_32BIT(a)           ACPI_ROUND_UP(a, 4)
21562306a36Sopenharmony_ci#define ACPI_ROUND_UP_TO_64BIT(a)           ACPI_ROUND_UP(a, 8)
21662306a36Sopenharmony_ci#define ACPI_ROUND_UP_TO_NATIVE_WORD(a)     ACPI_ROUND_UP(a, sizeof(acpi_size))
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci#define ACPI_ROUND_BITS_UP_TO_BYTES(a)      ACPI_DIV_8((a) + 7)
21962306a36Sopenharmony_ci#define ACPI_ROUND_BITS_DOWN_TO_BYTES(a)    ACPI_DIV_8((a))
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ci#define ACPI_ROUND_UP_TO_1K(a)              (((a) + 1023) >> 10)
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci/* Generic (non-power-of-two) rounding */
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci#define ACPI_ROUND_UP_TO(value, boundary)   (((value) + ((boundary)-1)) / (boundary))
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci#define ACPI_IS_MISALIGNED(value)           (((acpi_size) value) & (sizeof(acpi_size)-1))
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci/* Generic bit manipulation */
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci#ifndef ACPI_USE_NATIVE_BIT_FINDER
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci#define __ACPI_FIND_LAST_BIT_2(a, r)        ((((u8)  (a)) & 0x02) ? (r)+1 : (r))
23462306a36Sopenharmony_ci#define __ACPI_FIND_LAST_BIT_4(a, r)        ((((u8)  (a)) & 0x0C) ? \
23562306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_2  ((a)>>2,  (r)+2) : \
23662306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_2  ((a), (r)))
23762306a36Sopenharmony_ci#define __ACPI_FIND_LAST_BIT_8(a, r)        ((((u8)  (a)) & 0xF0) ? \
23862306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_4  ((a)>>4,  (r)+4) : \
23962306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_4  ((a), (r)))
24062306a36Sopenharmony_ci#define __ACPI_FIND_LAST_BIT_16(a, r)       ((((u16) (a)) & 0xFF00) ? \
24162306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_8  ((a)>>8,  (r)+8) : \
24262306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_8  ((a), (r)))
24362306a36Sopenharmony_ci#define __ACPI_FIND_LAST_BIT_32(a, r)       ((((u32) (a)) & 0xFFFF0000) ? \
24462306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_16 ((a)>>16, (r)+16) : \
24562306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_16 ((a), (r)))
24662306a36Sopenharmony_ci#define __ACPI_FIND_LAST_BIT_64(a, r)       ((((u64) (a)) & 0xFFFFFFFF00000000) ? \
24762306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_32 ((a)>>32, (r)+32) : \
24862306a36Sopenharmony_ci											 __ACPI_FIND_LAST_BIT_32 ((a), (r)))
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci#define ACPI_FIND_LAST_BIT_8(a)             ((a) ? __ACPI_FIND_LAST_BIT_8 (a, 1) : 0)
25162306a36Sopenharmony_ci#define ACPI_FIND_LAST_BIT_16(a)            ((a) ? __ACPI_FIND_LAST_BIT_16 (a, 1) : 0)
25262306a36Sopenharmony_ci#define ACPI_FIND_LAST_BIT_32(a)            ((a) ? __ACPI_FIND_LAST_BIT_32 (a, 1) : 0)
25362306a36Sopenharmony_ci#define ACPI_FIND_LAST_BIT_64(a)            ((a) ? __ACPI_FIND_LAST_BIT_64 (a, 1) : 0)
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci#define __ACPI_FIND_FIRST_BIT_2(a, r)       ((((u8) (a)) & 0x01) ? (r) : (r)+1)
25662306a36Sopenharmony_ci#define __ACPI_FIND_FIRST_BIT_4(a, r)       ((((u8) (a)) & 0x03) ? \
25762306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_2  ((a), (r)) : \
25862306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_2  ((a)>>2, (r)+2))
25962306a36Sopenharmony_ci#define __ACPI_FIND_FIRST_BIT_8(a, r)       ((((u8) (a)) & 0x0F) ? \
26062306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_4  ((a), (r)) : \
26162306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_4  ((a)>>4, (r)+4))
26262306a36Sopenharmony_ci#define __ACPI_FIND_FIRST_BIT_16(a, r)      ((((u16) (a)) & 0x00FF) ? \
26362306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_8  ((a), (r)) : \
26462306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_8  ((a)>>8, (r)+8))
26562306a36Sopenharmony_ci#define __ACPI_FIND_FIRST_BIT_32(a, r)      ((((u32) (a)) & 0x0000FFFF) ? \
26662306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_16 ((a), (r)) : \
26762306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_16 ((a)>>16, (r)+16))
26862306a36Sopenharmony_ci#define __ACPI_FIND_FIRST_BIT_64(a, r)      ((((u64) (a)) & 0x00000000FFFFFFFF) ? \
26962306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_32 ((a), (r)) : \
27062306a36Sopenharmony_ci											 __ACPI_FIND_FIRST_BIT_32 ((a)>>32, (r)+32))
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci#define ACPI_FIND_FIRST_BIT_8(a)            ((a) ? __ACPI_FIND_FIRST_BIT_8 (a, 1) : 0)
27362306a36Sopenharmony_ci#define ACPI_FIND_FIRST_BIT_16(a)           ((a) ? __ACPI_FIND_FIRST_BIT_16 (a, 1) : 0)
27462306a36Sopenharmony_ci#define ACPI_FIND_FIRST_BIT_32(a)           ((a) ? __ACPI_FIND_FIRST_BIT_32 (a, 1) : 0)
27562306a36Sopenharmony_ci#define ACPI_FIND_FIRST_BIT_64(a)           ((a) ? __ACPI_FIND_FIRST_BIT_64 (a, 1) : 0)
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci#endif				/* ACPI_USE_NATIVE_BIT_FINDER */
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci/* Generic (power-of-two) rounding */
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ci#define ACPI_ROUND_UP_POWER_OF_TWO_8(a)     ((u8) \
28262306a36Sopenharmony_ci											(((u16) 1) <<  ACPI_FIND_LAST_BIT_8  ((a)  - 1)))
28362306a36Sopenharmony_ci#define ACPI_ROUND_DOWN_POWER_OF_TWO_8(a)   ((u8) \
28462306a36Sopenharmony_ci											(((u16) 1) << (ACPI_FIND_LAST_BIT_8  ((a)) - 1)))
28562306a36Sopenharmony_ci#define ACPI_ROUND_UP_POWER_OF_TWO_16(a)    ((u16) \
28662306a36Sopenharmony_ci											(((u32) 1) <<  ACPI_FIND_LAST_BIT_16 ((a)  - 1)))
28762306a36Sopenharmony_ci#define ACPI_ROUND_DOWN_POWER_OF_TWO_16(a)  ((u16) \
28862306a36Sopenharmony_ci											(((u32) 1) << (ACPI_FIND_LAST_BIT_16 ((a)) - 1)))
28962306a36Sopenharmony_ci#define ACPI_ROUND_UP_POWER_OF_TWO_32(a)    ((u32) \
29062306a36Sopenharmony_ci											(((u64) 1) <<  ACPI_FIND_LAST_BIT_32 ((a)  - 1)))
29162306a36Sopenharmony_ci#define ACPI_ROUND_DOWN_POWER_OF_TWO_32(a)  ((u32) \
29262306a36Sopenharmony_ci											(((u64) 1) << (ACPI_FIND_LAST_BIT_32 ((a)) - 1)))
29362306a36Sopenharmony_ci#define ACPI_IS_ALIGNED(a, s)               (((a) & ((s) - 1)) == 0)
29462306a36Sopenharmony_ci#define ACPI_IS_POWER_OF_TWO(a)             ACPI_IS_ALIGNED(a, a)
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci/*
29762306a36Sopenharmony_ci * Bitmask creation
29862306a36Sopenharmony_ci * Bit positions start at zero.
29962306a36Sopenharmony_ci * MASK_BITS_ABOVE creates a mask starting AT the position and above
30062306a36Sopenharmony_ci * MASK_BITS_BELOW creates a mask starting one bit BELOW the position
30162306a36Sopenharmony_ci * MASK_BITS_ABOVE/BELOW accepts a bit offset to create a mask
30262306a36Sopenharmony_ci * MASK_BITS_ABOVE/BELOW_32/64 accepts a bit width to create a mask
30362306a36Sopenharmony_ci * Note: The ACPI_INTEGER_BIT_SIZE check is used to bypass compiler
30462306a36Sopenharmony_ci * differences with the shift operator
30562306a36Sopenharmony_ci */
30662306a36Sopenharmony_ci#define ACPI_MASK_BITS_ABOVE(position)      (~((ACPI_UINT64_MAX) << ((u32) (position))))
30762306a36Sopenharmony_ci#define ACPI_MASK_BITS_BELOW(position)      ((ACPI_UINT64_MAX) << ((u32) (position)))
30862306a36Sopenharmony_ci#define ACPI_MASK_BITS_ABOVE_32(width)      ((u32) ACPI_MASK_BITS_ABOVE(width))
30962306a36Sopenharmony_ci#define ACPI_MASK_BITS_BELOW_32(width)      ((u32) ACPI_MASK_BITS_BELOW(width))
31062306a36Sopenharmony_ci#define ACPI_MASK_BITS_ABOVE_64(width)      ((width) == ACPI_INTEGER_BIT_SIZE ? \
31162306a36Sopenharmony_ci												ACPI_UINT64_MAX : \
31262306a36Sopenharmony_ci												ACPI_MASK_BITS_ABOVE(width))
31362306a36Sopenharmony_ci#define ACPI_MASK_BITS_BELOW_64(width)      ((width) == ACPI_INTEGER_BIT_SIZE ? \
31462306a36Sopenharmony_ci												(u64) 0 : \
31562306a36Sopenharmony_ci												ACPI_MASK_BITS_BELOW(width))
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci/* Bitfields within ACPI registers */
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci#define ACPI_REGISTER_PREPARE_BITS(val, pos, mask) \
32062306a36Sopenharmony_ci	((val << pos) & mask)
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci#define ACPI_REGISTER_INSERT_VALUE(reg, pos, mask, val) \
32362306a36Sopenharmony_ci	reg = (reg & (~(mask))) | ACPI_REGISTER_PREPARE_BITS(val, pos, mask)
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci#define ACPI_INSERT_BITS(target, mask, source) \
32662306a36Sopenharmony_ci	target = ((target & (~(mask))) | (source & mask))
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci/* Generic bitfield macros and masks */
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci#define ACPI_GET_BITS(source_ptr, position, mask) \
33162306a36Sopenharmony_ci	((*(source_ptr) >> (position)) & (mask))
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_ci#define ACPI_SET_BITS(target_ptr, position, mask, value) \
33462306a36Sopenharmony_ci	(*(target_ptr) |= (((value) & (mask)) << (position)))
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ci#define ACPI_1BIT_MASK      0x00000001
33762306a36Sopenharmony_ci#define ACPI_2BIT_MASK      0x00000003
33862306a36Sopenharmony_ci#define ACPI_3BIT_MASK      0x00000007
33962306a36Sopenharmony_ci#define ACPI_4BIT_MASK      0x0000000F
34062306a36Sopenharmony_ci#define ACPI_5BIT_MASK      0x0000001F
34162306a36Sopenharmony_ci#define ACPI_6BIT_MASK      0x0000003F
34262306a36Sopenharmony_ci#define ACPI_7BIT_MASK      0x0000007F
34362306a36Sopenharmony_ci#define ACPI_8BIT_MASK      0x000000FF
34462306a36Sopenharmony_ci#define ACPI_16BIT_MASK     0x0000FFFF
34562306a36Sopenharmony_ci#define ACPI_24BIT_MASK     0x00FFFFFF
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ci/* Macros to extract flag bits from position zero */
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci#define ACPI_GET_1BIT_FLAG(value)                   ((value) & ACPI_1BIT_MASK)
35062306a36Sopenharmony_ci#define ACPI_GET_2BIT_FLAG(value)                   ((value) & ACPI_2BIT_MASK)
35162306a36Sopenharmony_ci#define ACPI_GET_3BIT_FLAG(value)                   ((value) & ACPI_3BIT_MASK)
35262306a36Sopenharmony_ci#define ACPI_GET_4BIT_FLAG(value)                   ((value) & ACPI_4BIT_MASK)
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci/* Macros to extract flag bits from position one and above */
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci#define ACPI_EXTRACT_1BIT_FLAG(field, position)     (ACPI_GET_1BIT_FLAG ((field) >> position))
35762306a36Sopenharmony_ci#define ACPI_EXTRACT_2BIT_FLAG(field, position)     (ACPI_GET_2BIT_FLAG ((field) >> position))
35862306a36Sopenharmony_ci#define ACPI_EXTRACT_3BIT_FLAG(field, position)     (ACPI_GET_3BIT_FLAG ((field) >> position))
35962306a36Sopenharmony_ci#define ACPI_EXTRACT_4BIT_FLAG(field, position)     (ACPI_GET_4BIT_FLAG ((field) >> position))
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci/* ACPI Pathname helpers */
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci#define ACPI_IS_ROOT_PREFIX(c)      ((c) == (u8) 0x5C)	/* Backslash */
36462306a36Sopenharmony_ci#define ACPI_IS_PARENT_PREFIX(c)    ((c) == (u8) 0x5E)	/* Carat */
36562306a36Sopenharmony_ci#define ACPI_IS_PATH_SEPARATOR(c)   ((c) == (u8) 0x2E)	/* Period (dot) */
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ci/*
36862306a36Sopenharmony_ci * An object of type struct acpi_namespace_node can appear in some contexts
36962306a36Sopenharmony_ci * where a pointer to an object of type union acpi_operand_object can also
37062306a36Sopenharmony_ci * appear. This macro is used to distinguish them.
37162306a36Sopenharmony_ci *
37262306a36Sopenharmony_ci * The "DescriptorType" field is the second field in both structures.
37362306a36Sopenharmony_ci */
37462306a36Sopenharmony_ci#define ACPI_GET_DESCRIPTOR_PTR(d)      (((union acpi_descriptor *)(void *)(d))->common.common_pointer)
37562306a36Sopenharmony_ci#define ACPI_SET_DESCRIPTOR_PTR(d, p)   (((union acpi_descriptor *)(void *)(d))->common.common_pointer = (p))
37662306a36Sopenharmony_ci#define ACPI_GET_DESCRIPTOR_TYPE(d)     (((union acpi_descriptor *)(void *)(d))->common.descriptor_type)
37762306a36Sopenharmony_ci#define ACPI_SET_DESCRIPTOR_TYPE(d, t)  (((union acpi_descriptor *)(void *)(d))->common.descriptor_type = (t))
37862306a36Sopenharmony_ci
37962306a36Sopenharmony_ci/*
38062306a36Sopenharmony_ci * Macros for the master AML opcode table
38162306a36Sopenharmony_ci */
38262306a36Sopenharmony_ci#if defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT)
38362306a36Sopenharmony_ci#define ACPI_OP(name, Pargs, Iargs, obj_type, class, type, flags) \
38462306a36Sopenharmony_ci	{name, (u32)(Pargs), (u32)(Iargs), (u32)(flags), obj_type, class, type}
38562306a36Sopenharmony_ci#else
38662306a36Sopenharmony_ci#define ACPI_OP(name, Pargs, Iargs, obj_type, class, type, flags) \
38762306a36Sopenharmony_ci	{(u32)(Pargs), (u32)(Iargs), (u32)(flags), obj_type, class, type}
38862306a36Sopenharmony_ci#endif
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci#define ARG_TYPE_WIDTH                  5
39162306a36Sopenharmony_ci#define ARG_1(x)                        ((u32)(x))
39262306a36Sopenharmony_ci#define ARG_2(x)                        ((u32)(x) << (1 * ARG_TYPE_WIDTH))
39362306a36Sopenharmony_ci#define ARG_3(x)                        ((u32)(x) << (2 * ARG_TYPE_WIDTH))
39462306a36Sopenharmony_ci#define ARG_4(x)                        ((u32)(x) << (3 * ARG_TYPE_WIDTH))
39562306a36Sopenharmony_ci#define ARG_5(x)                        ((u32)(x) << (4 * ARG_TYPE_WIDTH))
39662306a36Sopenharmony_ci#define ARG_6(x)                        ((u32)(x) << (5 * ARG_TYPE_WIDTH))
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci#define ARGI_LIST1(a)                   (ARG_1(a))
39962306a36Sopenharmony_ci#define ARGI_LIST2(a, b)                (ARG_1(b)|ARG_2(a))
40062306a36Sopenharmony_ci#define ARGI_LIST3(a, b, c)             (ARG_1(c)|ARG_2(b)|ARG_3(a))
40162306a36Sopenharmony_ci#define ARGI_LIST4(a, b, c, d)          (ARG_1(d)|ARG_2(c)|ARG_3(b)|ARG_4(a))
40262306a36Sopenharmony_ci#define ARGI_LIST5(a, b, c, d, e)       (ARG_1(e)|ARG_2(d)|ARG_3(c)|ARG_4(b)|ARG_5(a))
40362306a36Sopenharmony_ci#define ARGI_LIST6(a, b, c, d, e, f)    (ARG_1(f)|ARG_2(e)|ARG_3(d)|ARG_4(c)|ARG_5(b)|ARG_6(a))
40462306a36Sopenharmony_ci
40562306a36Sopenharmony_ci#define ARGP_LIST1(a)                   (ARG_1(a))
40662306a36Sopenharmony_ci#define ARGP_LIST2(a, b)                (ARG_1(a)|ARG_2(b))
40762306a36Sopenharmony_ci#define ARGP_LIST3(a, b, c)             (ARG_1(a)|ARG_2(b)|ARG_3(c))
40862306a36Sopenharmony_ci#define ARGP_LIST4(a, b, c, d)          (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d))
40962306a36Sopenharmony_ci#define ARGP_LIST5(a, b, c, d, e)       (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e))
41062306a36Sopenharmony_ci#define ARGP_LIST6(a, b, c, d, e, f)    (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)|ARG_6(f))
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ci#define GET_CURRENT_ARG_TYPE(list)      (list & ((u32) 0x1F))
41362306a36Sopenharmony_ci#define INCREMENT_ARG_LIST(list)        (list >>= ((u32) ARG_TYPE_WIDTH))
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_ci/*
41662306a36Sopenharmony_ci * Ascii error messages can be configured out
41762306a36Sopenharmony_ci */
41862306a36Sopenharmony_ci#ifndef ACPI_NO_ERROR_MESSAGES
41962306a36Sopenharmony_ci/*
42062306a36Sopenharmony_ci * Error reporting. The callers module and line number are inserted by AE_INFO,
42162306a36Sopenharmony_ci * the plist contains a set of parens to allow variable-length lists.
42262306a36Sopenharmony_ci * These macros are used for both the debug and non-debug versions of the code.
42362306a36Sopenharmony_ci */
42462306a36Sopenharmony_ci#define ACPI_ERROR_NAMESPACE(s, p, e)       acpi_ut_prefixed_namespace_error (AE_INFO, s, p, e);
42562306a36Sopenharmony_ci#define ACPI_ERROR_METHOD(s, n, p, e)       acpi_ut_method_error (AE_INFO, s, n, p, e);
42662306a36Sopenharmony_ci#define ACPI_WARN_PREDEFINED(plist)         acpi_ut_predefined_warning plist
42762306a36Sopenharmony_ci#define ACPI_INFO_PREDEFINED(plist)         acpi_ut_predefined_info plist
42862306a36Sopenharmony_ci#define ACPI_BIOS_ERROR_PREDEFINED(plist)   acpi_ut_predefined_bios_error plist
42962306a36Sopenharmony_ci#define ACPI_ERROR_ONLY(s)                  s
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_ci#else
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_ci/* No error messages */
43462306a36Sopenharmony_ci
43562306a36Sopenharmony_ci#define ACPI_ERROR_NAMESPACE(s, p, e)
43662306a36Sopenharmony_ci#define ACPI_ERROR_METHOD(s, n, p, e)
43762306a36Sopenharmony_ci#define ACPI_WARN_PREDEFINED(plist)
43862306a36Sopenharmony_ci#define ACPI_INFO_PREDEFINED(plist)
43962306a36Sopenharmony_ci#define ACPI_BIOS_ERROR_PREDEFINED(plist)
44062306a36Sopenharmony_ci#define ACPI_ERROR_ONLY(s)
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_ci#endif				/* ACPI_NO_ERROR_MESSAGES */
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ci#if (!ACPI_REDUCED_HARDWARE)
44562306a36Sopenharmony_ci#define ACPI_HW_OPTIONAL_FUNCTION(addr)     addr
44662306a36Sopenharmony_ci#else
44762306a36Sopenharmony_ci#define ACPI_HW_OPTIONAL_FUNCTION(addr)     NULL
44862306a36Sopenharmony_ci#endif
44962306a36Sopenharmony_ci
45062306a36Sopenharmony_ci/*
45162306a36Sopenharmony_ci * Macros used for ACPICA utilities only
45262306a36Sopenharmony_ci */
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ci/* Generate a UUID */
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci#define ACPI_INIT_UUID(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
45762306a36Sopenharmony_ci	(a) & 0xFF, ((a) >> 8) & 0xFF, ((a) >> 16) & 0xFF, ((a) >> 24) & 0xFF, \
45862306a36Sopenharmony_ci	(b) & 0xFF, ((b) >> 8) & 0xFF, \
45962306a36Sopenharmony_ci	(c) & 0xFF, ((c) >> 8) & 0xFF, \
46062306a36Sopenharmony_ci	(d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7)
46162306a36Sopenharmony_ci
46262306a36Sopenharmony_ci#define ACPI_IS_OCTAL_DIGIT(d)              (((char)(d) >= '0') && ((char)(d) <= '7'))
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ci/*
46562306a36Sopenharmony_ci * Macros used for the ASL-/ASL+ converter utility
46662306a36Sopenharmony_ci */
46762306a36Sopenharmony_ci#ifdef ACPI_ASL_COMPILER
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_ci#define ASL_CV_LABEL_FILENODE(a)         cv_label_file_node(a);
47062306a36Sopenharmony_ci#define ASL_CV_CAPTURE_COMMENTS_ONLY(a)   cv_capture_comments_only (a);
47162306a36Sopenharmony_ci#define ASL_CV_CAPTURE_COMMENTS(a)       cv_capture_comments (a);
47262306a36Sopenharmony_ci#define ASL_CV_TRANSFER_COMMENTS(a)      cv_transfer_comments (a);
47362306a36Sopenharmony_ci#define ASL_CV_CLOSE_PAREN(a,b)          cv_close_paren_write_comment(a,b);
47462306a36Sopenharmony_ci#define ASL_CV_CLOSE_BRACE(a,b)          cv_close_brace_write_comment(a,b);
47562306a36Sopenharmony_ci#define ASL_CV_SWITCH_FILES(a,b)         cv_switch_files(a,b);
47662306a36Sopenharmony_ci#define ASL_CV_CLEAR_OP_COMMENTS(a)       cv_clear_op_comments(a);
47762306a36Sopenharmony_ci#define ASL_CV_PRINT_ONE_COMMENT(a,b,c,d) cv_print_one_comment_type (a,b,c,d);
47862306a36Sopenharmony_ci#define ASL_CV_PRINT_ONE_COMMENT_LIST(a,b) cv_print_one_comment_list (a,b);
47962306a36Sopenharmony_ci#define ASL_CV_FILE_HAS_SWITCHED(a)       cv_file_has_switched(a)
48062306a36Sopenharmony_ci#define ASL_CV_INIT_FILETREE(a,b)      cv_init_file_tree(a,b);
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci#else
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ci#define ASL_CV_LABEL_FILENODE(a)
48562306a36Sopenharmony_ci#define ASL_CV_CAPTURE_COMMENTS_ONLY(a)
48662306a36Sopenharmony_ci#define ASL_CV_CAPTURE_COMMENTS(a)
48762306a36Sopenharmony_ci#define ASL_CV_TRANSFER_COMMENTS(a)
48862306a36Sopenharmony_ci#define ASL_CV_CLOSE_PAREN(a,b)          acpi_os_printf (")");
48962306a36Sopenharmony_ci#define ASL_CV_CLOSE_BRACE(a,b)          acpi_os_printf ("}");
49062306a36Sopenharmony_ci#define ASL_CV_SWITCH_FILES(a,b)
49162306a36Sopenharmony_ci#define ASL_CV_CLEAR_OP_COMMENTS(a)
49262306a36Sopenharmony_ci#define ASL_CV_PRINT_ONE_COMMENT(a,b,c,d)
49362306a36Sopenharmony_ci#define ASL_CV_PRINT_ONE_COMMENT_LIST(a,b)
49462306a36Sopenharmony_ci#define ASL_CV_FILE_HAS_SWITCHED(a)       0
49562306a36Sopenharmony_ci#define ASL_CV_INIT_FILETREE(a,b)
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ci#endif
49862306a36Sopenharmony_ci
49962306a36Sopenharmony_ci#endif				/* ACMACROS_H */
500