==> /tmp/pcpu_demo.after.amd64.clang.disas <== ./usr/src/freebsd/amd64.amd64/sys/GENERIC/pcpu_demo.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 : 0: 55 pushq %rbp 1: 48 89 e5 movq %rsp, %rbp 4: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax d: 5d popq %rbp e: c3 retq f: 90 nop 0000000000000010 : 10: 55 pushq %rbp 11: 48 89 e5 movq %rsp, %rbp 14: 65 8b 04 25 3c 00 00 00 movl %gs:0x3c, %eax 1c: 5d popq %rbp 1d: c3 retq 1e: 66 90 nop 0000000000000020 : 20: 55 pushq %rbp 21: 48 89 e5 movq %rsp, %rbp 24: 65 01 3c 25 3c 00 00 00 addl %edi, %gs:0x3c 2c: 5d popq %rbp 2d: c3 retq 2e: 66 90 nop 0000000000000030 : 30: 55 pushq %rbp 31: 48 89 e5 movq %rsp, %rbp 34: 65 89 3c 25 3c 00 00 00 movl %edi, %gs:0x3c 3c: 5d popq %rbp 3d: c3 retq 3e: 66 90 nop 0000000000000040 : 40: 55 pushq %rbp 41: 48 89 e5 movq %rsp, %rbp 44: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 4d: 48 83 c0 3c addq $0x3c, %rax 51: 5d popq %rbp 52: c3 retq 53: 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:(%rax,%rax) 0000000000000060 : 60: 55 pushq %rbp 61: 48 89 e5 movq %rsp, %rbp 64: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 6d: 8b 40 3c movl 0x3c(%rax), %eax 70: 5d popq %rbp 71: c3 retq 72: 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:(%rax,%rax) 0000000000000080 : 80: 55 pushq %rbp 81: 48 89 e5 movq %rsp, %rbp 84: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 8d: 89 78 3c movl %edi, 0x3c(%rax) 90: 5d popq %rbp 91: c3 retq 92: 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:(%rax,%rax) 00000000000000a0 : a0: 55 pushq %rbp a1: 48 89 e5 movq %rsp, %rbp a4: 65 48 8b 04 25 00 00 00 00 movq %gs:0x0, %rax ad: 5d popq %rbp ae: c3 retq af: 90 nop 00000000000000b0 : b0: 55 pushq %rbp b1: 48 89 e5 movq %rsp, %rbp b4: 65 48 8b 04 25 00 00 00 00 movq %gs:0x0, %rax bd: 48 05 20 05 00 00 addq $0x520, %rax # imm = 0x520 c3: 5d popq %rbp c4: c3 retq ==> /tmp/pcpu_demo.after.amd64.gcc.disas <== ./gcc13/usr/src/freebsd/amd64.amd64/sys/GENERIC/pcpu_demo.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 : 0: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 9: c3 retq a: 66 0f 1f 44 00 00 nopw (%rax,%rax) 0000000000000010 : 10: 65 8b 04 25 3c 00 00 00 movl %gs:0x3c, %eax 18: c3 retq 19: 0f 1f 80 00 00 00 00 nopl (%rax) 0000000000000020 : 20: 65 01 3c 25 3c 00 00 00 addl %edi, %gs:0x3c 28: c3 retq 29: 0f 1f 80 00 00 00 00 nopl (%rax) 0000000000000030 : 30: 65 89 3c 25 3c 00 00 00 movl %edi, %gs:0x3c 38: c3 retq 39: 0f 1f 80 00 00 00 00 nopl (%rax) 0000000000000040 : 40: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 49: 48 83 c0 3c addq $0x3c, %rax 4d: c3 retq 4e: 66 90 nop 0000000000000050 : 50: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 59: 8b 40 3c movl 0x3c(%rax), %eax 5c: c3 retq 5d: 0f 1f 00 nopl (%rax) 0000000000000060 : 60: 65 48 8b 04 25 80 01 00 00 movq %gs:0x180, %rax 69: 89 78 3c movl %edi, 0x3c(%rax) 6c: c3 retq 6d: 0f 1f 00 nopl (%rax) 0000000000000070 : 70: 65 48 8b 04 25 00 00 00 00 movq %gs:0x0, %rax 79: c3 retq 7a: 66 0f 1f 44 00 00 nopw (%rax,%rax) 0000000000000080 : 80: 65 48 8b 04 25 00 00 00 00 movq %gs:0x0, %rax 89: 48 05 20 05 00 00 addq $0x520, %rax # imm = 0x520 8f: c3 retq ==> /tmp/pcpu_demo.after.i386.clang.disas <== ./usr/src/freebsd/i386.i386/sys/GENERIC/pcpu_demo.o: file format elf32-i386 Disassembly of section .text: 00000000 : 0: 55 pushl %ebp 1: 89 e5 movl %esp, %ebp 3: 64 a1 00 01 00 00 movl %fs:0x100, %eax 9: 5d popl %ebp a: c3 retl b: 90 nop c: 90 nop d: 90 nop e: 90 nop f: 90 nop 00000010 : 10: 55 pushl %ebp 11: 89 e5 movl %esp, %ebp 13: 64 a1 24 00 00 00 movl %fs:0x24, %eax 19: 5d popl %ebp 1a: c3 retl 1b: 90 nop 1c: 90 nop 1d: 90 nop 1e: 90 nop 1f: 90 nop 00000020 : 20: 55 pushl %ebp 21: 89 e5 movl %esp, %ebp 23: 8b 45 08 movl 0x8(%ebp), %eax 26: 64 01 05 24 00 00 00 addl %eax, %fs:0x24 2d: 5d popl %ebp 2e: c3 retl 2f: 90 nop 00000030 : 30: 55 pushl %ebp 31: 89 e5 movl %esp, %ebp 33: 8b 45 08 movl 0x8(%ebp), %eax 36: 64 a3 24 00 00 00 movl %eax, %fs:0x24 3c: 5d popl %ebp 3d: c3 retl 3e: 90 nop 3f: 90 nop 00000040 : 40: 55 pushl %ebp 41: 89 e5 movl %esp, %ebp 43: 64 a1 00 01 00 00 movl %fs:0x100, %eax 49: 83 c0 24 addl $0x24, %eax 4c: 5d popl %ebp 4d: c3 retl 4e: 90 nop 4f: 90 nop 00000050 : 50: 55 pushl %ebp 51: 89 e5 movl %esp, %ebp 53: 64 a1 00 01 00 00 movl %fs:0x100, %eax 59: 8b 40 24 movl 0x24(%eax), %eax 5c: 5d popl %ebp 5d: c3 retl 5e: 90 nop 5f: 90 nop 00000060 : 60: 55 pushl %ebp 61: 89 e5 movl %esp, %ebp 63: 8b 45 08 movl 0x8(%ebp), %eax 66: 64 8b 0d 00 01 00 00 movl %fs:0x100, %ecx 6d: 89 41 24 movl %eax, 0x24(%ecx) 70: 5d popl %ebp 71: c3 retl 72: 90 nop 73: 90 nop 74: 90 nop 75: 90 nop 76: 90 nop 77: 90 nop 78: 90 nop 79: 90 nop 7a: 90 nop 7b: 90 nop 7c: 90 nop 7d: 90 nop 7e: 90 nop 7f: 90 nop 00000080 : 80: 55 pushl %ebp 81: 89 e5 movl %esp, %ebp 83: 64 a1 00 00 00 00 movl %fs:0x0, %eax 89: 5d popl %ebp 8a: c3 retl 8b: 90 nop 8c: 90 nop 8d: 90 nop 8e: 90 nop 8f: 90 nop 00000090 : 90: 55 pushl %ebp 91: 89 e5 movl %esp, %ebp 93: 64 a1 10 00 00 00 movl %fs:0x10, %eax 99: 5d popl %ebp 9a: c3 retl ==> /tmp/pcpu_demo.after.i386.gcc.disas <== ./gcc13/usr/src/freebsd/i386.i386/sys/GENERIC/pcpu_demo.o: file format elf32-i386 Disassembly of section .text: 00000000 : 0: 64 a1 00 01 00 00 movl %fs:0x100, %eax 6: c3 retl 7: 8d b4 26 00 00 00 00 leal (%esi,%eiz), %esi e: 66 90 nop 00000010 : 10: 64 a1 24 00 00 00 movl %fs:0x24, %eax 16: c3 retl 17: 8d b4 26 00 00 00 00 leal (%esi,%eiz), %esi 1e: 66 90 nop 00000020 : 20: 55 pushl %ebp 21: 89 e5 movl %esp, %ebp 23: 8b 45 08 movl 0x8(%ebp), %eax 26: 64 01 05 24 00 00 00 addl %eax, %fs:0x24 2d: 5d popl %ebp 2e: c3 retl 2f: 90 nop 00000030 : 30: 55 pushl %ebp 31: 89 e5 movl %esp, %ebp 33: 8b 45 08 movl 0x8(%ebp), %eax 36: 64 a3 24 00 00 00 movl %eax, %fs:0x24 3c: 5d popl %ebp 3d: c3 retl 3e: 66 90 nop 00000040 : 40: 64 a1 00 01 00 00 movl %fs:0x100, %eax 46: 83 c0 24 addl $0x24, %eax 49: c3 retl 4a: 8d b6 00 00 00 00 leal (%esi), %esi 00000050 : 50: 64 a1 00 01 00 00 movl %fs:0x100, %eax 56: 8b 40 24 movl 0x24(%eax), %eax 59: c3 retl 5a: 8d b6 00 00 00 00 leal (%esi), %esi 00000060 : 60: 55 pushl %ebp 61: 89 e5 movl %esp, %ebp 63: 64 a1 00 01 00 00 movl %fs:0x100, %eax 69: 8b 55 08 movl 0x8(%ebp), %edx 6c: 89 50 24 movl %edx, 0x24(%eax) 6f: 5d popl %ebp 70: c3 retl 71: 8d b4 26 00 00 00 00 leal (%esi,%eiz), %esi 78: 8d b4 26 00 00 00 00 leal (%esi,%eiz), %esi 7f: 90 nop 00000080 : 80: 64 a1 00 00 00 00 movl %fs:0x0, %eax 86: c3 retl 87: 8d b4 26 00 00 00 00 leal (%esi,%eiz), %esi 8e: 66 90 nop 00000090 : 90: 64 a1 10 00 00 00 movl %fs:0x10, %eax 96: c3 retl