17bb09086SDavid du Colombier /* 27bb09086SDavid du Colombier * running the l2 cache as write-back and using cached memory for 37bb09086SDavid du Colombier * usb data structures yields spurious errors such as 47bb09086SDavid du Colombier * 57bb09086SDavid du Colombier * qhintr: td 0x60ee3d80 csw 0x8824a error 0x48 transaction error 67bb09086SDavid du Colombier * 77bb09086SDavid du Colombier * from usbehci. so, at least for now, we will use uncached memory until 87bb09086SDavid du Colombier * we sort out the write-back problems. 97bb09086SDavid du Colombier */ 107bb09086SDavid du Colombier #define free ucfree 11*436938c0SDavid du Colombier #define malloc myucalloc 12*436938c0SDavid du Colombier #define mallocz ucallocz 13*436938c0SDavid du Colombier #define smalloc myucalloc 147bb09086SDavid du Colombier #define xspanalloc ucallocalign 157bb09086SDavid du Colombier 168e32b400SDavid du Colombier #define allocb ucallocb 178e32b400SDavid du Colombier #define iallocb uciallocb 188e32b400SDavid du Colombier #define freeb ucfreeb 198e32b400SDavid du Colombier 207bb09086SDavid du Colombier static void * ucallocz(uint n,int)217bb09086SDavid du Colombierucallocz(uint n, int) 227bb09086SDavid du Colombier { 237bb09086SDavid du Colombier char *p = ucalloc(n); 247bb09086SDavid du Colombier 257bb09086SDavid du Colombier if (p) 267bb09086SDavid du Colombier memset(p, 0, n); 277bb09086SDavid du Colombier else 287bb09086SDavid du Colombier panic("ucalloc: out of memory"); 297bb09086SDavid du Colombier return p; 307bb09086SDavid du Colombier } 317bb09086SDavid du Colombier 327bb09086SDavid du Colombier static void * myucalloc(uint n)337bb09086SDavid du Colombiermyucalloc(uint n) 347bb09086SDavid du Colombier { 357bb09086SDavid du Colombier return ucallocz(n, 1); 367bb09086SDavid du Colombier } 37