
{"id":2930,"date":"2010-07-20T01:20:20","date_gmt":"2010-07-19T19:50:20","guid":{"rendered":"http:\/\/www.jeffrin.in\/?p=2074"},"modified":"2010-07-20T01:20:20","modified_gmt":"2010-07-19T19:50:20","slug":"fast-transition-to-system-call","status":"publish","type":"post","link":"https:\/\/www.trueangle.org\/index.php\/2010\/07\/20\/fast-transition-to-system-call\/","title":{"rendered":"SYSENTER instruction..  Pentium II.."},"content":{"rendered":"<h3>| sysenter instruction | <\/h3>\n<pre>\n(gdb) disass\nDump of assembler code for function __kernel_vsyscall:\n   0xb780b414 :\tpush   %ecx\n   0xb780b415 :\tpush   %edx\n   0xb780b416 :\tpush   %ebp\n   0xb780b417 :\tmov    %esp,%ebp\n   0xb780b419 :\tsysenter\n   0xb780b41b :\tnop\n   0xb780b41c :\tnop\n   0xb780b41d :\tnop\n   0xb780b41e :\tnop\n   0xb780b41f :\tnop\n   0xb780b420 :\tnop\n   0xb780b421 :\tnop\n   0xb780b422 :\tjmp    0xb780b417 \n=&gt; 0xb780b424 :\tpop    %ebp\n   0xb780b425 :\tpop    %edx\n   0xb780b426 :\tpop    %ecx\n   0xb780b427 :\tret\nEnd of assembler dump.\n(gdb)\n<h4> 0xb780b419 :\tsysenter <\/h4>\n<\/pre>\n<pre>\nThe SYSENTER instruction is part of the \"Fast System Call\" facility\nintroduced on the Pentium(R) II processor. The\nSYSENTER instruction is optimized to provide the maximum\nperformance for transitions to protection ring 0 (CPL  0).\nThe SYSENTER instruction sets the following registers according to\nvalues specified by the operating system in certain model-specific\nregisters. CS register set to the value of (SYSENTER_CS_MSR) EIP\nregister set to the value of  (SYSENTER_EIP_MSR) SS register set\nto the sum of (8 plus the value in SYSENTER_CS_MSR) ESP register set to the value of (SYSENTER_ESP_MSR) The processor\ndoes not save user stack or return address information, and does\nnot save any registers.\n\nhttp:\/\/www.intel.com\/software\/products\/documentation\n\/vlin\/mergedprojects\/analyzer_ec\/mergedprojects\/reference\n_olh\/mergedprojects\/instructions\/instruct32_hh\/vc311.htm\n\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>| sysenter instruction | (gdb) disass Dump of assembler code for function __kernel_vsyscall: 0xb780b414 : push %ecx 0xb780b415 : push %edx 0xb780b416 : push %ebp 0xb780b417 : mov %esp,%ebp 0xb780b419 : sysenter 0xb780b41b : nop 0xb780b41c : nop 0xb780b41d : nop 0xb780b41e : nop 0xb780b41f : nop 0xb780b420 : nop 0xb780b421 : nop 0xb780b422 : &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.trueangle.org\/index.php\/2010\/07\/20\/fast-transition-to-system-call\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;SYSENTER instruction..  Pentium II..&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[22],"tags":[],"_links":{"self":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/posts\/2930"}],"collection":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/comments?post=2930"}],"version-history":[{"count":0,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/posts\/2930\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/media?parent=2930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/categories?post=2930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.trueangle.org\/index.php\/wp-json\/wp\/v2\/tags?post=2930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}