Genode 16.08 nova.iso rebooting on real Core 2 Duo after relocating modules

Christian Helmuth christian.helmuth at ...1...
Fri Sep 23 10:47:46 CEST 2016


Hello Paul,

I like the approach of narrowing the issue with 'while(1);' and
suggest to go further (see below).

On Thu, Sep 22, 2016 at 10:02:51PM -0400, Paul Dufresne wrote:
> /****
> extern "C" INIT REGPARM (1)
> void init (mword mbi)
> {
> 
>     // Setup 0-page and 1-page
>     memset (reinterpret_cast<void *>(&PAGE_0),  0,  PAGE_SIZE);
>     memset (reinterpret_cast<void *>(&PAGE_1), ~0u, PAGE_SIZE);
> 
> //    Console::print ("paul1");
>     for (void (**func)() = &CTORS_G; func != &CTORS_E; (*func++)()) ;
> while(1);
> ****/

I'd move the 'while(1);' into the for loop like follows.

    enum { STOP_AT = 0U };
    unsigned i = 0;
    for (void (**func)() = &CTORS_C; func != &CTORS_G; ) {
        if (i == STOP_AT) while (1) ; ;
        (*func++)();
        ++i;
    }

In my case the ctors table has only 2 entries.

Greets
-- 
Christian Helmuth
Genode Labs

https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · /ˈdʒiː.nəʊd/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth




More information about the users mailing list