Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
There may be additional problems in code that you didn't post. I suggest examining the CPU state at the first exception that leads to the triple fault using an emulator or virtual machine with built-in debugging tools (such as QEMU or Bochs).
// DATA
PushEntry(0xFFFF00000092C700);
// CODE
PushEntry(0x0000000000BAAF00);
That is the wrong way around. And the code segment has the wrong DPL. For kernel data, use 0x00af92000000ffff and for kernel code use 0x00af9a000000ffff. For user code and user data, replace the 9s with Fs. The only other segment I have in the GDT is the TSS. And my code for that is:
Where tssp is the pointer to the TSS as an integer, and struct tss is the data structure I'm using for it. Ensure that TSSU_DESC is exactly one larger than TSS_DESC (you need them in that order).