diff options
author | aiju <devnull@localhost> | 2011-04-26 14:32:41 +0200 |
---|---|---|
committer | aiju <devnull@localhost> | 2011-04-26 14:32:41 +0200 |
commit | 62d6def842134468d9c9199e86fe81da6056df76 (patch) | |
tree | 2532da35df0ea23463318b1e048295420ef29af9 /sys/src | |
parent | 04924f239b99bc5054a2c004bdaeb42089cbabc3 (diff) | |
parent | 554ce79215b5d59c7f1651e7505fe44b3c55cb3c (diff) |
merge
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/cmd/aux/realemu/xec.c | 59 | ||||
-rw-r--r-- | sys/src/mkfile | 2 |
2 files changed, 34 insertions, 27 deletions
diff --git a/sys/src/cmd/aux/realemu/xec.c b/sys/src/cmd/aux/realemu/xec.c index 4d81c4d5c..c39ad27b5 100644 --- a/sys/src/cmd/aux/realemu/xec.c +++ b/sys/src/cmd/aux/realemu/xec.c @@ -485,39 +485,43 @@ opror(Cpu *cpu, Inst *i) } static void -opbts(Cpu *cpu, Inst *i) +opbt(Cpu *cpu, Inst *i) { ulong a, m; - int n; - - a = ar(i->a1); - n = ar(i->a2) & 31; + int n, s; + Iarg *x; + + n = ar(i->a2); + x = i->a1; + s = x->len*8; + if(x->tag == TMEM){ + x = adup(x); + x->off += n / s; + x->off &= mask(i->alen*8); + } + a = ar(x); + n &= s-1; m = 1<<n; if(a & m) - cpu->reg[RFL] |= CF; - else { + cpu->reg[RFL] |= CF; + else cpu->reg[RFL] &= ~CF; - aw(i->a1, a | m); + switch(i->op){ + case OBT: + break; + case OBTS: + aw(x, a | m); + break; + case OBTR: + aw(x, a & ~m); + break; + case OBTC: + aw(x, a ^ m); + break; } } static void -opbtr(Cpu *cpu, Inst *i) -{ - ulong a, m; - int n; - - a = ar(i->a1); - n = ar(i->a2) & 31; - m = 1<<n; - if(a & m){ - cpu->reg[RFL] |= CF; - aw(i->a1, a & ~m); - } else - cpu->reg[RFL] &= ~CF; -} - -static void opbitscan(Cpu *cpu, Inst *i) { ulong a; @@ -1204,8 +1208,11 @@ static void (*exctab[NUMOP])(Cpu *cpu, Inst*) = { [OROL] = oprol, [OROR] = opror, - [OBTS] = opbts, - [OBTR] = opbtr, + [OBT] = opbt, + [OBTS] = opbt, + [OBTR] = opbt, + [OBTC] = opbt, + [OBSF] = opbitscan, [OBSR] = opbitscan, diff --git a/sys/src/mkfile b/sys/src/mkfile index 4f5344e9f..a57df5b77 100644 --- a/sys/src/mkfile +++ b/sys/src/mkfile @@ -40,7 +40,7 @@ CMDS=cmd\ games\ SUBSYS=ape\ -# /acme\ + /acme\ none:VQ: echo mk all, install, clean, nuke, release, kernels, or libs |