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 d0f5cbcf 2005-01-07 devnull regdesc(char *name)
8 d0f5cbcf 2005-01-07 devnull Regdesc *r;
10 d0f5cbcf 2005-01-07 devnull for(r=mach->reglist; r->name; r++)
11 d0f5cbcf 2005-01-07 devnull if(strcmp(r->name, name) == 0)
12 d0f5cbcf 2005-01-07 devnull return r;
13 d0f5cbcf 2005-01-07 devnull return nil;
17 443d6288 2012-02-19 rsc rput(Regs *regs, char *name, u64int u)
19 a84cbb2a 2004-04-19 devnull if(regs == nil){
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, 0);
27 443d6288 2012-02-19 rsc rget(Regs *regs, char *name, u64int *u)
29 a84cbb2a 2004-04-19 devnull if(regs == nil){
30 4a000a28 2012-03-05 rsc *u = ~(u64int)0;
31 a84cbb2a 2004-04-19 devnull werrstr("registers not mapped");
32 a84cbb2a 2004-04-19 devnull return -1;
34 a84cbb2a 2004-04-19 devnull return regs->rw(regs, name, u, 1);
38 443d6288 2012-02-19 rsc _uregrw(Regs *regs, char *name, u64int *u, int isr)
40 a84cbb2a 2004-04-19 devnull Regdesc *r;
41 a84cbb2a 2004-04-19 devnull uchar *ureg;
43 a84cbb2a 2004-04-19 devnull if(!isr){
44 a84cbb2a 2004-04-19 devnull werrstr("cannot write registers");
45 a84cbb2a 2004-04-19 devnull return -1;
48 a84cbb2a 2004-04-19 devnull if((r = regdesc(name)) == nil)
49 a84cbb2a 2004-04-19 devnull return -1;
50 a84cbb2a 2004-04-19 devnull ureg = ((UregRegs*)regs)->ureg + r->offset;
52 a84cbb2a 2004-04-19 devnull switch(r->format){
54 a84cbb2a 2004-04-19 devnull case 'X':
55 4f0073fe 2004-06-11 devnull *u = mach->swap4(*(u32int*)ureg);
56 a84cbb2a 2004-04-19 devnull return 0;
58 4a000a28 2012-03-05 rsc *u = mach->swap8(*(u64int*)ureg);