[GSoC2012] Problem with understanding low-level mmu
Hesham Moustafa
heshamelmatary at gmail.com
Sun Jun 17 22:06:18 UTC 2012
hi,
I have created initial implementation for two interfaces of Arena manager
that make use of mmu, my project will depend on ARM architecture, but
currently i am working on high-level stage only and wanna test my
high-level code. A previous MMU project implemented low-level code for MMU
support for powerpc but i have no experience with powerpc and i need a
little help.
i wanna understand this piece of code which reside at
libcpu/powerpc/mpc6xx/mmu/pagetable_.c
83 static int translate_access_attr(uint32_t attr, int * wimg, int * pp){
84 int temp;
85 temp = attr&0x0f;
86 if( temp == 0x05 )
87 *pp= _PPC_MMU_ACCESS_READ_ONLY;
88 else if( temp == 0x0c )
89 *pp= _PPC_MMU_ACCESS_SUPERVISOR_ONLY;
90 else if( temp == 0x0d )
91 *pp= _PPC_MMU_ACCESS_SUPERVISOR_WRITE_ONLY;
92 else if( temp == 0x0f )
93 *pp= _PPC_MMU_ACCESS_NO_PROT;
94
95 temp = (attr&0xff00)>8;
96 *wimg = ((temp&1)<2) | ((temp&2)<2) | ((temp&4)>1) |((temp&8)>3) ;
97
98 return 0;
99 }
I think the low-byte of attr is only have value and the rest are zeros (
because permissions are uint8_t )
so that like is confusing me
temp = (attr&0xff00)>8;
how attr bits are represented and wimg ??
thanks,
Hesham
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20120618/5f773ac1/attachment.html>
More information about the devel
mailing list