diff options
author | Maciej Żenczykowski <maze@google.com> | 2024-05-10 05:37:53 -0700 |
---|---|---|
committer | Maciej Żenczykowski <maze@google.com> | 2024-05-10 13:29:24 +0000 |
commit | f8ce289a958f7a05d30792e05d3ecf54dfce29c3 (patch) | |
tree | d5e0673ac148a190483702e8c3f4bc45a4403524 | |
parent | f9344726e77c62ac26ef7cb243ebc6051a74414d (diff) | |
download | apf-f8ce289a958f7a05d30792e05d3ecf54dfce29c3.tar.gz |
v7: use DECODE_U8() in more places
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1f1f6f888f57eee58d07e2edb642a55eceeea08b
-rw-r--r-- | v7/apf_interpreter.c | 22 | ||||
-rw-r--r-- | v7/apf_interpreter_source.c | 22 |
2 files changed, 22 insertions, 22 deletions
diff --git a/v7/apf_interpreter.c b/v7/apf_interpreter.c index 40cea59..56659e1 100644 --- a/v7/apf_interpreter.c +++ b/v7/apf_interpreter.c @@ -643,21 +643,21 @@ static int do_discard_buffer(apf_context* ctx) { return apf_internal_do_transmit_buffer(ctx, 0 /* pkt_len */, 0 /* dscp */); } +#define DECODE_U8() (ctx->program[ctx->pc++]) + +static u16 decode_be16(apf_context* ctx) { + u16 v = DECODE_U8(); + v <<= 8; + v |= DECODE_U8(); + return v; +} + /* Decode an immediate, lengths [0..4] all work, does not do range checking. */ /* But note that program is at least 20 bytes shorter than ram, so first few */ /* immediates can always be safely decoded without exceeding ram buffer. */ static u32 decode_imm(apf_context* ctx, u32 length) { u32 i, v = 0; - for (i = 0; i < length; ++i) v = (v << 8) | ctx->program[ctx->pc++]; - return v; -} - -#define DECODE_U8() (ctx->program[ctx->pc++]) - -static u16 decode_be16(apf_context* ctx) { - u16 v = ctx->program[ctx->pc++]; - v <<= 8; - v |= ctx->program[ctx->pc++]; + for (i = 0; i < length; ++i) v = (v << 8) | DECODE_U8(); return v; } @@ -714,7 +714,7 @@ static int do_apf_run(apf_context* ctx) { { /* half indent to avoid needless line length... */ - const u8 bytecode = ctx->program[ctx->pc++]; + const u8 bytecode = DECODE_U8(); const u8 opcode = EXTRACT_OPCODE(bytecode); const u8 reg_num = EXTRACT_REGISTER(bytecode); #define REG (ctx->R[reg_num]) diff --git a/v7/apf_interpreter_source.c b/v7/apf_interpreter_source.c index b84f606..eb09d90 100644 --- a/v7/apf_interpreter_source.c +++ b/v7/apf_interpreter_source.c @@ -99,21 +99,21 @@ static int do_discard_buffer(apf_context* ctx) { return do_transmit_buffer(ctx, 0 /* pkt_len */, 0 /* dscp */); } +#define DECODE_U8() (ctx->program[ctx->pc++]) + +static u16 decode_be16(apf_context* ctx) { + u16 v = DECODE_U8(); + v <<= 8; + v |= DECODE_U8(); + return v; +} + // Decode an immediate, lengths [0..4] all work, does not do range checking. // But note that program is at least 20 bytes shorter than ram, so first few // immediates can always be safely decoded without exceeding ram buffer. static u32 decode_imm(apf_context* ctx, u32 length) { u32 i, v = 0; - for (i = 0; i < length; ++i) v = (v << 8) | ctx->program[ctx->pc++]; - return v; -} - -#define DECODE_U8() (ctx->program[ctx->pc++]) - -static u16 decode_be16(apf_context* ctx) { - u16 v = ctx->program[ctx->pc++]; - v <<= 8; - v |= ctx->program[ctx->pc++]; + for (i = 0; i < length; ++i) v = (v << 8) | DECODE_U8(); return v; } @@ -170,7 +170,7 @@ static int do_apf_run(apf_context* ctx) { { // half indent to avoid needless line length... - const u8 bytecode = ctx->program[ctx->pc++]; + const u8 bytecode = DECODE_U8(); const u8 opcode = EXTRACT_OPCODE(bytecode); const u8 reg_num = EXTRACT_REGISTER(bytecode); #define REG (ctx->R[reg_num]) |