context_x86.cc revision bdb0391258abc54bf77c676e36847d28a783bfe5
1bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers// Copyright 2011 Google Inc. All Rights Reserved. 2bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers 3bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers#include "context_x86.h" 4bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers 5bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogersnamespace art { 6bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogersnamespace x86 { 7bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers 8bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogersvoid X86Context::DoLongJump() { 9bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers // Load ESP and EIP 10bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers asm volatile ( "movl %%esp, %0\n" 11bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers "jmp *%1" 12bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers : // output 13bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers : "m"(esp_), "r"(&eip_) // input 14bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers :); // clobber 15bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers} 16bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers 17bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers} // namespace x86 18bdb0391258abc54bf77c676e36847d28a783bfe5Ian Rogers} // namespace art 19