Paging

kmalloc() now allocates all memory in 4kb chunks. This probably causes a lot of internal fragmentation, but don't mind at this point. Also fixed some compiler warning in kmalloc

Paging itself is very basic, allocate a directory and a table to hold memory from 0 to 4Mb (is this identity paging, I'm not sure) and init paging. It is unknown if the code works or not. There is a triple fault after setting paging on in CR0, and it seems the exception handler doesn't work and all exceptions are double faults. Next up, proper exception handling.
Trying to fix a bug where a kmalloc(); printf("%d",i); cause i to change value. I honestly only have a vague idea of why this bug happens in the first place. This _probably_ breaks something else.
This commit has been made while learning to use git rebase --interactive and squashes to meld commits together. Let's see how it goes, we've already made one mistake..

two things are done in this commit:

1. Fixed an interrupt bug where.. interrupts simply didn't work correctly. Now we're able to raise a page fault when a page fault occurs. Mostly the commit is cosmetic changes, though. Done in desctables, isr, interrupts.s boot.s and so forth

2. Paging.
Paging can be enabled without a triple fault, and a page fault handler works. This is the beginning of a beautiful friendship.
Next step: figure out what a (kernel) heap is, allocate pages for the user mode, learn to associate virtual addresses with physical ones, and load a user program.
Beginnings of loading ELF binaries
+ a fix in fat_loadfile, now able to use memcpy()

note: remember to use unsigned char * instead unsigned int * when loading stuff from disk to memory
A simple loop program that can be used to test loading ELF binaries. Using interrupt 14h just to see what happens

Also includes a linker script for userland, and some hard codings in the Makefile. The makefile sucks, by the way.
a string buffer instead of a pointer to protect from overflows.