All pastes #975180 Raw Edit

Untitled

public c v1 · immutable
·published 2008-04-07 10:49 UTC
rendered paste body
/* old function */static int __init memsize(void){	u32 size = (64 << 20);	volatile u32 *addr = (u32 *)KSEG1ADDR(0x14000000 + size - 4);	u32 *kernel_end = (u32 *)KSEG1ADDR(CPHYSADDR((u32)&_end));	while (addr > kernel_end) {		*addr = (u32)addr;		size >>= 1;		addr -= size >> 2;	}	do {		addr += size >> 2;		if (*addr != (u32)addr)			break;		size <<= 1;	} while (size < (64 << 20));	return size;}/* new one without volatile */int __init memsize(void){	u32 size = (64 << 20);	u32 *addr = (u32 *)KSEG1ADDR(0x14000000 + size - 4);	u32 *kernel_end = (u32 *)KSEG1ADDR(CPHYSADDR((u32)&_end));	u32 *tmpaddr = addr;	while (tmpaddr > kernel_end) {		*tmpaddr = (u32)tmpaddr;		size >>= 1;		tmpaddr -= size >> 2;	}	do {		tmpaddr += size >> 2;		if (*tmpaddr != (u32)tmpaddr)			break;		size <<= 1;	} while (size < (64 << 20));	writel(tmpaddr, &addr);	return size;}/* the diff Index: target/linux/ar7/files/arch/mips/ar7/memory.c===================================================================--- target/linux/ar7/files/arch/mips/ar7/memory.c	(revisione 10748)+++ target/linux/ar7/files/arch/mips/ar7/memory.c	(copia locale)@@ -37,22 +37,25 @@ static int __init memsize(void) { 	u32 size = (64 << 20);-	volatile u32 *addr = (u32 *)KSEG1ADDR(0x14000000 + size - 4);+	u32 *addr = (u32 *)KSEG1ADDR(0x14000000 + size - 4); 	u32 *kernel_end = (u32 *)KSEG1ADDR(CPHYSADDR((u32)&_end));+	u32 *tmpaddr = addr; -	while (addr > kernel_end) {-		*addr = (u32)addr;+	while (tmpaddr > kernel_end) {+		*tmpaddr = (u32)tmpaddr; 		size >>= 1;-		addr -= size >> 2;+		tmpaddr -= size >> 2; 	}  	do {-		addr += size >> 2;-		if (*addr != (u32)addr)+		tmpaddr += size >> 2;+		if (*tmpaddr != (u32)tmpaddr) 			break; 		size <<= 1; 	} while (size < (64 << 20)); +	writel(tmpaddr, &addr);+ 	return size; } */