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