[OpenBIOS] [PATCH] ppc: force target CPU

Programmingkid programmingkidx at gmail.com
Mon Jan 25 20:17:35 CET 2016


On Jan 25, 2016, at 12:25 PM, Laurent Vivier wrote:

> 
> 
> Le 25/01/2016 18:08, BALATON Zoltan a écrit :
>> On Mon, 25 Jan 2016, Laurent Vivier wrote:
>>>>>>> $ ./config/scripts/switch-arch ppc64
>>>>>>> Configuring OpenBIOS on ppc64 for ppc64
>>>>>>> Initializing build tree
>>>>>>> /home/laurent/Projects/openbios/obj-ppc64...ok.
>>>>>>> Creating target config.mak...ok.
>>>>>>> Creating target rules.mak...ok.
>>>>>>> Creating config files...ok.
>>>>>>> [laurent at pmacg5-1 openbios]$ make
>>>>>>> Building OpenBIOS for ppc64
>>>>>>> Building...
>>>>>>> error:
>>>>>>> HOSTCC host/kernel/dict.o
>>>>>>> HOSTCC host/kernel/bootstrap.o
>>>>>>> HOSTCC host/kernel/forth.o
>>>>>>> HOSTCC host/kernel/stack.o
>>>>>>> HOSTCC forthstrap
>>>>>>> GEN   bootstrap.dict
>>>>>>> panic: segmentation violation at 0x87a1062c
>>>>>>> dict=0x3fff87a10010 here=0x3fff87a10638(dict+0x628)
>>>>>>> pc=0x0(dict+0x785efff0)
>>>>>>> dstackcnt=0 rstackcnt=0 instruction=deadbeef
>>>>>>> dstack: 0x0
>>>>>>> rstack: 0x0
>>>>>>> Writing dictionary core file
>>>>>>> rules.mak:69: recipe for target 'bootstrap.dict' failed
>>>>>>> make[1]: *** [bootstrap.dict] Error 1
>>>>>>> make[1]: Leaving directory
>>>>>>> '/home/laurent/Projects/openbios/obj-ppc64'
>>>>>>> Makefile:19: recipe for target 'build' failed
>>>>>>> make: *** [build] Error 1
>> 
>> Does running 'make V=1' reveal more errors? Or maybe you could check
>> bootstrap.dict-console.log or some other console.log files if they are
>> created for some more clues whay it fails.
>> 
> 
> There isn't more detail with V=1
> 
> With gdb:
> Program received signal SIGSEGV, Segmentation fault.
> findword (s1=0x10007b80 "(semis)")
>    at /home/laurent/Projects/openbios/kernel/dict.c:118
> 118			tmplfa = read_ucell(cell2pointer(tmplfa));
> 
> (gdb) whatis tmplfa
> type = ucell
> (gdb) whatis ucell
> type = uint32_t
> 
> and in include/kernel/stack.h:
> 
> #ifdef NATIVE_BITWIDTH_EQUALS_HOST_BITWIDTH
> 
> static inline ucell pointer2cell(const void* x)
> {
>    return (ucell)(uintptr_t)x;
> }
> 
> static inline void* cell2pointer(ucell x)
> {
>    return (void*)(uintptr_t)x;
> }
> 
> #endif
> 
> So I guess using an uint32_t to store a pointer on a 64bit machine can
> cause some troubles.
> 
> I have no "include/arch/ppc64/types.h", is that normal ?

I think we just found the problem. It looks like we need this file for the ppc64 target.

The include/arch/amd64/types.h file could be used as a template for the include/arch/ppc64/types.h file. Actually you can get away with copying and pasting the file since nothing in it is amd64 specific. 






More information about the OpenBIOS mailing list