summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2012-10-25 12:01:33 +0100
committerRussell King <rmk@arm.linux.org.uk>2012-10-25 12:14:24 +0100
commit2e67ed108763894e78221d99ed2e8e8b5b570199 (patch)
tree422c7364e6efd88eb0683147a7bf9fbb0745899b
parentcee66e4b54e8a9e8098052341f218642a3c2d43c (diff)
Make physical addresses 'unsigned long'
Rather than having physical addresses be a void * pointer, make them integer like; they're really just numbers because we can't ever dereference them and they certainly aren't pointer-like.
-rw-r--r--bmm_lib.c24
-rw-r--r--bmm_lib.h8
-rw-r--r--bmm_test.c14
3 files changed, 23 insertions, 23 deletions
diff --git a/bmm_lib.c b/bmm_lib.c
index c4d56f6..e39524d 100644
--- a/bmm_lib.c
+++ b/bmm_lib.c
@@ -104,7 +104,7 @@ void bmm_free(void *vaddr)
ioctl(bmm_fd, BMM_FREE, &io);
}
-void *bmm_attach(void *paddr, unsigned long len)
+void *bmm_attach(unsigned long paddr, unsigned long len)
{
void *vaddr;
@@ -114,7 +114,7 @@ void *bmm_attach(void *paddr, unsigned long len)
if(bmm_init() < 0)
return NULL;
- vaddr = mmap(0, len, PROT_READ | PROT_WRITE, MAP_SHARED, bmm_fd, (unsigned long)paddr);
+ vaddr = mmap(0, len, PROT_READ | PROT_WRITE, MAP_SHARED, bmm_fd, paddr);
return ((int)vaddr == -1) ? NULL : vaddr;
}
@@ -127,7 +127,7 @@ void bmm_detach(void *vaddr, unsigned long len)
munmap(vaddr, len);
}
-void *bmm_get_vaddr(void *paddr)
+void *bmm_get_vaddr(unsigned long paddr)
{
int ret;
ioctl_arg_t io;
@@ -135,7 +135,7 @@ void *bmm_get_vaddr(void *paddr)
if(bmm_init() < 0)
return NULL;
- io.input = (unsigned long)paddr;
+ io.input = paddr;
io.output = 0;
io.arg = 0;
ret = ioctl(bmm_fd, BMM_GET_VIRT_ADDR, &io);
@@ -145,13 +145,13 @@ void *bmm_get_vaddr(void *paddr)
return (void *)io.output;
}
-void *bmm_get_kern_paddr(void *vaddr, unsigned long size)
+unsigned long bmm_get_kern_paddr(void *vaddr, unsigned long size)
{
int ret;
ioctl_arg_t io;
if(bmm_init() < 0)
- return NULL;
+ return 0;
io.input = (unsigned long)vaddr;
io.length = (unsigned long)size;
@@ -159,27 +159,27 @@ void *bmm_get_kern_paddr(void *vaddr, unsigned long size)
io.arg = 0;
ret = ioctl(bmm_fd, BMM_GET_KERN_PHYS_ADDR, &io);
if(ret < 0)
- return NULL;
+ return 0;
- return (void *)io.output;
+ return io.output;
}
-void *bmm_get_paddr(void *vaddr)
+unsigned long bmm_get_paddr(void *vaddr)
{
int ret;
ioctl_arg_t io;
if(bmm_init() < 0)
- return NULL;
+ return 0;
io.input = (unsigned long)vaddr;
io.output = 0;
io.arg = 0;
ret = ioctl(bmm_fd,BMM_GET_PHYS_ADDR, &io);
if(ret < 0)
- return NULL;
+ return 0;
- return (void *)io.output;
+ return io.output;
}
unsigned long bmm_get_mem_size(void *vaddr)
diff --git a/bmm_lib.h b/bmm_lib.h
index 6190088..37dfe67 100644
--- a/bmm_lib.h
+++ b/bmm_lib.h
@@ -42,11 +42,11 @@ int bmm_init();
void bmm_exit();
void *bmm_malloc(unsigned long size, int attr);
void bmm_free(void *vaddr);
-void *bmm_attach(void *paddr, unsigned long len);
+void *bmm_attach(unsigned long paddr, unsigned long len);
void bmm_detach(void *vaddr, unsigned long len);
-void *bmm_get_vaddr(void *paddr);
-void *bmm_get_paddr(void *vaddr);
-void *bmm_get_kern_paddr(void *vaddr, unsigned long size);
+void *bmm_get_vaddr(unsigned long paddr);
+unsigned long bmm_get_paddr(void *vaddr);
+unsigned long bmm_get_kern_paddr(void *vaddr, unsigned long size);
int bmm_get_mem_attr(void *vaddr);
int bmm_set_mem_attr(void *vaddr, int attr); /* Not supported yet */
unsigned long bmm_get_mem_size(void *vaddr);
diff --git a/bmm_test.c b/bmm_test.c
index 34e4559..d897aaa 100644
--- a/bmm_test.c
+++ b/bmm_test.c
@@ -82,10 +82,10 @@ int test_bmm_malloc(unsigned long size, int attr)
return -1;
}
for(off = 0; off < size; off += 1024*1024){
- void *get_paddr = bmm_get_paddr(vaddr+off);
+ unsigned long get_paddr = bmm_get_paddr(vaddr+off);
void *get_vaddr = bmm_get_vaddr(get_paddr);
int get_attr = bmm_get_mem_attr(get_vaddr);
- printf("\toff = 0x%x, vaddr=0x%p, get_vaddr=0x%p, get_paddr=0x%p\n", off, vaddr+off, get_vaddr, get_paddr);
+ printf("\toff = 0x%x, vaddr=0x%p, get_vaddr=0x%p, get_paddr=0x%08lx\n", off, vaddr+off, get_vaddr, get_paddr);
printf("\tset_attr=0x%x, get_attr=0x%x\n", attr, get_attr);
if(vaddr+off != get_vaddr)
return -1;
@@ -103,7 +103,7 @@ int test_bmm_malloc(unsigned long size, int attr)
printf("\tbmm_get_free_space() return %ldKB %ldKB %ldKB\n",
free_size1/1024, free_size2/1024, free_size3/1024);
- return ((int)vaddr <= 0 ||
+ return (
allocated_size2 - allocated_size1 != size ||
allocated_size1 != allocated_size3 ||
free_size1 - free_size2 != size ||
@@ -157,8 +157,8 @@ int test_bmm_share(unsigned long size)
{
char *src;
char *dst;
- char *psrc;
- char *pdst;
+ unsigned long psrc;
+ unsigned long pdst;
unsigned long i;
unsigned long off, len;
unsigned long free_size1;
@@ -228,9 +228,9 @@ int test_bmm_share(unsigned long size)
pdst = bmm_get_paddr(dst);
if(pdst == psrc + off)
- printf("\t[%d] pdst(%p) == psrc(%p) + off(%lx)\n", pid, pdst, psrc, off);
+ printf("\t[%d] pdst(0x%08lx) == psrc(0x%08lx) + off(%lx)\n", pid, pdst, psrc, off);
else
- printf("\t[%d] Error: pdst(%p) != psrc(%p) + off(%lx)\n", pid, pdst, psrc, off);
+ printf("\t[%d] Error: pdst(0x%08lx) != psrc(0x%08lx) + off(%lx)\n", pid, pdst, psrc, off);
bmm_flush_cache(dst, BMM_DMA_FROM_DEVICE);
for(i=0; i<len; i++) {