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 ------------------------------------------------------------------------------ _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main