2016-09-23 14:20 GMT-04:00 Christian Helmuth <christian.helmuth@...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 "a, 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 "a, 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.