summaryrefslogtreecommitdiffstats
path: root/vm/compiler/codegen/arm/ArchUtility.c
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2010-07-20 14:53:42 -0700
committerbuzbee <buzbee@google.com>2010-07-21 14:50:25 -0700
commitecf8f6ede2c00350a36297dd7427afff9d9cb154 (patch)
tree6f78c5a9225efd114ba231a9a7bc9ced22265ace /vm/compiler/codegen/arm/ArchUtility.c
parente3bed18a09bc810752f50784033b9b201c0d8399 (diff)
downloadandroid_dalvik-ecf8f6ede2c00350a36297dd7427afff9d9cb154.tar.gz
android_dalvik-ecf8f6ede2c00350a36297dd7427afff9d9cb154.tar.bz2
android_dalvik-ecf8f6ede2c00350a36297dd7427afff9d9cb154.zip
JIT: Support for Dalvik volatiles (issue 2781881)
Also, on SMP systems generate memory barriers. Change-Id: If64f7c98a8de426930b8f36ac77913e53b7b2d7a
Diffstat (limited to 'vm/compiler/codegen/arm/ArchUtility.c')
-rw-r--r--vm/compiler/codegen/arm/ArchUtility.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/vm/compiler/codegen/arm/ArchUtility.c b/vm/compiler/codegen/arm/ArchUtility.c
index 4e0df2884..2daa871ca 100644
--- a/vm/compiler/codegen/arm/ArchUtility.c
+++ b/vm/compiler/codegen/arm/ArchUtility.c
@@ -68,6 +68,7 @@ static void buildInsnString(char *fmt, ArmLIR *lir, char* buf,
char *bufEnd = &buf[size-1];
char *fmtEnd = &fmt[strlen(fmt)];
char tbuf[256];
+ char *name;
char nc;
while (fmt < fmtEnd) {
int operand;
@@ -82,6 +83,32 @@ static void buildInsnString(char *fmt, ArmLIR *lir, char* buf,
assert((unsigned)(nc-'0') < 4);
operand = lir->operands[nc-'0'];
switch(*fmt++) {
+ case 'B':
+ switch (operand) {
+ case kSY:
+ name = "sy";
+ break;
+ case kST:
+ name = "st";
+ break;
+ case kISH:
+ name = "ish";
+ break;
+ case kISHST:
+ name = "ishst";
+ break;
+ case kNSH:
+ name = "nsh";
+ break;
+ case kNSHST:
+ name = "shst";
+ break;
+ default:
+ name = "DecodeError";
+ break;
+ }
+ strcpy(tbuf, name);
+ break;
case 'b':
strcpy(tbuf,"0000");
for (i=3; i>= 0; i--) {