Jump to content

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

Featured Replies

Posted

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...