Microblaze noMMU/MMU merge
Hi All,
I would like to say your opinion about putting together Microblaze MMU arch to noMMU version.
In C code will be #ifdef CONFIG_MMU ... #endif or #ifndef.
Here is proposal for headers. The similar style is used in m68k but I would like to have the same code
for both archs in main file.
#ifndef _ASM_MICROBLAZE_PAGE_H
#define _ASM_MICROBLAZE_PAGE_H
code for noMMU and MMU which is the same for both.
#ifdef __uClinux__
#include "page_no.h" -> noMMU specific
#else
#include "page_mm.h"-> MMU specific
#endif
#endif /* _ASM_MICROBLAZE_PAGE_H */
Thanks for your suggestion,
Michal
Signature · 3 lines
Michal Simek, Ing. (M.Eng) PetaLogix - Linux Solutions for a Reconfigurable World w: www.petalogix.com p: +61-7-30090663,+42-0-721842854 f: +61-7-30090663
Quoted 12 lines · Michal Simek
I would like to say your opinion about putting together Microblaze MMU arch to noMMU version.
In C code will be #ifdef
CONFIG_MMU... #endif or #ifndef.Here is proposal for headers. The similar style is used in m68k but I would like to have the same code
for both archs in main file.#ifndef
_ASM_MICROBLAZE_PAGE_H
#define_ASM_MICROBLAZE_PAGE_H
Quoted 9 lines
code for noMMU and MMU which is the same for both.
#ifdef
__uClinux__
#include "page_no.h" -> noMMU specific
#else
#include "page_mm.h"-> MMU specific
#endif
#endif /*_ASM_MICROBLAZE_PAGE_H*/
There's really not that much code that you need to change in order to support nommu, as long as you designed your architecture port to be fairly compartmentalized. Take a look at some of the other architectures in-tree that support both in the same architecture backend. sh was the first to support a configurable CONFIG_MMU during the 2.5 days, but there are others now as well (though I don't know how actively the others are maintained -- nommu people tend to be even worse (!) than general embedded people at hanging around).
In addition to sh, at least frv, m32r, and arm support a configurable CONFIG_MMU these days. xtensa seems to have just recently joined the club, too.
Quoted 14 lines · Michal Simek
Hi All,
I would like to say your opinion about putting together Microblaze MMU arch to noMMU version.
In C code will be #ifdef
CONFIG_MMU... #endif or #ifndef.Here is proposal for headers. The similar style is used in m68k but I would like to have the same code
for both archs in main file.#ifndef
_ASM_MICROBLAZE_PAGE_H
#define_ASM_MICROBLAZE_PAGE_H
Quoted 8 lines
code for noMMU and MMU which is the same for both.
#ifdef
__uClinux__
#include "page_no.h" -> noMMU specific
#else
#include "page_mm.h"-> MMU specific
#endif
#endif /*_ASM_MICROBLAZE_PAGE_H*/
Use dedicated header files for nommu / mmu only when it is really necessary.
In headers that are _NOT_ exported you can use CONFIG_MMU to test if you are building for MMU or not - which is more readable.
The reason why you cannot use CONFIG_MMU in exported headers are that CONFIG_MMU is not valid in the userspace headers (not set/unset).
In the optimal case you have no conditionals in the exported haders and then just use CONFIG_MMU all over.
Sam
Quoted 28 lines · Sam Ravnborg
Quoted 14 lines · Michal Simek
Hi All,
I would like to say your opinion about putting together Microblaze MMU arch to noMMU version.
In C code will be #ifdef
CONFIG_MMU... #endif or #ifndef.Here is proposal for headers. The similar style is used in m68k but I would like to have the same code
for both archs in main file.#ifndef
_ASM_MICROBLAZE_PAGE_H
#define_ASM_MICROBLAZE_PAGE_HQuoted 9 lines
code for noMMU and MMU which is the same for both.
#ifdef
__uClinux__
#include "page_no.h" -> noMMU specific
#else
#include "page_mm.h"-> MMU specific
#endif
#endif /*_ASM_MICROBLAZE_PAGE_H*/Use dedicated header files for nommu / mmu only when it is really necessary.
Quoted 9 lines
In headers that are _NOT_ exported you can use
CONFIG_MMUto test if you are building for MMU or not - which is more readable.The reason why you cannot use
CONFIG_MMUin exported headers are thatCONFIG_MMUis not valid in the userspace headers (not set/unset).In the optimal case you have no conditionals in the exported haders and then just use
CONFIG_MMUall over.
ok. I'll create first proposal and you can look if is ok or not.
Thanks.
Michal
Quoted 3 lines
Sam
Signature · 3 lines
Michal Simek, Ing. (M.Eng) PetaLogix - Linux Solutions for a Reconfigurable World w: www.petalogix.com p: +61-7-30090663,+42-0-721842854 f: +61-7-30090663
Hi Michal,
Quoted 12 lines · Michal Simek
I would like to say your opinion about putting together Microblaze MMU arch to noMMU version.
In C code will be #ifdef
CONFIG_MMU... #endif or #ifndef.Here is proposal for headers. The similar style is used in m68k but I would like to have the same code
for both archs in main file.#ifndef
_ASM_MICROBLAZE_PAGE_H
#define_ASM_MICROBLAZE_PAGE_H
Quoted 8 lines
code for noMMU and MMU which is the same for both.
#ifdef
__uClinux__
#include "page_no.h" -> noMMU specific
#else
#include "page_mm.h"-> MMU specific
#endif
#endif /*_ASM_MICROBLAZE_PAGE_H*/
Breaking up the files that way is really only temporary. They will eventually all be merged back to single files (I have probably reworked about 60% of them so far). There ends up being very little difference.
I would keep single files if you could.
Regards
Greg
------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: [email protected] SnapGear Group, McAfee PHONE: +61 7 3435 2888 825 Stanley St, FAX: +61 7 3891 3630 Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com