add clrex instruction Reference: /n/atom/patch/applied/5lclrex Date: Fri Feb 6 06:05:51 CET 2015 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/5l/span.c Fri Feb 6 06:05:28 2015 +++ /sys/src/cmd/5l/span.c Fri Feb 6 06:05:30 2015 @@ -743,7 +743,11 @@ break; case ASWPW: oprange[ASWPBU] = oprange[r]; + oprange[ALDREX] = oprange[r]; + oprange[ASTREX] = oprange[r]; break; + case ALDREX: + case ASTREX: case AB: case ABL: case ABX: @@ -752,6 +756,7 @@ case AWORD: case AMOVM: case ARFE: + case ACLREX: case ATEXT: case ACASE: case ABCASE: --- /sys/src/cmd/5l/optab.c Fri Feb 6 06:05:32 2015 +++ /sys/src/cmd/5l/optab.c Fri Feb 6 06:05:34 2015 @@ -161,8 +161,11 @@ { AMOVM, C_SOREG,C_NONE, C_LCON, 39, 4, 0 }, { ASWPW, C_SOREG,C_REG, C_REG, 40, 4, 0 }, + { ALDREX, C_SOREG,C_NONE, C_REG, 40, 4, 0 }, + { ASTREX, C_SOREG,C_REG, C_REG, 40, 4, 0 }, { ARFE, C_NONE, C_NONE, C_NONE, 41, 4, 0 }, + { ACLREX, C_NONE, C_NONE, C_NONE, 42, 4, 0 }, { AMOVF, C_FREG, C_NONE, C_FEXT, 50, 4, REGSB }, { AMOVF, C_FREG, C_NONE, C_FAUTO, 50, 4, REGSP }, --- /sys/src/cmd/5l/asm.c Fri Feb 6 06:05:37 2015 +++ /sys/src/cmd/5l/asm.c Fri Feb 6 06:05:39 2015 @@ -5,39 +5,6 @@ static Prog *PP; -ulong -crc32(char *name, int len, vlong off) -{ - uchar buf[MAXIO]; - int fd, n; - ulong crc; - static ulong *crctab; - - if(crctab == nil) - crctab = mkcrctab(0xedb88320); - fd = open(name, OREAD); - if(fd < 0) { - diag("cannot open %s: %r", name); - errorexit(); - } - seek(fd, off, 0); - crc = 0; - while(len > 0) { - n = len; - if(n > sizeof buf) - n = sizeof buf; - n = read(fd, buf, n); - if(n < 0) { - diag("cannot read %s: %r", name); - errorexit(); - } - crc = blockcrc(crctab, crc, buf, n); - len -= n; - } - close(fd); - return crc; -} - long entryvalue(void) { @@ -1123,6 +1090,10 @@ case 41: /* rfe -> movm.s.w.u 0(r13),[r15] */ o1 = 0xe8fd8000; + break; + + case 42: /* clrex */ + o1 = 0xf57ff01f; break; case 50: /* floating point store */