Finished fault_callback().
However, discovered that the kernel doesn't take care itself when USER/SUPERVISOR is wrong by itself...
I need to change the fault callback location and several parts of the callback, to take care of it.
Because this should require a huge change, I'm commiting what I've done thus far.