Quote:
it just reboots (so there is no exception trown?)
No, I'm sure there is an exception thrown, but I guess that either your idt or your exception handler is not available.
If you activate paging, you have to make sure that not only your code is accessible, but also your gdt/idt and of course all isrs, and of course at the same addresses as before you started paging.
If I read your code right, you map the physical space between 0x00100000 and 0x004FFFFF to the virtual space 0x00000000 - 0x003FFFFF ... that means that none of your virtual addresses match the physical addresses. So the system can not find the idt and gdt any more, it can't even find your code because it searches at the same addresses as before you start paging.
[edit]After your paging works you should try to create an address space manager. You have 4 GB of address space ( independant of how much physical memory you have ) and I think you need to decide dynamically how to use it[/edit]