mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-25 18:10:21 +08:00
chore[kmpp_obj]: Update flag calculation macro
Signed-off-by: Herman Chen <herman.chen@rock-chips.com> Change-Id: Ib8071bce985e6f5dc09580ca8d944118e5b05c63
This commit is contained in:
@@ -9,28 +9,28 @@
|
|||||||
#include "mpp_frame.h"
|
#include "mpp_frame.h"
|
||||||
|
|
||||||
#define KMPP_FRAME_ENTRY_TABLE(prefix, ENTRY, STRCT, EHOOK, SHOOK, ALIAS) \
|
#define KMPP_FRAME_ENTRY_TABLE(prefix, ENTRY, STRCT, EHOOK, SHOOK, ALIAS) \
|
||||||
ENTRY(prefix, u32, rk_u32, width, ELEM_FLAG_NONE, width) \
|
ENTRY(prefix, u32, rk_u32, width, FLAG_NONE, width) \
|
||||||
ENTRY(prefix, u32, rk_u32, height, ELEM_FLAG_NONE, height) \
|
ENTRY(prefix, u32, rk_u32, height, FLAG_NONE, height) \
|
||||||
ENTRY(prefix, u32, rk_u32, hor_stride, ELEM_FLAG_NONE, hor_stride) \
|
ENTRY(prefix, u32, rk_u32, hor_stride, FLAG_NONE, hor_stride) \
|
||||||
ENTRY(prefix, u32, rk_u32, ver_stride, ELEM_FLAG_NONE, ver_stride) \
|
ENTRY(prefix, u32, rk_u32, ver_stride, FLAG_NONE, ver_stride) \
|
||||||
ENTRY(prefix, u32, rk_u32, hor_stride_pixel, ELEM_FLAG_NONE, hor_stride_pixel) \
|
ENTRY(prefix, u32, rk_u32, hor_stride_pixel, FLAG_NONE, hor_stride_pixel) \
|
||||||
ENTRY(prefix, u32, rk_u32, offset_x, ELEM_FLAG_NONE, offset_x) \
|
ENTRY(prefix, u32, rk_u32, offset_x, FLAG_NONE, offset_x) \
|
||||||
ENTRY(prefix, u32, rk_u32, offset_y, ELEM_FLAG_NONE, offset_y) \
|
ENTRY(prefix, u32, rk_u32, offset_y, FLAG_NONE, offset_y) \
|
||||||
ENTRY(prefix, u32, rk_u32, poc, ELEM_FLAG_NONE, poc) \
|
ENTRY(prefix, u32, rk_u32, poc, FLAG_NONE, poc) \
|
||||||
ENTRY(prefix, s64, rk_s64, pts, ELEM_FLAG_NONE, pts) \
|
ENTRY(prefix, s64, rk_s64, pts, FLAG_NONE, pts) \
|
||||||
ENTRY(prefix, s64, rk_s64, dts, ELEM_FLAG_NONE, dts) \
|
ENTRY(prefix, s64, rk_s64, dts, FLAG_NONE, dts) \
|
||||||
ENTRY(prefix, u32, rk_u32, eos, ELEM_FLAG_NONE, eos) \
|
ENTRY(prefix, u32, rk_u32, eos, FLAG_NONE, eos) \
|
||||||
ENTRY(prefix, u32, rk_u32, color_range, ELEM_FLAG_NONE, color_range) \
|
ENTRY(prefix, u32, rk_u32, color_range, FLAG_NONE, color_range) \
|
||||||
ENTRY(prefix, u32, rk_u32, color_primaries, ELEM_FLAG_NONE, color_primaries) \
|
ENTRY(prefix, u32, rk_u32, color_primaries, FLAG_NONE, color_primaries) \
|
||||||
ENTRY(prefix, u32, rk_u32, color_trc, ELEM_FLAG_NONE, color_trc) \
|
ENTRY(prefix, u32, rk_u32, color_trc, FLAG_NONE, color_trc) \
|
||||||
ENTRY(prefix, u32, rk_u32, colorspace, ELEM_FLAG_NONE, colorspace) \
|
ENTRY(prefix, u32, rk_u32, colorspace, FLAG_NONE, colorspace) \
|
||||||
ENTRY(prefix, u32, rk_u32, chroma_location, ELEM_FLAG_NONE, chroma_location) \
|
ENTRY(prefix, u32, rk_u32, chroma_location, FLAG_NONE, chroma_location) \
|
||||||
ENTRY(prefix, u32, rk_u32, fmt, ELEM_FLAG_NONE, fmt) \
|
ENTRY(prefix, u32, rk_u32, fmt, FLAG_NONE, fmt) \
|
||||||
ENTRY(prefix, u32, rk_u32, buf_size, ELEM_FLAG_NONE, buf_size) \
|
ENTRY(prefix, u32, rk_u32, buf_size, FLAG_NONE, buf_size) \
|
||||||
ENTRY(prefix, u32, rk_u32, is_gray, ELEM_FLAG_NONE, is_gray) \
|
ENTRY(prefix, u32, rk_u32, is_gray, FLAG_NONE, is_gray) \
|
||||||
STRCT(prefix, shm, KmppShmPtr, meta, ELEM_FLAG_NONE, meta) \
|
STRCT(prefix, shm, KmppShmPtr, meta, FLAG_NONE, meta) \
|
||||||
STRCT(prefix, shm, KmppShmPtr, buffer, ELEM_FLAG_NONE, buffer) \
|
STRCT(prefix, shm, KmppShmPtr, buffer, FLAG_NONE, buffer) \
|
||||||
STRCT(prefix, st, MppFrameRational, sar, ELEM_FLAG_NONE, sar)
|
STRCT(prefix, st, MppFrameRational, sar, FLAG_NONE, sar)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
.tbl.elem_offset = ((size_t)&(((KMPP_OBJ_IMPL_TYPE *)0)->CONCAT_DOT(__VA_ARGS__))), \
|
.tbl.elem_offset = ((size_t)&(((KMPP_OBJ_IMPL_TYPE *)0)->CONCAT_DOT(__VA_ARGS__))), \
|
||||||
.tbl.elem_size = sizeof(((KMPP_OBJ_IMPL_TYPE *)0)->CONCAT_DOT(__VA_ARGS__)), \
|
.tbl.elem_size = sizeof(((KMPP_OBJ_IMPL_TYPE *)0)->CONCAT_DOT(__VA_ARGS__)), \
|
||||||
.tbl.elem_type = ELEM_TYPE_##ftype, \
|
.tbl.elem_type = ELEM_TYPE_##ftype, \
|
||||||
.tbl.flag_offset = FLAG_TYPE_TO_OFFSET(flag), \
|
.tbl.flag_offset = FLAG_TYPE_TO_OFFSET(name, flag, #flag), \
|
||||||
}; \
|
}; \
|
||||||
kmpp_objdef_add_entry(KMPP_OBJ_DEF(prefix), ENTRY_TO_NAME_START(name), &tbl); \
|
kmpp_objdef_add_entry(KMPP_OBJ_DEF(prefix), ENTRY_TO_NAME_START(name), &tbl); \
|
||||||
ENTRY_TO_NAME_END(name); \
|
ENTRY_TO_NAME_END(name); \
|
||||||
@@ -205,13 +205,10 @@
|
|||||||
#define ENTRY_TO_NAME_START(name, ...) TO_STR(name)
|
#define ENTRY_TO_NAME_START(name, ...) TO_STR(name)
|
||||||
#define ENTRY_TO_NAME_END(...)
|
#define ENTRY_TO_NAME_END(...)
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "mpp_debug.h"
|
|
||||||
#include "kmpp_obj.h"
|
|
||||||
|
|
||||||
/* object definition common functions */
|
/* object definition common functions */
|
||||||
static KmppObjDef KMPP_OBJ_DEF(KMPP_OBJ_NAME) = NULL;
|
static KmppObjDef KMPP_OBJ_DEF(KMPP_OBJ_NAME) = NULL;
|
||||||
|
static rk_u32 KMPP_OBJ_DEF_DEUBG(KMPP_OBJ_NAME) = 0;
|
||||||
|
|
||||||
/* globla variable definitions */
|
/* globla variable definitions */
|
||||||
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, VAL_ENTRY_TBL, VAL_ENTRY_TBL,
|
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, VAL_ENTRY_TBL, VAL_ENTRY_TBL,
|
||||||
VAL_HOOK_IDX, VAL_HOOK_IDX, ENTRY_NOTHING)
|
VAL_HOOK_IDX, VAL_HOOK_IDX, ENTRY_NOTHING)
|
||||||
@@ -259,13 +256,19 @@ void CONCAT_US(KMPP_OBJ_NAME, register)(void)
|
|||||||
{
|
{
|
||||||
rk_s32 impl_size = (sizeof(KMPP_OBJ_IMPL_TYPE) + KMPP_OBJ_EXTRA_SIZE + 3) & ~3;
|
rk_s32 impl_size = (sizeof(KMPP_OBJ_IMPL_TYPE) + KMPP_OBJ_EXTRA_SIZE + 3) & ~3;
|
||||||
rk_s32 __flag_base = impl_size << 3;
|
rk_s32 __flag_base = impl_size << 3;
|
||||||
|
rk_s32 __flag_step = 0;
|
||||||
|
rk_s32 __flag_prev = 0;
|
||||||
rk_s32 __flag_record[ELEM_FLAG_RECORD_MAX];
|
rk_s32 __flag_record[ELEM_FLAG_RECORD_MAX];
|
||||||
(void) __flag_base;
|
(void) __flag_base;
|
||||||
|
(void) __flag_step;
|
||||||
|
(void) __flag_prev;
|
||||||
(void) __flag_record;
|
(void) __flag_record;
|
||||||
|
|
||||||
mpp_logd_f("enter\n");
|
mpp_env_get_u32(TO_STR(CONCAT_US(KMPP_OBJ_NAME, debug)), &KMPP_OBJ_DEF_DEUBG(KMPP_OBJ_NAME), 1);
|
||||||
|
|
||||||
kmpp_objdef_register(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), impl_size, KMPP_OBJ_DEF_NAME(KMPP_OBJ_INTF_TYPE));
|
KMPP_OBJ_DBG_LOG("register enter\n");
|
||||||
|
|
||||||
|
kmpp_objdef_register(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), impl_size, TO_STR(KMPP_OBJ_INTF_TYPE));
|
||||||
if (!KMPP_OBJ_DEF(KMPP_OBJ_NAME)) {
|
if (!KMPP_OBJ_DEF(KMPP_OBJ_NAME)) {
|
||||||
mpp_loge_f(TO_STR(KMPP_OBJ_NAME) " init failed\n");
|
mpp_loge_f(TO_STR(KMPP_OBJ_NAME) " init failed\n");
|
||||||
return;
|
return;
|
||||||
@@ -292,18 +295,18 @@ void CONCAT_US(KMPP_OBJ_NAME, register)(void)
|
|||||||
#if !defined(KMPP_OBJ_SHARE_DISABLE) && defined(__KERNEL__)
|
#if !defined(KMPP_OBJ_SHARE_DISABLE) && defined(__KERNEL__)
|
||||||
kmpp_objdef_share(KMPP_OBJ_DEF(KMPP_OBJ_NAME));
|
kmpp_objdef_share(KMPP_OBJ_DEF(KMPP_OBJ_NAME));
|
||||||
#endif
|
#endif
|
||||||
mpp_logd_f("leave\n");
|
KMPP_OBJ_DBG_LOG("register leave\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CONCAT_US(KMPP_OBJ_NAME, unregister)(void)
|
void CONCAT_US(KMPP_OBJ_NAME, unregister)(void)
|
||||||
{
|
{
|
||||||
KmppObjDef def = __sync_fetch_and_and(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), NULL);
|
KmppObjDef def = __sync_fetch_and_and(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), NULL);
|
||||||
|
|
||||||
|
KMPP_OBJ_DBG_LOG("unregister enter\n");
|
||||||
kmpp_objdef_unregister(def);
|
kmpp_objdef_unregister(def);
|
||||||
|
KMPP_OBJ_DBG_LOG("unregister leave\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "mpp_singleton.h"
|
|
||||||
|
|
||||||
MPP_SINGLETON(KMPP_OBJ_SGLN_ID, TO_STR(KMPP_OBJ_NAME), CONCAT_US(KMPP_OBJ_NAME, register), CONCAT_US(KMPP_OBJ_NAME, unregister));
|
MPP_SINGLETON(KMPP_OBJ_SGLN_ID, TO_STR(KMPP_OBJ_NAME), CONCAT_US(KMPP_OBJ_NAME, register), CONCAT_US(KMPP_OBJ_NAME, unregister));
|
||||||
|
|
||||||
rk_s32 CONCAT_US(KMPP_OBJ_NAME, size)(void)
|
rk_s32 CONCAT_US(KMPP_OBJ_NAME, size)(void)
|
||||||
|
|||||||
@@ -6,6 +6,14 @@
|
|||||||
#ifndef __KMPP_OBJ_MACRO_H__
|
#ifndef __KMPP_OBJ_MACRO_H__
|
||||||
#define __KMPP_OBJ_MACRO_H__
|
#define __KMPP_OBJ_MACRO_H__
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "mpp_env.h"
|
||||||
|
#include "mpp_debug.h"
|
||||||
|
#include "mpp_singleton.h"
|
||||||
|
|
||||||
|
#include "kmpp_obj.h"
|
||||||
|
|
||||||
#define TO_STR(x) #x
|
#define TO_STR(x) #x
|
||||||
|
|
||||||
/* concat by underscore */
|
/* concat by underscore */
|
||||||
@@ -43,7 +51,8 @@
|
|||||||
|
|
||||||
/* objdef struct name */
|
/* objdef struct name */
|
||||||
#define KMPP_OBJ_DEF(x) CONCAT_US(x, def)
|
#define KMPP_OBJ_DEF(x) CONCAT_US(x, def)
|
||||||
#define KMPP_OBJ_DEF_NAME(x) TO_STR(x)
|
#define KMPP_OBJ_DEF_DEUBG(x) CONCAT_US(x, debug)
|
||||||
|
#define KMPP_OBJ_DBG_LOG(...) mpp_logi_c(KMPP_OBJ_DEF_DEUBG(KMPP_OBJ_NAME), __VA_ARGS__)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* element update flag bits usage:
|
* element update flag bits usage:
|
||||||
@@ -51,74 +60,98 @@
|
|||||||
* bit 8 - 9 record / replay operation bit
|
* bit 8 - 9 record / replay operation bit
|
||||||
* bit 10 - 11 update flag update operation invalid / start / update / hold
|
* bit 10 - 11 update flag update operation invalid / start / update / hold
|
||||||
*/
|
*/
|
||||||
|
typedef union ElemFlagDef_u {
|
||||||
|
rk_u32 val;
|
||||||
|
struct {
|
||||||
|
rk_u32 idx : 8;
|
||||||
|
rk_u32 slot : 4;
|
||||||
|
rk_u32 op : 4;
|
||||||
|
rk_u32 record : 1;
|
||||||
|
rk_u32 replay : 1;
|
||||||
|
rk_u32 reserved : 10;
|
||||||
|
};
|
||||||
|
} ElemFlagDef;
|
||||||
|
|
||||||
#define ELEM_FLAG_OP_SHIFT 8
|
#define ELEM_FLAG_OP_SHIFT 8
|
||||||
#define ELEM_FLAG_IDX_MASK ((1 << ELEM_FLAG_OP_SHIFT) - 1)
|
#define ELEM_FLAG_IDX_MASK ((1 << ELEM_FLAG_OP_SHIFT) - 1)
|
||||||
|
|
||||||
typedef enum ElemFlagType_e {
|
typedef enum ElemFlagType_e {
|
||||||
/* element without update flag (not available) */
|
/* element without update flag (not available) */
|
||||||
ELEM_FLAG_NONE = (1 << ELEM_FLAG_OP_SHIFT),
|
ELEM_FLAG_NONE,
|
||||||
/* element update flag will align to new 32bit */
|
/* element update flag will align to new 32bit */
|
||||||
ELEM_FLAG_START = (2 << ELEM_FLAG_OP_SHIFT),
|
ELEM_FLAG_START,
|
||||||
/* element flag align up to 64bit */
|
/* element flag align up to 64bit */
|
||||||
ELEM_FLAG_START64 = (3 << ELEM_FLAG_OP_SHIFT),
|
ELEM_FLAG_START64,
|
||||||
/* element flag increase by one */
|
/* element flag increase by one */
|
||||||
ELEM_FLAG_UPDATE = (4 << ELEM_FLAG_OP_SHIFT),
|
ELEM_FLAG_OFFSET,
|
||||||
|
/* element flag increase by one */
|
||||||
|
ELEM_FLAG_INCR,
|
||||||
/* element flag equal to previous one */
|
/* element flag equal to previous one */
|
||||||
ELEM_FLAG_HOLD = (5 << ELEM_FLAG_OP_SHIFT),
|
ELEM_FLAG_PREV,
|
||||||
ELEM_FLAG_OP_MASK = (7 << ELEM_FLAG_OP_SHIFT),
|
|
||||||
|
|
||||||
/* index for record element update flag */
|
ELEM_FLAG_RECORD_MAX = 16,
|
||||||
ELEM_FLAG_RECORD = (8 << ELEM_FLAG_OP_SHIFT),
|
|
||||||
ELEM_FLAG_RECORD_0 = (ELEM_FLAG_RECORD + 0),
|
|
||||||
ELEM_FLAG_RECORD_1 = (ELEM_FLAG_RECORD + 1),
|
|
||||||
ELEM_FLAG_RECORD_2 = (ELEM_FLAG_RECORD + 2),
|
|
||||||
ELEM_FLAG_RECORD_3 = (ELEM_FLAG_RECORD + 3),
|
|
||||||
ELEM_FLAG_RECORD_4 = (ELEM_FLAG_RECORD + 4),
|
|
||||||
ELEM_FLAG_RECORD_5 = (ELEM_FLAG_RECORD + 5),
|
|
||||||
ELEM_FLAG_RECORD_6 = (ELEM_FLAG_RECORD + 6),
|
|
||||||
ELEM_FLAG_RECORD_7 = (ELEM_FLAG_RECORD + 7),
|
|
||||||
ELEM_FLAG_RECORD_8 = (ELEM_FLAG_RECORD + 8),
|
|
||||||
ELEM_FLAG_RECORD_9 = (ELEM_FLAG_RECORD + 9),
|
|
||||||
ELEM_FLAG_RECORD_BUT,
|
|
||||||
ELEM_FLAG_RECORD_MAX = (ELEM_FLAG_RECORD_BUT - ELEM_FLAG_RECORD),
|
|
||||||
|
|
||||||
/* index for replay element update flag */
|
|
||||||
ELEM_FLAG_REPLAY = (16 << ELEM_FLAG_OP_SHIFT),
|
|
||||||
ELEM_FLAG_REPLAY_0 = (ELEM_FLAG_REPLAY + 0),
|
|
||||||
ELEM_FLAG_REPLAY_1 = (ELEM_FLAG_REPLAY + 1),
|
|
||||||
ELEM_FLAG_REPLAY_2 = (ELEM_FLAG_REPLAY + 2),
|
|
||||||
ELEM_FLAG_REPLAY_3 = (ELEM_FLAG_REPLAY + 3),
|
|
||||||
ELEM_FLAG_REPLAY_4 = (ELEM_FLAG_REPLAY + 4),
|
|
||||||
ELEM_FLAG_REPLAY_5 = (ELEM_FLAG_REPLAY + 5),
|
|
||||||
ELEM_FLAG_REPLAY_6 = (ELEM_FLAG_REPLAY + 6),
|
|
||||||
ELEM_FLAG_REPLAY_7 = (ELEM_FLAG_REPLAY + 7),
|
|
||||||
ELEM_FLAG_REPLAY_8 = (ELEM_FLAG_REPLAY + 8),
|
|
||||||
ELEM_FLAG_REPLAY_9 = (ELEM_FLAG_REPLAY + 9),
|
|
||||||
ELEM_FLAG_REPLAY_BUT,
|
|
||||||
} ElemFlagType;
|
} ElemFlagType;
|
||||||
|
|
||||||
|
#define FLAG_NONE ((0 & 0xff) | ((0 & 0xf) << 8) | (ELEM_FLAG_NONE << 12) | (0 << 16) | (0 << 17))
|
||||||
|
#define FLAG_BASE(x) ((0 & 0xff) | ((0 & 0xf) << 8) | (ELEM_FLAG_START << 12) | (0 << 16) | (0 << 17))
|
||||||
|
#define FLAG_AT(x) ((x & 0xff) | ((0 & 0xf) << 8) | (ELEM_FLAG_OFFSET << 12) | (0 << 16) | (0 << 17))
|
||||||
|
#define FLAG_INCR ((0 & 0xff) | ((0 & 0xf) << 8) | (ELEM_FLAG_INCR << 12) | (0 << 16) | (0 << 17))
|
||||||
|
#define FLAG_PREV ((0 & 0xff) | ((0 & 0xf) << 8) | (ELEM_FLAG_PREV << 12) | (0 << 16) | (0 << 17))
|
||||||
|
#define FLAG_REC(s, x) ((x & 0xff) | ((s & 0xf) << 8) | (ELEM_FLAG_OFFSET << 12) | (1 << 16) | (0 << 17))
|
||||||
|
#define FLAG_REC_INC(s) ((0 & 0xff) | ((s & 0xf) << 8) | (ELEM_FLAG_INCR << 12) | (1 << 16) | (0 << 17))
|
||||||
|
#define FLAG_REPLAY(s) ((0 & 0xff) | ((s & 0xf) << 8) | (ELEM_FLAG_OFFSET << 12) | (0 << 16) | (1 << 17))
|
||||||
|
|
||||||
/* macro for register structure update flag type to offset */
|
/* macro for register structure update flag type to offset */
|
||||||
#define FLAG_TYPE_TO_OFFSET(flag) \
|
#define FLAG_TYPE_TO_OFFSET(name, flag, flag_str) \
|
||||||
({ \
|
({ \
|
||||||
|
ElemFlagDef __flag = { .val = flag, }; \
|
||||||
rk_u16 __offset; \
|
rk_u16 __offset; \
|
||||||
rk_u32 __flag = flag; \
|
switch (__flag.op) { \
|
||||||
rk_s32 __flag_op = __flag & ELEM_FLAG_OP_MASK; \
|
case ELEM_FLAG_START : { \
|
||||||
switch (__flag_op) { \
|
/* NOTE: increase to next 32bit */ \
|
||||||
case ELEM_FLAG_NONE : __offset = 0; break; \
|
if (__flag_prev > __flag_base) \
|
||||||
case ELEM_FLAG_START : __flag_base = ((__flag_base + 31) & (~31)); __offset = __flag_base; break; \
|
__flag_base = (__flag_prev + 31) & (~31); \
|
||||||
case ELEM_FLAG_START64 : __flag_base = ((__flag_base + 63) & (~63)); __offset = __flag_base; break; \
|
else if (__flag_prev == __flag_base) \
|
||||||
case ELEM_FLAG_UPDATE : __offset = ++__flag_base; break; \
|
__flag_base = ((__flag_base + 32) & (~31)); \
|
||||||
case ELEM_FLAG_HOLD : __offset = __flag_base; break; \
|
__flag_step = 0; \
|
||||||
default : __offset = 0; break; \
|
__offset = __flag_prev = __flag_base; \
|
||||||
|
} break; \
|
||||||
|
case ELEM_FLAG_START64 : { \
|
||||||
|
/* NOTE: increase to next 64bit */ \
|
||||||
|
if (__flag_prev > __flag_base) \
|
||||||
|
__flag_base = (__flag_prev + 63) & (~63); \
|
||||||
|
else if (__flag_prev == __flag_base) \
|
||||||
|
__flag_base = ((__flag_base + 64) & (~63)); \
|
||||||
|
__flag_step = 0; \
|
||||||
|
__offset = __flag_prev = __flag_base; \
|
||||||
|
} break; \
|
||||||
|
case ELEM_FLAG_OFFSET : { \
|
||||||
|
/* define offset to the base */ \
|
||||||
|
__offset = __flag_prev = __flag_base + __flag.idx; \
|
||||||
|
if (__flag.idx > __flag_step) \
|
||||||
|
__flag_step = __flag.idx; \
|
||||||
|
} break; \
|
||||||
|
case ELEM_FLAG_INCR : { \
|
||||||
|
/* increase from the max step */ \
|
||||||
|
__flag_step++; \
|
||||||
|
__offset = __flag_prev = __flag_base + __flag_step; \
|
||||||
|
} break; \
|
||||||
|
case ELEM_FLAG_PREV : { \
|
||||||
|
__offset = __flag_prev; \
|
||||||
|
} break; \
|
||||||
|
default : { \
|
||||||
|
__offset = 0; \
|
||||||
|
} break; \
|
||||||
}; \
|
}; \
|
||||||
if (__flag & (ELEM_FLAG_RECORD | ELEM_FLAG_REPLAY)) { \
|
if (__flag.record) { \
|
||||||
rk_s32 __flag_idx = __flag & ELEM_FLAG_IDX_MASK; \
|
__flag_record[__flag.slot] = __offset; \
|
||||||
if (__flag & ELEM_FLAG_RECORD) { \
|
|
||||||
__flag_record[__flag_idx] = __offset; \
|
|
||||||
} else { \
|
|
||||||
__offset = __flag_record[__flag_idx]; \
|
|
||||||
} \
|
|
||||||
} \
|
} \
|
||||||
|
if (__flag.replay) { \
|
||||||
|
__offset = __flag_record[__flag.slot]; \
|
||||||
|
} \
|
||||||
|
KMPP_OBJ_DBG_LOG("%-20s - (%x:%x:%02x) -> %#4x (%2d) - %s\n", \
|
||||||
|
TO_STR(name), __flag_base, __flag_prev, __flag_step, \
|
||||||
|
__offset, __offset ? __offset - __flag_base : 0, flag_str); \
|
||||||
__offset; \
|
__offset; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user