2016-09-23 4:47 GMT-04:00 Christian Helmuth <christian.helm...@genode-labs.com>: > 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
With STOP_AT == 1 it hangs, With STOP_AT == 2 it reboots. I think I will mail you my hypervisor file (now compiled with STOP_AT == 1) in case you want to check it. ------------------------------------------------------------------------------ _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main