char *p1 = 0x835a0000, *p2 = 0x875a0000; *p1 = 1; printf("p1 == %x\t*p1==%x\n", p1,*p1); *p2 = 2; printf("p2 == %x\t*p2==%x\n", p2,*p2); printf("p1 == %x\t*p1==%x\n", p1,*p1);
p1 == 835a0000 *p1==1p2 == 875a0000 *p2==2p1 == 835a0000 *p1==2
What are your page table entries for 0x835X,XXXX and 0x875X,XXXX?
...835: 33500c1e...875: 37500c1e...
Is it definitely a 128MB RAM device? Some memory controllers support "up to 128MB" via a number of chip selects but often use smaller physical RAM chips. (i.e. 2 64MB devices via 2 chip selects). It is not uncommon to fit less than the maximum RAM and then alias the address range by using multiple chip select lines to drive the same chip select pin. May not be true in your case, but seen it happen before, so could be worth checking.
We've got a single 128 Mb chip of Mobile DRAM on board.
Is that 128M bits (128Mb) or 128M bytes (128MB)?