^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * This file is provided under a dual BSD/GPLv2 license. When using or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * redistributing this file, you may do so under either license.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright(c) 2018 Intel Corporation. All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #ifndef __INCLUDE_SOUND_SOF_HEADER_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define __INCLUDE_SOUND_SOF_HEADER_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <uapi/sound/sof/abi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) /** \addtogroup sof_uapi uAPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * SOF uAPI specification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * @{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * IPC messages have a prefixed 32 bit identifier made up as follows :-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * 0xGCCCNNNN where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * G is global cmd type (4 bits)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * C is command type (12 bits)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * I is the ID number (16 bits) - monotonic and overflows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * This is sent at the start of the IPM message in the mailbox. Messages should
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) * not be sent in the doorbell (special exceptions for firmware .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) /* Global Message - Generic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define SOF_GLB_TYPE_SHIFT 28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define SOF_GLB_TYPE_MASK (0xf << SOF_GLB_TYPE_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define SOF_GLB_TYPE(x) ((x) << SOF_GLB_TYPE_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) /* Command Message - Generic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define SOF_CMD_TYPE_SHIFT 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #define SOF_CMD_TYPE_MASK (0xfff << SOF_CMD_TYPE_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define SOF_CMD_TYPE(x) ((x) << SOF_CMD_TYPE_SHIFT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* Global Message Types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define SOF_IPC_GLB_REPLY SOF_GLB_TYPE(0x1U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define SOF_IPC_GLB_COMPOUND SOF_GLB_TYPE(0x2U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define SOF_IPC_GLB_TPLG_MSG SOF_GLB_TYPE(0x3U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define SOF_IPC_GLB_PM_MSG SOF_GLB_TYPE(0x4U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define SOF_IPC_GLB_COMP_MSG SOF_GLB_TYPE(0x5U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define SOF_IPC_GLB_STREAM_MSG SOF_GLB_TYPE(0x6U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define SOF_IPC_FW_READY SOF_GLB_TYPE(0x7U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #define SOF_IPC_GLB_DAI_MSG SOF_GLB_TYPE(0x8U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define SOF_IPC_GLB_TRACE_MSG SOF_GLB_TYPE(0x9U)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define SOF_IPC_GLB_GDB_DEBUG SOF_GLB_TYPE(0xAU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define SOF_IPC_GLB_TEST_MSG SOF_GLB_TYPE(0xBU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define SOF_IPC_GLB_PROBE SOF_GLB_TYPE(0xCU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) * DSP Command Message Types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) /* topology */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define SOF_IPC_TPLG_COMP_NEW SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define SOF_IPC_TPLG_COMP_FREE SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define SOF_IPC_TPLG_COMP_CONNECT SOF_CMD_TYPE(0x003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define SOF_IPC_TPLG_PIPE_NEW SOF_CMD_TYPE(0x010)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define SOF_IPC_TPLG_PIPE_FREE SOF_CMD_TYPE(0x011)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define SOF_IPC_TPLG_PIPE_CONNECT SOF_CMD_TYPE(0x012)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define SOF_IPC_TPLG_PIPE_COMPLETE SOF_CMD_TYPE(0x013)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define SOF_IPC_TPLG_BUFFER_NEW SOF_CMD_TYPE(0x020)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define SOF_IPC_TPLG_BUFFER_FREE SOF_CMD_TYPE(0x021)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) /* PM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define SOF_IPC_PM_CTX_SAVE SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define SOF_IPC_PM_CTX_RESTORE SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define SOF_IPC_PM_CTX_SIZE SOF_CMD_TYPE(0x003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define SOF_IPC_PM_CLK_SET SOF_CMD_TYPE(0x004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define SOF_IPC_PM_CLK_GET SOF_CMD_TYPE(0x005)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #define SOF_IPC_PM_CLK_REQ SOF_CMD_TYPE(0x006)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define SOF_IPC_PM_CORE_ENABLE SOF_CMD_TYPE(0x007)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) #define SOF_IPC_PM_GATE SOF_CMD_TYPE(0x008)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) /* component runtime config - multiple different types */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #define SOF_IPC_COMP_SET_VALUE SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) #define SOF_IPC_COMP_GET_VALUE SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) #define SOF_IPC_COMP_SET_DATA SOF_CMD_TYPE(0x003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) #define SOF_IPC_COMP_GET_DATA SOF_CMD_TYPE(0x004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) #define SOF_IPC_COMP_NOTIFICATION SOF_CMD_TYPE(0x005)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) /* DAI messages */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) #define SOF_IPC_DAI_CONFIG SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define SOF_IPC_DAI_LOOPBACK SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /* stream */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #define SOF_IPC_STREAM_PCM_PARAMS SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #define SOF_IPC_STREAM_PCM_PARAMS_REPLY SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define SOF_IPC_STREAM_PCM_FREE SOF_CMD_TYPE(0x003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) #define SOF_IPC_STREAM_TRIG_START SOF_CMD_TYPE(0x004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) #define SOF_IPC_STREAM_TRIG_STOP SOF_CMD_TYPE(0x005)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) #define SOF_IPC_STREAM_TRIG_PAUSE SOF_CMD_TYPE(0x006)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) #define SOF_IPC_STREAM_TRIG_RELEASE SOF_CMD_TYPE(0x007)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define SOF_IPC_STREAM_TRIG_DRAIN SOF_CMD_TYPE(0x008)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define SOF_IPC_STREAM_TRIG_XRUN SOF_CMD_TYPE(0x009)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define SOF_IPC_STREAM_POSITION SOF_CMD_TYPE(0x00a)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define SOF_IPC_STREAM_VORBIS_PARAMS SOF_CMD_TYPE(0x010)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define SOF_IPC_STREAM_VORBIS_FREE SOF_CMD_TYPE(0x011)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) /* probe */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define SOF_IPC_PROBE_INIT SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define SOF_IPC_PROBE_DEINIT SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define SOF_IPC_PROBE_DMA_ADD SOF_CMD_TYPE(0x003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define SOF_IPC_PROBE_DMA_INFO SOF_CMD_TYPE(0x004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define SOF_IPC_PROBE_DMA_REMOVE SOF_CMD_TYPE(0x005)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define SOF_IPC_PROBE_POINT_ADD SOF_CMD_TYPE(0x006)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define SOF_IPC_PROBE_POINT_INFO SOF_CMD_TYPE(0x007)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define SOF_IPC_PROBE_POINT_REMOVE SOF_CMD_TYPE(0x008)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) /* trace */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define SOF_IPC_TRACE_DMA_PARAMS SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define SOF_IPC_TRACE_DMA_POSITION SOF_CMD_TYPE(0x002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define SOF_IPC_TRACE_DMA_PARAMS_EXT SOF_CMD_TYPE(0x003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) /* debug */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define SOF_IPC_TEST_IPC_FLOOD SOF_CMD_TYPE(0x001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) /* Get message component id */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define SOF_IPC_MESSAGE_ID(x) ((x) & 0xffff)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) /* maximum message size for mailbox Tx/Rx */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) #define SOF_IPC_MSG_MAX_SIZE 384
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) * Structure Header - Header for all IPC structures except command structs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) * The size can be greater than the structure size and that means there is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) * extended bespoke data beyond the end of the structure including variable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) * arrays.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) struct sof_ipc_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) uint32_t size; /**< size of structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) * Command Header - Header for all IPC commands. Identifies IPC message.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) * The size can be greater than the structure size and that means there is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) * extended bespoke data beyond the end of the structure including variable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) * arrays.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) struct sof_ipc_cmd_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) uint32_t size; /**< size of structure */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) uint32_t cmd; /**< SOF_IPC_GLB_ + cmd */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) * Generic reply message. Some commands override this with their own reply
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) * types that must include this at start.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) struct sof_ipc_reply {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) struct sof_ipc_cmd_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) int32_t error; /**< negative error numbers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) * Compound commands - SOF_IPC_GLB_COMPOUND.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) * Compound commands are sent to the DSP as a single IPC operation. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) * commands are split into blocks and each block has a header. This header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) * identifies the command type and the number of commands before the next
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) * header.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) struct sof_ipc_compound_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) struct sof_ipc_cmd_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) uint32_t count; /**< count of 0 means end of compound sequence */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) * OOPS header architecture specific data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) struct sof_ipc_dsp_oops_arch_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) uint32_t arch; /* Identifier of architecture */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) uint32_t totalsize; /* Total size of oops message */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) * OOPS header platform specific data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) struct sof_ipc_dsp_oops_plat_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) uint32_t configidhi; /* ConfigID hi 32bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) uint32_t configidlo; /* ConfigID lo 32bits */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) uint32_t numaregs; /* Special regs num */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) uint32_t stackoffset; /* Offset to stack pointer from beginning of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) * oops message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) uint32_t stackptr; /* Stack ptr */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) } __packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) /** @}*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) #endif