X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_symbol.asm;fp=palacios%2Fsrc%2Fpalacios%2Fvmm_symbol.asm;h=4c6166c5b8fb5fdbc946f0e7a2f9c1d23449718b;hp=0000000000000000000000000000000000000000;hb=ddc16b0737cf58f7aa90a69c6652cdf4090aec51;hpb=626595465a2c6987606a6bc697df65130ad8c2d3 diff --git a/palacios/src/palacios/vmm_symbol.asm b/palacios/src/palacios/vmm_symbol.asm new file mode 100644 index 0000000..4c6166c --- /dev/null +++ b/palacios/src/palacios/vmm_symbol.asm @@ -0,0 +1,68 @@ +; -*- fundamental -*- +;; +;; Symbol mangling macros +;; Copyright (c) 2001, David H. Hovemeyer +;; +;; Permission is hereby granted, free of charge, to any person +;; obtaining a copy of this software and associated documentation +;; files (the "Software"), to deal in the Software without restriction, +;; including without limitation the rights to use, copy, modify, merge, +;; publish, distribute, sublicense, and/or sell copies of the Software, +;; and to permit persons to whom the Software is furnished to do so, +;; subject to the following conditions: +;; +;; The above copyright notice and this permission notice shall be +;; included in all copies or substantial portions of the Software. +;; +;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +;; ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +;; TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +;; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +;; SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +;; FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +;; AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +;; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +;; THE USE OR OTHER DEALINGS IN THE SOFTWARE. +;; + + + +; This file defines macros for dealing with externally-visible +; symbols that must be mangled for some object file formats. +; For example, PECOFF requires a leading underscore, while +; ELF does not. + +; EXPORT defines a symbol as global +; IMPORT references a symbol defined in another module + +; Thanks to Christopher Giese for providing the NASM macros +; (thus saving me hours of frustration). + +%ifndef __VMM_SYMBOL_ASM +%define __VMM_SYMBOL_ASM + +%ifdef NEED_UNDERSCORE + +%macro EXPORT 1 +[GLOBAL _%1] +%define %1 _%1 +%endmacro + +%macro IMPORT 1 +[EXTERN _%1] +%define %1 _%1 +%endmacro + +%else + +%macro EXPORT 1 +[GLOBAL %1] +%endmacro + +%macro IMPORT 1 +[EXTERN %1] +%endmacro + +%endif + +%endif