aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
authorLinus Torvalds <torvalds@home.transmeta.com>2003-04-06 23:54:11 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:00:17 -0700
commitfc1da8101b5106f6c98822210759907b0f4f9390 (patch)
treeab20b2d545d2d7ece5efedfae8ed8b1b8559ff5e
parent964c707a29a03b8e974371f19fd0a8a867d9d78d (diff)
downloadsparse-dev-fc1da8101b5106f6c98822210759907b0f4f9390.tar.gz
Fix bitfield access code.
-rw-r--r--show-parse.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/show-parse.c b/show-parse.c
index 87a22813..596d2315 100644
--- a/show-parse.c
+++ b/show-parse.c
@@ -537,7 +537,7 @@ static int show_load_gen(int bits, struct expression *expr, int addr)
/* bitfield load! */
if (expr->bitpos)
printf("\tshr.%d\t\tv%d,v%d,$%d\n", bits, new, new, expr->bitpos);
- printf("\tandi.%d\t\tv%d,v%d,$%llu", bits, new, new, 1ULL << expr->nrbits);
+ printf("\tandi.%d\t\tv%d,v%d,$%llu\n", bits, new, new, (1ULL << expr->nrbits)-1);
return new;
}
@@ -658,12 +658,7 @@ static int show_string_expr(struct expression *expr)
static int show_bitfield_expr(struct expression *expr)
{
- int address = show_expression(expr->address);
- int new = new_pseudo();
-
- printf("v%d = (extract bits[%d-%d]) v%d\n",
- new, expr->bitpos, expr->bitpos + expr->nrbits - 1, address);
- return new;
+ return show_access(expr);
}
static int show_conditional_expr(struct expression *expr)