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

Paul Dufresne dufresnep at ...9...
Fri Sep 23 22:10:30 CEST 2016


2016-09-23 14:20 GMT-04:00 Christian Helmuth
<christian.helmuth at ...1...>:
...
> So your reboot is induced by Console_vga::Console_vga() in
> src/console_vga.cpp. You may now proceed with moving 'while(1);' into
> the constructor function.
...
Good!
So it seems to be that line in console_vga.cpp:
    Pd::kern.Space_mem::insert (Pd::kern.quota, HV_GLOBAL_FBUF, 0,
Hpt::HPT_NX | Hpt::HPT_G | Hpt::HPT_UC | Hpt::HPT_W | Hpt::HPT_P,
0xb9000);

I believe 0xb9000 is supposed to be text mode EGA/VGA page 2.
Anyway....

in include/space_mem.hpp: the insert become:
        ALWAYS_INLINE
        inline void insert (Quota &quota, mword virt, unsigned o,
mword attr, Paddr phys)
        {
            hpt.update (quota, virt, o, phys, attr);
        }
I am beginning to ask myself if I was not expecting the size of a
color text video page of 0x80x0x25 for
quota...

Hpt constructor seems to inherit from pte

pte.cpp have an update template:
template <typename P, typename E, unsigned L, unsigned B, bool F>
bool Pte<P,E,L,B,F>::update (Quota &quota, E v, mword o, E p, mword a, Type t)
{
    unsigned long l = o / B, n = 1UL << o % B, s;

    P *e = walk (quota, v, l, t == TYPE_UP);

    if (!e)
        return false;

    if (a) {
        p |= P::order (o % B) | (l ? P::PTE_S : 0) | a;
        s = 1UL << (l * B + PAGE_BITS);
    } else
        p = s = 0;

    bool flush_tlb = false;

    for (unsigned long i = 0; i < n; e[i].val = p, i++, p += s) {
***********************
I begin to feel lost... might try to put my while(1) in that but I
really not sure I am on the right trail.




More information about the users mailing list