The TSS no longer needs to be unbusied before loading the task register, since the set_tss_desc macros set the system gate type to Available IA-32 TSS. This obscure, uncommented legacy code can now be removed for better readability and saves 20 bytes of code space. Here is a breakdown of __set_tss_desc + load_TR before and after. The doublefault TSS GDT setup has similar savings. - Zachary Amsden (zach@vmware.com) before: c01e0556: ba 80 66 1f c0 mov $0xc01f6680,%edx c01e055b: b8 e0 8f 1b c0 mov $0xc01b8fe0,%eax c01e0560: 66 c7 42 00 6b 20 movw $0x206b,0x0(%edx) c01e0566: 66 89 42 02 mov %ax,0x2(%edx) c01e056a: c1 c8 10 ror $0x10,%eax c01e056d: 88 42 04 mov %al,0x4(%edx) c01e0570: c6 42 05 89 movb $0x89,0x5(%edx) ^^ not busy TSS c01e0574: c6 42 06 00 movb $0x0,0x6(%edx) c01e0578: 88 62 07 mov %ah,0x7(%edx) c01e057b: c1 c8 10 ror $0x10,%eax c01e057e: 81 25 84 66 1f c0 ff andl $0xfffffdff,0xc01f6684 c01e0585: fd ff ff ^^ clear busy c01e0588: b8 80 00 00 00 mov $0x80,%eax c01e058d: 0f 00 d8 ltr %ax after: c01e0556: ba 80 66 1f c0 mov $0xc01f6680,%edx c01e055b: b8 e0 8f 1b c0 mov $0xc01b8fe0,%eax c01e0560: 66 c7 42 00 6b 20 movw $0x206b,0x0(%edx) c01e0566: 66 89 42 02 mov %ax,0x2(%edx) c01e056a: c1 c8 10 ror $0x10,%eax c01e056d: 88 42 04 mov %al,0x4(%edx) c01e0570: c6 42 05 89 movb $0x89,0x5(%edx) c01e0574: c6 42 06 00 movb $0x0,0x6(%edx) c01e0578: 88 62 07 mov %ah,0x7(%edx) c01e057b: c1 c8 10 ror $0x10,%eax c01e057e: b8 80 00 00 00 mov $0x80,%eax c01e0583: 0f 00 d8 ltr %ax