void page_kernel_only(int16_t page){
if(mode != KERNEL)
{
return;
}
page = page << 5;
page = page >> 5;
int16_t help = 8192;
help = help & page_table[page];
if(help == 0)
{
page_table[page] += 8192;
}
}
i get an "array subscript is below array bounds" warning and i dont know why, because a previous part of the code dont give me such a warning
void open_page(int16_t page){
if(mode != KERNEL)
{
return;
}
page = page << 5;
page = page >> 5;
int16_t help = 16384;
help = help & page_table[page];
if(help == 1)
{
return;
}
page_table[help] += 16384;
}
page = page << 5; page = page >> 5;What is the purpose of these two statements? Ifpage << 5overflows, the behavior is undefined. If it doesn't, the net result is thatpageis unchanged. If you're trying to clear the 5 low-order bits, you'd want to do the right shift followed by the left shift -- but a bitwise&would be a clearer way to do that.