1 a84cbb2a 2004-04-19 devnull #include <u.h>
2 a84cbb2a 2004-04-19 devnull #include <libc.h>
3 a84cbb2a 2004-04-19 devnull #include <mach.h>
6 4f0073fe 2004-06-11 devnull rput(Regs *regs, char *name, ulong u)
8 a84cbb2a 2004-04-19 devnull if(regs == nil){
9 a84cbb2a 2004-04-19 devnull werrstr("registers not mapped");
10 a84cbb2a 2004-04-19 devnull return -1;
12 a84cbb2a 2004-04-19 devnull return regs->rw(regs, name, &u, 0);
16 4f0073fe 2004-06-11 devnull rget(Regs *regs, char *name, ulong *u)
18 a84cbb2a 2004-04-19 devnull if(regs == nil){
19 a84cbb2a 2004-04-19 devnull *u = ~(ulong)0;
20 a84cbb2a 2004-04-19 devnull werrstr("registers not mapped");
21 a84cbb2a 2004-04-19 devnull return -1;
23 a84cbb2a 2004-04-19 devnull return regs->rw(regs, name, u, 1);
27 4f0073fe 2004-06-11 devnull _uregrw(Regs *regs, char *name, ulong *u, int isr)
29 a84cbb2a 2004-04-19 devnull Regdesc *r;
30 a84cbb2a 2004-04-19 devnull uchar *ureg;
32 a84cbb2a 2004-04-19 devnull if(!isr){
33 a84cbb2a 2004-04-19 devnull werrstr("cannot write registers");
34 a84cbb2a 2004-04-19 devnull return -1;
37 a84cbb2a 2004-04-19 devnull if((r = regdesc(name)) == nil)
38 a84cbb2a 2004-04-19 devnull return -1;
39 a84cbb2a 2004-04-19 devnull ureg = ((UregRegs*)regs)->ureg + r->offset;
41 a84cbb2a 2004-04-19 devnull switch(r->format){
43 a84cbb2a 2004-04-19 devnull case 'X':
44 4f0073fe 2004-06-11 devnull *u = mach->swap4(*(u32int*)ureg);
45 a84cbb2a 2004-04-19 devnull return 0;
50 a84cbb2a 2004-04-19 devnull regdesc(char *name)
52 a84cbb2a 2004-04-19 devnull Regdesc *r;
54 a84cbb2a 2004-04-19 devnull for(r=mach->reglist; r->name; r++)
55 a84cbb2a 2004-04-19 devnull if(strcmp(r->name, name) == 0)
56 a84cbb2a 2004-04-19 devnull return r;
57 a84cbb2a 2004-04-19 devnull return nil;