16,6 → 16,8 |
#include <linux/tty.h> |
#include <asm/setup.h> |
|
#define memory_barrier __asm__("" ::: "memory") |
|
extern unsigned long intr_count; |
extern int activeInt; |
|
252,9 → 254,14 |
|
ll_gettime(TIME_NEW,&s); |
ADDTIMESPEC(&t,&s,&e); |
|
memory_barrier; |
|
while(TIMESPEC_A_LT_B(&s,&e)) { |
memory_barrier; |
ll_gettime(TIME_NEW,&s); |
} |
|
while(TIMESPEC_A_LT_B(&s,&e)) ll_gettime(TIME_NEW,&s); |
|
} |
|
return 0; |
277,13 → 284,21 |
ll_gettime(TIME_NEW,&e); |
ADDUSEC2TIMESPEC(usecs,&e); |
|
memory_barrier; |
|
ll_gettime(TIME_NEW,&s); |
while(TIMESPEC_A_LT_B(&s,&e)) ll_gettime(TIME_NEW,&s); |
while(TIMESPEC_A_LT_B(&s,&e)) { |
memory_barrier; |
ll_gettime(TIME_NEW,&s); |
} |
|
} |
|
} |
|
void * vmalloc_32(size_t size); |
void vfree_32(void *ptr); |
|
void *dma_alloc_coherent(struct device *dev, size_t size, |
dma_addr_t *dma_handle, int gfp) |
{ |
293,7 → 308,7 |
|
if (dev == NULL || (*dev->dma_mask < 0xffffffff)) |
gfp |= GFP_DMA; |
ret = (void *)malloc(size); |
ret = (void *)vmalloc_32(size); |
|
if (ret != NULL) { |
memset(ret, 0, size); |
305,7 → 320,7 |
void dma_free_coherent(struct device *dev, size_t size, |
void *vaddr, dma_addr_t dma_handle) |
{ |
free((void *)dma_handle); |
vfree_32((void *)dma_handle); |
} |
|
void init_completion(struct completion *x) { |
345,6 → 360,28 |
|
} |
|
void * vmalloc_32(size_t size) |
{ |
void *mem; |
unsigned long diff; |
|
mem = malloc(size+8); |
|
diff = (unsigned long)((((unsigned long)mem/4)+1)*4-(unsigned long)mem); |
|
*(unsigned long *)(mem+diff) = (unsigned long)diff; |
|
return (mem+diff+4); |
|
} |
|
void vfree_32(void *ptr) |
{ |
|
free(ptr-4-*(unsigned long *)(ptr-4)); |
|
} |
|
void vfree(void *addr) { |
|
return free(addr); |