Inline assembly correctness (especially __volatile__)
Your use of volatile appears to be correct, but I think you should do a couple of things for safety:


Add a clobber constraint for the flags (AKA "condition codes") to ckAsmSetEFlag. I believe this is "cc" for x86 machines.
Add clobber constraints for CR0 and CR3 to ckSetCr0 and ckSetCr3, respectively. [edit] This appears to be impossible with GCC. Not sure if this is a problem or not.[/edit]


While GCC's inline assembly syntax is very powerful, it can be horribly unintuitive. Since you're writing a kernel and messing with control registers, you really should be checking the assembly listings for every module you compile, to verify that the compiler is honouring your intentions.