On Fri, Jul 26, 2013 at 06:28:46PM -0500, Scott Wood wrote: > On 07/04/2013 07:54:09 AM, Kevin Hao wrote: > >This is based on the codes in the head_44x.S. Since we always align to > >256M before mapping the PAGE_OFFSET for a relocatable kernel, we also > >change the init tlb map to 256M size. > > > >Signed-off-by: Kevin Hao <haoke...@gmail.com> > >--- > >v2: Move the code to set kernstart_addr and virt_phys_offset to a > >c function. > > So we can expand it easily later. > > > >Hi Scott, > > > >I still use the 256M align for the init tlb as in v1 for the > >following reasons: > > * This should be the most possible case in reality. > > There is no "most possible case". It's either possible (and > supported) or not. And having less than 256M is definitely > possible. The 8540 reference board has 64M. > > AMP scenarios that start on a 64M-aligned but not 256M-aligned > address are also something I've done. > > > * This is just for very early booting code and should not be a > >big issue > > if the first tlb entry shrink to a less size later. > > "We can probably get away with it most of the time" is not a very > good justification. What's wrong with the suggestion I made last > time, of basing the size on the alignment of the address?
OK, I will use the 64M align. > > >+ /* > >+ * We have the runtime (virutal) address of our base. > >+ * We calculate our shift of offset from a 256M page. > >+ * We could map the 256M page we belong to at PAGE_OFFSET and > >+ * get going from there. > >+ */ > >+ lis r4,KERNELBASE@h > >+ ori r4,r4,KERNELBASE@l > >+ rlwinm r6,r25,0,0xfffffff /* r6 = PHYS_START % 256M */ > >+ rlwinm r5,r4,0,0xfffffff /* r5 = KERNELBASE % 256M */ > >+ subf r3,r5,r6 /* r3 = r6 - r5 */ > >+ add r3,r4,r3 /* Required Virutal Address */ > > s/Virutal/Virtual/ Fixed. Thanks, Kevin > > -Scott
pgphD5bME8MxB.pgp
Description: PGP signature
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev