Suggestion: Instead of using a `ThreadStatus`, use this:

    union ThreadStatus {
        BitField<0, 1, u32> running;
        BitField<1, 1, u32> ready;
        BitField<2, 1, u32> wait;
        BitField<3, 1, u32> suspend;
        BitField<4, 1, u32> dormant;
        BitField<5, 1, u32> dead;

        BitField<2, 2, u32> waitsuspend;
    };
    ThreadStatus Thread::status;