From 95f5b525d2eecb5ea90a056cff47f3bf946540aa Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 23 Jan 2005 22:51:28 +0000 Subject: changes mainly for threading support --- acid/port | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'acid') diff --git a/acid/port b/acid/port index 1e494530..4e2741d1 100644 --- a/acid/port +++ b/acid/port @@ -408,6 +408,29 @@ defn casm() asm(lasmaddr); } +defn xasm(addr) +{ + local bound; + + bound = fnbound(addr); + + addr = fmt(addr, 'i'); + loop 1,_asmlines do { + print(fmt(addr, 'a'), " ", fmt(addr, 'X')); + print("\t", *addr++, "\n"); + if bound != {} && addr > bound[1] then { + lasmaddr = addr; + return {}; + } + } + lasmaddr = addr; +} + +defn xcasm() +{ + xasm(lasmaddr); +} + defn win() { local npid, estr; @@ -614,5 +637,54 @@ defn acidtypes() } } +defn getregs() +{ + local regs, l; + + regs = {}; + l = registers; + while l != {} do { + regs = append regs, var(l[0]); + l = tail l; + } + return regs; +} + +defn setregs(regs) +{ + local l; + + l = registers; + while l != {} do { + var(l[0]) = regs[0]; + l = tail l; + regs = tail regs; + } + return regs; +} + +defn resetregs() +{ + local l; + + l = registers; + while l != {} do { + var(l[0]) = register(l[0]); + l = tail l; + } +} + +defn clearregs() +{ + local l; + + l = registers; + while l != {} do { + var(l[0]) = refconst(~0); + l = tail l; + } +} + progargs=""; print(acidfile); + -- cgit v1.2.3