In the Intel Software Developer's Manual it states that "MOV CR* instructions, except for MOV CR8, are serializing instructions. MOV CR8 is not architecturally defined as a serializing instruction." Does this mean that it is not guaranteed that the task priority class will be changed on the next instruction?
This seems to be different from AMD. In their documentation it gives an example, "assume two sequential TPR loads are performed, in which a low value is first loaded into TPR and immediately followed by a load of a higher value. Any pending, lower-priority interrupt enabled by the first MOV CR8 is recognized between the two MOVs." It also states that no serializing instruction is required after loading the TPR.