1*ebd848c1SDavid du Colombier #pragma lib "libaml.a" 2*ebd848c1SDavid du Colombier #pragma src "/sys/src/libaml" 3*ebd848c1SDavid du Colombier 4*ebd848c1SDavid du Colombier /* 5*ebd848c1SDavid du Colombier * b uchar* buffer amllen() returns number of bytes 6*ebd848c1SDavid du Colombier * s char* string amllen() is strlen() 7*ebd848c1SDavid du Colombier * n char* undefined name amllen() is strlen() 8*ebd848c1SDavid du Colombier * i uvlong* integer 9*ebd848c1SDavid du Colombier * p void** package amllen() is # of elements 10*ebd848c1SDavid du Colombier * r void* region 11*ebd848c1SDavid du Colombier * f void* field 12*ebd848c1SDavid du Colombier * u void* bufferfield 13*ebd848c1SDavid du Colombier * N void* name 14*ebd848c1SDavid du Colombier * R void* reference 15*ebd848c1SDavid du Colombier */ 16*ebd848c1SDavid du Colombier int amltag(void *); 17*ebd848c1SDavid du Colombier void* amlval(void *); 18*ebd848c1SDavid du Colombier uvlong amlint(void *); 19*ebd848c1SDavid du Colombier int amllen(void *); 20*ebd848c1SDavid du Colombier 21*ebd848c1SDavid du Colombier void* amlnew(char tag, int len); 22*ebd848c1SDavid du Colombier 23*ebd848c1SDavid du Colombier void amlinit(void); 24*ebd848c1SDavid du Colombier void amlexit(void); 25*ebd848c1SDavid du Colombier 26*ebd848c1SDavid du Colombier int amlload(uchar *data, int len); 27*ebd848c1SDavid du Colombier void* amlwalk(void *dot, char *name); 28*ebd848c1SDavid du Colombier int amleval(void *dot, char *fmt, ...); 29*ebd848c1SDavid du Colombier void amlenum(void *dot, char *seg, int (*proc)(void *, void *), void *arg); 30*ebd848c1SDavid du Colombier 31*ebd848c1SDavid du Colombier /* 32*ebd848c1SDavid du Colombier * exclude from garbage collection 33*ebd848c1SDavid du Colombier */ 34*ebd848c1SDavid du Colombier void amltake(void *); 35*ebd848c1SDavid du Colombier void amldrop(void *); 36*ebd848c1SDavid du Colombier 37*ebd848c1SDavid du Colombier void* amlroot; 38*ebd848c1SDavid du Colombier int amldebug; 39*ebd848c1SDavid du Colombier 40*ebd848c1SDavid du Colombier #pragma varargck type "V" void* 41*ebd848c1SDavid du Colombier #pragma varargck type "N" void* 42*ebd848c1SDavid du Colombier 43*ebd848c1SDavid du Colombier /* to be provided by operating system */ 44*ebd848c1SDavid du Colombier extern void* amlalloc(int); 45*ebd848c1SDavid du Colombier extern void amlfree(void*); 46*ebd848c1SDavid du Colombier 47*ebd848c1SDavid du Colombier extern void amldelay(int); /* microseconds */ 48*ebd848c1SDavid du Colombier 49*ebd848c1SDavid du Colombier enum { 50*ebd848c1SDavid du Colombier MemSpace = 0x00, 51*ebd848c1SDavid du Colombier IoSpace = 0x01, 52*ebd848c1SDavid du Colombier PcicfgSpace = 0x02, 53*ebd848c1SDavid du Colombier EbctlSpace = 0x03, 54*ebd848c1SDavid du Colombier SmbusSpace = 0x04, 55*ebd848c1SDavid du Colombier CmosSpace = 0x05, 56*ebd848c1SDavid du Colombier PcibarSpace = 0x06, 57*ebd848c1SDavid du Colombier FixedhwSpace = 0x08, 58*ebd848c1SDavid du Colombier IpmiSpace = 0x07, 59*ebd848c1SDavid du Colombier }; 60*ebd848c1SDavid du Colombier 61*ebd848c1SDavid du Colombier typedef struct Amlio Amlio; 62*ebd848c1SDavid du Colombier struct Amlio 63*ebd848c1SDavid du Colombier { 64*ebd848c1SDavid du Colombier int space; 65*ebd848c1SDavid du Colombier uvlong off; 66*ebd848c1SDavid du Colombier uvlong len; 67*ebd848c1SDavid du Colombier void *name; 68*ebd848c1SDavid du Colombier uchar *va; 69*ebd848c1SDavid du Colombier 70*ebd848c1SDavid du Colombier void *aux; 71*ebd848c1SDavid du Colombier int (*read)(Amlio *io, void *data, int len, int off); 72*ebd848c1SDavid du Colombier int (*write)(Amlio *io, void *data, int len, int off); 73*ebd848c1SDavid du Colombier }; 74*ebd848c1SDavid du Colombier 75*ebd848c1SDavid du Colombier extern int amlmapio(Amlio *io); 76*ebd848c1SDavid du Colombier extern void amlunmapio(Amlio *io); 77