Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 536 → Rev 537

/shark/trunk/drivers/linuxc26/linuxcomp.c
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);