kernel build up for a (powerpc) 36b addr with non-zero mem offset

  • Thread starter Thread starter towenyu
  • Start date Start date
T

towenyu

I'm now working on building up a linux kernel for a powerpc system, which is a 32bit system, except it has a 36 bit address bus! Here is the problem, I need to run the linux kernel on a non-zero memory physical address, and the physical start address is 0x4 C000 0000, which is larger than 4G.

First I try to write my memory part of the dts file like bellowing:

memory {
reg= <0x4 0xC0000000 0x01000000>; //address with 16M range
device_type= "memory";
};

But in this way I got enomous compiling error with other pre-defined values, like CONFIG_KERNEL_START, CONFIG_PHYSICAL_START, CONFIG_PAGE_OFFSET, etc.

Always failing above way, I tried to use manual TLB entry to map 0x4 C000 0000 to 0x0, then write my memory part of the dts file like bellowing:

memory {
reg= <0x0 0x00000000 0x01000000>; //address with 16M range
device_type= "memory";
};

In this way, almost whole kernel can run up until it calls an init file of a sh; system crashs immediately and all the TLB entries are cleared...have no clue to trace or debug.

I still thought the right way is to config actual physical addr in building up kernel, but I'm still struggling on this part.

Great appreciation if anyone could give me a hint.

Continue reading...
 
Back
Top