summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej Żenczykowski <maze@google.com>2024-05-10 05:37:53 -0700
committerMaciej Żenczykowski <maze@google.com>2024-05-10 13:29:24 +0000
commitf8ce289a958f7a05d30792e05d3ecf54dfce29c3 (patch)
treed5e0673ac148a190483702e8c3f4bc45a4403524
parentf9344726e77c62ac26ef7cb243ebc6051a74414d (diff)
downloadapf-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.c22
-rw-r--r--v7/apf_interpreter_source.c22
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])