Skip to contentSkip to conversation

Microblaze noMMU/MMU merge

DISCUSSION Michal Simek 4 participants 5 messages Apr 21, 2009 Generic include/asm header files

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw
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.

#2 lore raw
In reply to Michal Simek
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

#3 lore raw
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_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 */

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_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.

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
#4 lore raw
In reply to Michal Simek

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