xref: /illumos-gate/usr/src/uts/common/sys/bitext.h (revision c6a8c446)
171815ce7SRobert Mustacchi /*
271815ce7SRobert Mustacchi  * This file and its contents are supplied under the terms of the
371815ce7SRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
471815ce7SRobert Mustacchi  * You may only use this file in accordance with the terms of version
571815ce7SRobert Mustacchi  * 1.0 of the CDDL.
671815ce7SRobert Mustacchi  *
771815ce7SRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
871815ce7SRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
971815ce7SRobert Mustacchi  * http://www.illumos.org/license/CDDL.
1071815ce7SRobert Mustacchi  */
1171815ce7SRobert Mustacchi 
1271815ce7SRobert Mustacchi /*
1371815ce7SRobert Mustacchi  * Copyright 2022 Oxide Computer Company
1471815ce7SRobert Mustacchi  */
1571815ce7SRobert Mustacchi 
1671815ce7SRobert Mustacchi #ifndef _SYS_BITEXT_H
1771815ce7SRobert Mustacchi #define	_SYS_BITEXT_H
1871815ce7SRobert Mustacchi 
19*c6a8c446SRichard Lowe #include <sys/types.h>
2071815ce7SRobert Mustacchi 
2171815ce7SRobert Mustacchi #ifdef __cplusplus
2271815ce7SRobert Mustacchi extern "C" {
2371815ce7SRobert Mustacchi #endif
2471815ce7SRobert Mustacchi 
2571815ce7SRobert Mustacchi /*
2671815ce7SRobert Mustacchi  * A bunch of routines to make working with bits and registers easier. This is
2771815ce7SRobert Mustacchi  * designed to be a replacement for the BITX macro and provide additional error
2871815ce7SRobert Mustacchi  * handling. See bitx64(9F), bitdel64(9F), and bitset64(9F) for more
2971815ce7SRobert Mustacchi  * information.
3071815ce7SRobert Mustacchi  */
3171815ce7SRobert Mustacchi 
3271815ce7SRobert Mustacchi extern uint8_t bitx8(uint8_t, uint_t, uint_t);
3371815ce7SRobert Mustacchi extern uint16_t bitx16(uint16_t, uint_t, uint_t);
3471815ce7SRobert Mustacchi extern uint32_t bitx32(uint32_t, uint_t, uint_t);
3571815ce7SRobert Mustacchi extern uint64_t bitx64(uint64_t, uint_t, uint_t);
3671815ce7SRobert Mustacchi 
3771815ce7SRobert Mustacchi extern uint8_t bitset8(uint8_t, uint_t, uint_t, uint8_t);
3871815ce7SRobert Mustacchi extern uint16_t bitset16(uint16_t, uint_t, uint_t, uint16_t);
3971815ce7SRobert Mustacchi extern uint32_t bitset32(uint32_t, uint_t, uint_t, uint32_t);
4071815ce7SRobert Mustacchi extern uint64_t bitset64(uint64_t, uint_t, uint_t, uint64_t);
4171815ce7SRobert Mustacchi 
4271815ce7SRobert Mustacchi extern uint64_t bitdel64(uint64_t, uint_t, uint_t);
4371815ce7SRobert Mustacchi 
4471815ce7SRobert Mustacchi #ifdef __cplusplus
4571815ce7SRobert Mustacchi }
4671815ce7SRobert Mustacchi #endif
4771815ce7SRobert Mustacchi 
4871815ce7SRobert Mustacchi #endif /* _SYS_BITEXT_H */
49