firmware commands (as opposed to io commands) are sent to the firmware via the IOC_WBUF area in bus_space, and replies to it are read from the IOC_RBUF area. the freebsd and linux drivers define these areas to be 32 dwords in length, but it then goes and casts these spaces to a struct that has a 4 byte word at the start with the length of the message in it, followed by a 124 byte buffer which is filled with the actual message in it.
firmware commands (as opposed to io commands) are sent to the firmware via
the IOC_WBUF area in bus_space, and replies to it are read from the
IOC_RBUF area. the freebsd and linux drivers define these areas to be 32
dwords in length, but it then goes and casts these spaces to a struct that
has a 4 byte word at the start with the length of the message in it,
followed by a 124 byte buffer which is filled with the actual message in
it.

rather than screwing around with an extra struct and casts, we can define
this header as a register of its own, and the buffer as a separate region
in bus_space.

this simplifies command submission and the retrieval of the replies (which
is yet to be written properly).

orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars