notaz.gp2x.de
/
warm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
only remove module if we inserted it
[warm.git]
/
module
/
warm_main.c
diff --git
a/module/warm_main.c
b/module/warm_main.c
index
21c54d4
..
bbbcd96
100644
(file)
--- a/
module/warm_main.c
+++ b/
module/warm_main.c
@@
-149,14
+149,16
@@
static int do_set_cb_virt(int in_cb, int is_set, u32 addr, u32 size)
u32 desc1, desc2;
u32 *pgtable, *cpt;
u32 start, end;
u32 desc1, desc2;
u32 *pgtable, *cpt;
u32 start, end;
+ u32 mask;
if (in_cb & WCB_C_BIT)
bits |= 8;
if (in_cb & WCB_B_BIT)
bits |= 4;
if (in_cb & WCB_C_BIT)
bits |= 8;
if (in_cb & WCB_B_BIT)
bits |= 4;
- size += addr & (PAGE_SIZE - 1);
- size = ALIGN(size, PAGE_SIZE);
+ mask = PAGE_SIZE - 1;
+ size += addr & mask;
+ size = (size + mask) & ~mask;
addr &= ~(PAGE_SIZE - 1);
start = addr;
addr &= ~(PAGE_SIZE - 1);
start = addr;
@@
-221,6
+223,7
@@
static int do_virt2phys(unsigned long *_addr)
case 3: /* fine table */
cpt = __va(desc1 & 0xfffff000);
desc2 = cpt[(addr >> 10) & 0x3ff];
case 3: /* fine table */
cpt = __va(desc1 & 0xfffff000);
desc2 = cpt[(addr >> 10) & 0x3ff];
+ break;
default:
return -EINVAL;
}
default:
return -EINVAL;
}
@@
-228,13
+231,13
@@
static int do_virt2phys(unsigned long *_addr)
switch (desc2 & 3) {
case 1: /* large page */
switch (desc2 & 3) {
case 1: /* large page */
- *_addr = (desc2 &
0xffff0000
) | (addr & 0xffff);
+ *_addr = (desc2 &
~0xffff
) | (addr & 0xffff);
break;
case 2: /* small page */
break;
case 2: /* small page */
- *_addr = (desc2 &
0xfffff000
) | (addr & 0x0fff);
+ *_addr = (desc2 &
~0x0fff
) | (addr & 0x0fff);
break;
case 3: /* tiny page */
break;
case 3: /* tiny page */
- *_addr = (desc2 &
0xfffffc00
) | (addr & 0x03ff);
+ *_addr = (desc2 &
~0x03ff
) | (addr & 0x03ff);
break;
default:
return -EINVAL;
break;
default:
return -EINVAL;