-
-
Save heatd/a2c61e208924277b316e6ed7ebe561bc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Dump of assembler code for function kmem_cache_alloc(slab_cache*, unsigned int): | |
0xffffffff811005f0 <+0>: push %rbp | |
0xffffffff811005f1 <+1>: mov %rsp,%rbp | |
0xffffffff811005f4 <+4>: push %r15 | |
0xffffffff811005f6 <+6>: push %r14 | |
0xffffffff811005f8 <+8>: mov %esi,%r14d | |
0xffffffff811005fb <+11>: push %r13 | |
0xffffffff811005fd <+13>: push %r12 | |
0xffffffff811005ff <+15>: push %rbx | |
0xffffffff81100600 <+16>: mov %rdi,%rbx | |
0xffffffff81100603 <+19>: sub $0x38,%rsp | |
0xffffffff81100607 <+23>: mov %gs:0x28,%rax | |
0xffffffff81100610 <+32>: mov %rax,-0x38(%rbp) | |
0xffffffff81100614 <+36>: xor %eax,%eax | |
0xffffffff81100616 <+38>: testb $0x4,0x90(%rdi) | |
0xffffffff8110061d <+45>: jne 0xffffffff811006e0 <kmem_cache_alloc(slab_cache*, unsigned int)+240> | |
0xffffffff81100623 <+51>: incq %gs:0x158 | |
0xffffffff8110062c <+60>: mov %gs:0x68,%edx | |
0xffffffff81100634 <+68>: mov %edx,%edx | |
0xffffffff81100636 <+70>: mov %rdx,%rax | |
0xffffffff81100639 <+73>: shl $0x4,%rax | |
0xffffffff8110063d <+77>: add %rdx,%rax | |
0xffffffff81100640 <+80>: shl $0x6,%rax | |
0xffffffff81100644 <+84>: movl $0x1,0x4c4(%rdi,%rax,1) | |
0xffffffff8110064f <+95>: lea 0xc0(%rdi,%rax,1),%r15 | |
0xffffffff81100657 <+103>: mov 0x4c0(%rdi,%rax,1),%r13d | |
0xffffffff8110065f <+111>: test %r13d,%r13d | |
0xffffffff81100662 <+114>: je 0xffffffff81100710 <kmem_cache_alloc(slab_cache*, unsigned int)+288> | |
0xffffffff81100668 <+120>: mov 0x400(%r15),%eax | |
0xffffffff8110066f <+127>: sub $0x1,%eax | |
0xffffffff81100672 <+130>: mov %eax,0x400(%r15) | |
0xffffffff81100679 <+137>: cltq | |
0xffffffff8110067b <+139>: mov (%r15,%rax,8),%r12 | |
0xffffffff8110067f <+143>: movl $0x0,0x8(%r12) | |
0xffffffff81100688 <+152>: movl $0x0,0x404(%r15) | |
0xffffffff81100693 <+163>: decq %gs:0x158 | |
0xffffffff8110069c <+172>: mov %gs:0x158,%rax | |
0xffffffff811006a5 <+181>: test %rax,%rax | |
0xffffffff811006a8 <+184>: je 0xffffffff81100798 <kmem_cache_alloc(slab_cache*, unsigned int)+424> | |
0xffffffff811006ae <+190>: mov -0x38(%rbp),%rax | |
0xffffffff811006b2 <+194>: sub %gs:0x28,%rax | |
0xffffffff811006bb <+203>: jne 0xffffffff811009c8 <kmem_cache_alloc(slab_cache*, unsigned int)+984> | |
0xffffffff811006c1 <+209>: add $0x38,%rsp | |
0xffffffff811006c5 <+213>: mov %r12,%rax | |
0xffffffff811006c8 <+216>: pop %rbx | |
0xffffffff811006c9 <+217>: pop %r12 | |
0xffffffff811006cb <+219>: pop %r13 | |
0xffffffff811006cd <+221>: pop %r14 | |
0xffffffff811006cf <+223>: pop %r15 | |
0xffffffff811006d1 <+225>: pop %rbp | |
0xffffffff811006d2 <+226>: jmp 0xffffffff810a0200 <__x86_return_thunk> | |
0xffffffff811006d7 <+231>: nopw 0x0(%rax,%rax,1) | |
0xffffffff811006e0 <+240>: mov -0x38(%rbp),%rax | |
0xffffffff811006e4 <+244>: sub %gs:0x28,%rax | |
0xffffffff811006ed <+253>: jne 0xffffffff811009c8 <kmem_cache_alloc(slab_cache*, unsigned int)+984> | |
0xffffffff811006f3 <+259>: add $0x38,%rsp | |
0xffffffff811006f7 <+263>: pop %rbx | |
0xffffffff811006f8 <+264>: pop %r12 | |
0xffffffff811006fa <+266>: pop %r13 | |
0xffffffff811006fc <+268>: pop %r14 | |
0xffffffff811006fe <+270>: pop %r15 | |
0xffffffff81100700 <+272>: pop %rbp | |
0xffffffff81100701 <+273>: jmp 0xffffffff81100460 <_Z23kmem_cache_alloc_nopcpuP10slab_cachej> | |
0xffffffff81100706 <+278>: cs nopw 0x0(%rax,%rax,1) | |
0xffffffff81100710 <+288>: lea -0x48(%rbp),%rax | |
0xffffffff81100714 <+292>: lea 0x94(%rdi),%r12 | |
0xffffffff8110071b <+299>: mov %rax,-0x48(%rbp) | |
0xffffffff8110071f <+303>: mov %rax,-0x40(%rbp) | |
0xffffffff81100723 <+307>: mov %r12,-0x60(%rbp) | |
0xffffffff81100727 <+311>: incq %gs:0x158 | |
0xffffffff81100730 <+320>: mov %r12,%rdi | |
0xffffffff81100733 <+323>: call 0xffffffff81020a30 <__spin_lock(spinlock*)> | |
0xffffffff81100738 <+328>: mov %r15,%rsi | |
0xffffffff8110073b <+331>: mov %rbx,%rdi | |
0xffffffff8110073e <+334>: call 0xffffffff810ff5e0 <kmem_cache_refill_mag_noalloc(slab_cache*, slab_cache_percpu_context*)> | |
0xffffffff81100743 <+339>: mov %r12,%rdi | |
0xffffffff81100746 <+342>: mov %eax,-0x54(%rbp) | |
0xffffffff81100749 <+345>: call 0xffffffff81020a50 <__spin_unlock(spinlock*)> | |
0xffffffff8110074e <+350>: decq %gs:0x158 | |
0xffffffff81100757 <+359>: mov %gs:0x158,%rax | |
0xffffffff81100760 <+368>: test %rax,%rax | |
0xffffffff81100763 <+371>: je 0xffffffff81100979 <kmem_cache_alloc(slab_cache*, unsigned int)+905> | |
0xffffffff81100769 <+377>: mov -0x54(%rbp),%ecx | |
0xffffffff8110076c <+380>: test %ecx,%ecx | |
0xffffffff8110076e <+382>: jne 0xffffffff811007b8 <kmem_cache_alloc(slab_cache*, unsigned int)+456> | |
0xffffffff81100770 <+384>: mov %gs:0x68,%edx | |
0xffffffff81100778 <+392>: mov %edx,%edx | |
0xffffffff8110077a <+394>: mov %rdx,%rax | |
0xffffffff8110077d <+397>: shl $0x4,%rax | |
0xffffffff81100781 <+401>: add %rdx,%rax | |
0xffffffff81100784 <+404>: shl $0x6,%rax | |
0xffffffff81100788 <+408>: lea 0xc0(%rbx,%rax,1),%r15 | |
0xffffffff81100790 <+416>: jmp 0xffffffff81100668 <kmem_cache_alloc(slab_cache*, unsigned int)+120> | |
0xffffffff81100795 <+421>: nopl (%rax) | |
0xffffffff81100798 <+424>: pushf | |
0xffffffff81100799 <+425>: pop %rax | |
0xffffffff8110079a <+426>: test $0x2,%ah | |
0xffffffff8110079d <+429>: je 0xffffffff811006ae <kmem_cache_alloc(slab_cache*, unsigned int)+190> | |
0xffffffff811007a3 <+435>: mov $0x1,%edi | |
0xffffffff811007a8 <+440>: call 0xffffffff81092110 <_Z20sched_handle_preemptb> | |
0xffffffff811007ad <+445>: jmp 0xffffffff811006ae <kmem_cache_alloc(slab_cache*, unsigned int)+190> | |
0xffffffff811007b2 <+450>: nopw 0x0(%rax,%rax,1) | |
0xffffffff811007b8 <+456>: movl $0x0,0x404(%r15) | |
0xffffffff811007c3 <+467>: decq %gs:0x158 | |
0xffffffff811007cc <+476>: mov %gs:0x158,%rax | |
0xffffffff811007d5 <+485>: test %rax,%rax | |
0xffffffff811007d8 <+488>: je 0xffffffff81100993 <kmem_cache_alloc(slab_cache*, unsigned int)+931> | |
0xffffffff811007de <+494>: mov -0x54(%rbp),%edx | |
0xffffffff811007e1 <+497>: test %edx,%edx | |
0xffffffff811007e3 <+499>: jg 0xffffffff81100823 <kmem_cache_alloc(slab_cache*, unsigned int)+563> | |
0xffffffff811007e5 <+501>: jmp 0xffffffff811009ad <kmem_cache_alloc(slab_cache*, unsigned int)+957> | |
0xffffffff811007ea <+506>: nopw 0x0(%rax,%rax,1) | |
0xffffffff811007f0 <+512>: lea 0x18(%rax),%rdx | |
0xffffffff811007f4 <+516>: mov -0x48(%rbp),%rax | |
0xffffffff811007f8 <+520>: lea -0x48(%rbp),%rcx | |
0xffffffff811007fc <+524>: add $0x1,%r13d | |
0xffffffff81100800 <+528>: mov %rcx,0x20(%r12) | |
0xffffffff81100805 <+533>: and $0xfffffbff,%r14d | |
0xffffffff8110080c <+540>: mov %rax,0x18(%r12) | |
0xffffffff81100811 <+545>: mov %rdx,-0x48(%rbp) | |
0xffffffff81100815 <+549>: mov %rdx,0x8(%rax) | |
0xffffffff81100819 <+553>: cmp %r13d,-0x54(%rbp) | |
0xffffffff8110081d <+557>: je 0xffffffff81100938 <kmem_cache_alloc(slab_cache*, unsigned int)+840> | |
0xffffffff81100823 <+563>: mov %r14d,%esi | |
0xffffffff81100826 <+566>: mov %rbx,%rdi | |
0xffffffff81100829 <+569>: call 0xffffffff811000b0 <kmem_cache_create_slab(slab_cache*, unsigned int, bool)> | |
0xffffffff8110082e <+574>: mov %rax,%r12 | |
0xffffffff81100831 <+577>: test %rax,%rax | |
0xffffffff81100834 <+580>: jne 0xffffffff811007f0 <kmem_cache_alloc(slab_cache*, unsigned int)+512> | |
0xffffffff81100836 <+582>: test %r13d,%r13d | |
0xffffffff81100839 <+585>: je 0xffffffff81100941 <kmem_cache_alloc(slab_cache*, unsigned int)+849> | |
0xffffffff8110083f <+591>: movslq %r13d,%r15 | |
0xffffffff81100842 <+594>: incq %gs:0x158 | |
0xffffffff8110084b <+603>: mov %gs:0x68,%r12d | |
0xffffffff81100854 <+612>: mov %r12d,%r12d | |
0xffffffff81100857 <+615>: mov %r12,%rax | |
0xffffffff8110085a <+618>: shl $0x4,%rax | |
0xffffffff8110085e <+622>: add %r12,%rax | |
0xffffffff81100861 <+625>: shl $0x6,%rax | |
0xffffffff81100865 <+629>: movl $0x1,0x4c4(%rbx,%rax,1) | |
0xffffffff81100870 <+640>: lea 0xc0(%rbx,%rax,1),%r13 | |
0xffffffff81100878 <+648>: incq %gs:0x158 | |
0xffffffff81100881 <+657>: mov -0x60(%rbp),%rdi | |
0xffffffff81100885 <+661>: call 0xffffffff81020a30 <__spin_lock(spinlock*)> | |
0xffffffff8110088a <+666>: mov -0x40(%rbp),%rax | |
0xffffffff8110088e <+670>: lea -0x48(%rbp),%rcx | |
0xffffffff81100892 <+674>: cmp %rcx,%rax | |
0xffffffff81100895 <+677>: je 0xffffffff811008b2 <kmem_cache_alloc(slab_cache*, unsigned int)+706> | |
0xffffffff81100897 <+679>: mov 0x18(%rbx),%rdx | |
0xffffffff8110089b <+683>: mov -0x48(%rbp),%rcx | |
0xffffffff8110089f <+687>: lea 0x18(%rbx),%rsi | |
0xffffffff811008a3 <+691>: mov %rsi,0x8(%rcx) | |
0xffffffff811008a7 <+695>: mov %rcx,0x18(%rbx) | |
0xffffffff811008ab <+699>: mov %rdx,(%rax) | |
0xffffffff811008ae <+702>: mov %rax,0x8(%rdx) | |
0xffffffff811008b2 <+706>: add %r15,0x70(%rbx) | |
0xffffffff811008b6 <+710>: mov %r13,%rsi | |
0xffffffff811008b9 <+713>: mov %rbx,%rdi | |
0xffffffff811008bc <+716>: call 0xffffffff810ff5e0 <kmem_cache_refill_mag_noalloc(slab_cache*, slab_cache_percpu_context*)> | |
0xffffffff811008c1 <+721>: mov %r12,%rax | |
0xffffffff811008c4 <+724>: shl $0x4,%rax | |
0xffffffff811008c8 <+728>: add %r12,%rax | |
0xffffffff811008cb <+731>: shl $0x6,%rax | |
0xffffffff811008cf <+735>: mov 0x4c0(%rbx,%rax,1),%eax | |
0xffffffff811008d6 <+742>: test %eax,%eax | |
0xffffffff811008d8 <+744>: jle 0xffffffff811009cd <kmem_cache_alloc(slab_cache*, unsigned int)+989> | |
0xffffffff811008de <+750>: mov -0x60(%rbp),%rdi | |
0xffffffff811008e2 <+754>: call 0xffffffff81020a50 <__spin_unlock(spinlock*)> | |
0xffffffff811008e7 <+759>: decq %gs:0x158 | |
0xffffffff811008f0 <+768>: mov %gs:0x158,%rax | |
0xffffffff811008f9 <+777>: test %rax,%rax | |
0xffffffff811008fc <+780>: jne 0xffffffff81100770 <kmem_cache_alloc(slab_cache*, unsigned int)+384> | |
0xffffffff81100902 <+786>: pushf | |
0xffffffff81100903 <+787>: pop %rax | |
0xffffffff81100904 <+788>: test $0x2,%ah | |
0xffffffff81100907 <+791>: je 0xffffffff81100770 <kmem_cache_alloc(slab_cache*, unsigned int)+384> | |
0xffffffff8110090d <+797>: mov $0x1,%edi | |
0xffffffff81100912 <+802>: call 0xffffffff81092110 <_Z20sched_handle_preemptb> | |
0xffffffff81100917 <+807>: mov %gs:0x68,%eax | |
0xffffffff8110091f <+815>: mov %eax,%eax | |
0xffffffff81100921 <+817>: imul $0x440,%rax,%rax | |
0xffffffff81100928 <+824>: lea 0xc0(%rbx,%rax,1),%r15 | |
0xffffffff81100930 <+832>: jmp 0xffffffff81100668 <kmem_cache_alloc(slab_cache*, unsigned int)+120> | |
0xffffffff81100935 <+837>: nopl (%rax) | |
0xffffffff81100938 <+840>: movslq -0x54(%rbp),%r15 | |
0xffffffff8110093c <+844>: jmp 0xffffffff81100842 <kmem_cache_alloc(slab_cache*, unsigned int)+594> | |
0xffffffff81100941 <+849>: incq %gs:0x158 | |
0xffffffff8110094a <+858>: mov %gs:0x68,%eax | |
0xffffffff81100952 <+866>: decq %gs:0x158 | |
0xffffffff8110095b <+875>: mov %gs:0x158,%rax | |
0xffffffff81100964 <+884>: test %rax,%rax | |
0xffffffff81100967 <+887>: je 0xffffffff811009b5 <kmem_cache_alloc(slab_cache*, unsigned int)+965> | |
0xffffffff81100969 <+889>: call 0xffffffff81016610 <__errno_location()> | |
0xffffffff8110096e <+894>: movl $0xc,(%rax) | |
0xffffffff81100974 <+900>: jmp 0xffffffff811006ae <kmem_cache_alloc(slab_cache*, unsigned int)+190> | |
0xffffffff81100979 <+905>: pushf | |
0xffffffff8110097a <+906>: pop %rax | |
0xffffffff8110097b <+907>: test $0x2,%ah | |
0xffffffff8110097e <+910>: je 0xffffffff81100769 <kmem_cache_alloc(slab_cache*, unsigned int)+377> | |
0xffffffff81100984 <+916>: mov $0x1,%edi | |
0xffffffff81100989 <+921>: call 0xffffffff81092110 <_Z20sched_handle_preemptb> | |
0xffffffff8110098e <+926>: jmp 0xffffffff81100769 <kmem_cache_alloc(slab_cache*, unsigned int)+377> | |
0xffffffff81100993 <+931>: pushf | |
0xffffffff81100994 <+932>: pop %rax | |
0xffffffff81100995 <+933>: test $0x2,%ah | |
0xffffffff81100998 <+936>: je 0xffffffff811007de <kmem_cache_alloc(slab_cache*, unsigned int)+494> | |
0xffffffff8110099e <+942>: mov $0x1,%edi | |
0xffffffff811009a3 <+947>: call 0xffffffff81092110 <_Z20sched_handle_preemptb> | |
0xffffffff811009a8 <+952>: jmp 0xffffffff811007de <kmem_cache_alloc(slab_cache*, unsigned int)+494> | |
0xffffffff811009ad <+957>: xor %r15d,%r15d | |
0xffffffff811009b0 <+960>: jmp 0xffffffff81100842 <kmem_cache_alloc(slab_cache*, unsigned int)+594> | |
0xffffffff811009b5 <+965>: pushf | |
0xffffffff811009b6 <+966>: pop %rax | |
0xffffffff811009b7 <+967>: test $0x2,%ah | |
0xffffffff811009ba <+970>: je 0xffffffff81100969 <kmem_cache_alloc(slab_cache*, unsigned int)+889> | |
0xffffffff811009bc <+972>: mov $0x1,%edi | |
0xffffffff811009c1 <+977>: call 0xffffffff81092110 <_Z20sched_handle_preemptb> | |
0xffffffff811009c6 <+982>: jmp 0xffffffff81100969 <kmem_cache_alloc(slab_cache*, unsigned int)+889> | |
0xffffffff811009c8 <+984>: call 0xffffffff81024840 <__stack_chk_fail()> | |
0xffffffff811009cd <+989>: mov $0xffffffff81116f29,%rcx | |
0xffffffff811009d4 <+996>: mov $0x318,%edx | |
0xffffffff811009d9 <+1001>: mov $0xffffffff81116e75,%rsi | |
0xffffffff811009e0 <+1008>: mov $0xffffffff81116f45,%rdi | |
0xffffffff811009e7 <+1015>: call 0xffffffff810165e0 <__assert_fail(char const*, char const*, int, char const*)> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment