diff --git a/usr.sbin/bhyve/basl.h b/usr.sbin/bhyve/basl.h --- a/usr.sbin/bhyve/basl.h +++ b/usr.sbin/bhyve/basl.h @@ -40,6 +40,9 @@ struct basl_table; +void basl_fill_gas(ACPI_GENERIC_ADDRESS *gas, uint8_t space_id, + uint8_t bit_width, uint8_t bit_offset, uint8_t access_width, + uint64_t address); int basl_finish(void); int basl_init(void); int basl_table_add_checksum(struct basl_table *const table, const uint32_t off, diff --git a/usr.sbin/bhyve/basl.c b/usr.sbin/bhyve/basl.c --- a/usr.sbin/bhyve/basl.c +++ b/usr.sbin/bhyve/basl.c @@ -121,6 +121,20 @@ return (0); } +void +basl_fill_gas(ACPI_GENERIC_ADDRESS *const gas, const uint8_t space_id, + const uint8_t bit_width, const uint8_t bit_offset, + const uint8_t access_width, const uint64_t address) +{ + assert(gas != NULL); + + gas->SpaceId = space_id; + gas->BitWidth = bit_width; + gas->BitOffset = bit_offset; + gas->AccessWidth = access_width; + gas->Address = htole64(address); +} + static int basl_finish_install_guest_tables(struct basl_table *const table) {