• Ricardo Neri's avatar
    x86/insn-eval: Compute linear address in several utility functions · 70e57c0f
    Ricardo Neri authored
    Computing a linear address involves several steps. The first step is to
    compute the effective address. This requires determining the addressing
    mode in use and perform arithmetic operations on the operands. Plus, each
    addressing mode has special cases that must be handled.
    
    Once the effective address is known, the base address of the applicable
    segment is added to obtain the linear address.
    
    Clearly, this is too much work for a single function. Instead, handle each
    addressing mode in a separate utility function. This improves readability
    and gives us the opportunity to handler errors better.
    
    At the moment, arithmetic to compute the effective address uses 64-byte
    variables. Thus, limit support to 64-bit addresses.
    
    While reworking the function insn_get_addr_ref(), the variable addr_offset
    is renamed as regoff to reflect its actual use (i.e., offset, from the
    base of pt_regs, of the register used as operand).
    Suggested-by: default avatarBorislav Petkov <bp@suse.de>
    Signed-off-by: default avatarRicardo Neri <ricardo.neri-calderon@linux.intel.com>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Adam Buchbinder <adam.buchbinder@gmail.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chen Yucong <slaoub@gmail.com>
    Cc: Chris Metcalf <cmetcalf@mellanox.com>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Lorenzo Stoakes <lstoakes@gmail.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qiaowei Ren <qiaowei.ren@intel.com>
    Cc: Ravi V. Shankar <ravi.v.shankar@intel.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Thomas Garnier <thgarnie@google.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: ricardo.neri@intel.com
    Link: http://lkml.kernel.org/r/1509935277-22138-2-git-send-email-ricardo.neri-calderon@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    70e57c0f
insn-eval.c 27.2 KB