tchanges mainly for threading support - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 95f5b525d2eecb5ea90a056cff47f3bf946540aa
(DIR) parent 4a727cddffde2f877ddfb5a5514411c86f35140a
(HTM) Author: rsc <devnull@localhost>
Date: Sun, 23 Jan 2005 22:51:28 +0000
changes mainly for threading support
Diffstat:
M acid/port | 72 +++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/acid/port b/acid/port
t@@ -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;
t@@ -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);
+