2N/A/* Code for managing symbols and pointers in efiemu */ 2N/A * GRUB -- GRand Unified Bootloader 2N/A * Copyright (C) 2009 Free Software Foundation, Inc. 2N/A * GRUB is free software: you can redistribute it and/or modify 2N/A * it under the terms of the GNU General Public License as published by 2N/A * the Free Software Foundation, either version 3 of the License, or 2N/A * (at your option) any later version. 2N/A * GRUB is distributed in the hope that it will be useful, 2N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of 2N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2N/A * GNU General Public License for more details. 2N/A * You should have received a copy of the GNU General Public License 2N/A/* Announce that the module will need NUM allocators */ 2N/A/* Because of deferred memory allocation all the relocators have to be 2N/A announced during phase 1*/ 2N/A "symbols have already been allocated");
2N/A "can't request negative symbols");
2N/A/* Resolve the symbol name NAME and set HANDLE and OFF accordingly */ 2N/A/* Register symbol named NAME in memory handle HANDLE at offset OFF */ 2N/A/* Go from phase 1 to phase 2. Must be called before similar function in mm.c */ 2N/A/* Write value (pointer to memory PLUS_HANDLE) 2N/A - (pointer to memory MINUS_HANDLE) + VALUE to ADDR assuming that the 2N/A size SIZE bytes. If PTV_NEEDED is 1 then announce it to runtime that this 2N/A value needs to be recomputed before going to virtual mode 2N/A /* Announce relocator to runtime */ 2N/A "your module didn't declare efiemu " 2N/A " relocators correctly");
2N/A /* memset next value to zero to mark the end */ 2N/A /* Compute the value */ 2N/A /* Write the value */ 2N/A /* Ensure that we are called only once */ 2N/A /* Correct addresses using information supplied by grub */ 2N/A /* Compute correction */ 2N/A /* Apply correction */ 2N/A /* Recompute crc32 of system table and runtime services */