xref: /plan9/sys/src/9/omap/uncached.h (revision 436938c05685afd6a22a40ad955f1d0adb99ad97)
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 Colombier ucallocz(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 Colombier myucalloc(uint n)
347bb09086SDavid du Colombier {
357bb09086SDavid du Colombier 	return ucallocz(n, 1);
367bb09086SDavid du Colombier }
37