[U-Boot] [PATCH] itest: Add bitwise and operator

Eric Nelson
2013-05-03T18:47:42Z

Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
---
common/cmd_itest.c | 4 ++++
doc/README.commands.itest | 10 +++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/common/cmd_itest.c b/common/cmd_itest.c
index 2c8e5d0..0629b09 100644
--- a/common/cmd_itest.c
+++ b/common/cmd_itest.c
@@ -38,6 +38,7 @@
#define GT 3
#define LE 4
#define GE 5
+#define AND 6

struct op_tbl_s {
char *op; /* operator string */
@@ -60,6 +61,8 @@ static const op_tbl_t op_table [] = {
{ ">=" , GE },
{ "-le", LE },
{ "<=" , LE },
+ { "-and", AND },
+ { "&" , AND },
};

static long evalexp(char *s, int w)
@@ -126,6 +129,7 @@ static int arithcomp (char *s, char *t, int op, int w)
case GT: return (l > r);
case LE: return (l <= r);
case GE: return (l >= r);
+ case AND: return (l & r);
}
return (0);
}
diff --git a/doc/README.commands.itest b/doc/README.commands.itest
index 5e0fe86..0058155 100644
--- a/doc/README.commands.itest
+++ b/doc/README.commands.itest
@@ -2,7 +2,7 @@ A slow day today so here is a revised itest command with provisional
support for comparing strings as well :-))

Now table driven to allow the operators
--eq, -ne, -lt, -gt, -le, -ge, ==, !=, <>, <, >, <=, >=
+-eq, -ne, -lt, -gt, -le, -ge, -and, ==, !=, <>, <, >, <=, >=, &

Uses the expected command modifier for integer compares of width 1, 2 or
4 bytes of .b, .w, .l and the new modifer of .s for a string compare.
@@ -14,3 +14,11 @@ if itest.l *40000 == 12345678 then; ....
if itest.w *40000 != 1234 then; ....
if itest.b *40000 >= 12 then; ....
if itest.s *40000 -eq hello then; ....
+
+Note that "&" (-and) operator only operates on integers and
+that the '&' will need to be quoted.
+
+e.g.:
+ if itest.l 0x80 '&' *0x020D8044 then; ...
+or
+ if itest.l 0x80 -and *0x020D8044 then; ...
--
1.7.9.5