/* Load runtime image of EFIemu. Functions common to 32/64-bit mode */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2009 Free Software Foundation, Inc.
*
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GRUB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
*/
/* Are we in 32 or 64-bit mode?*/
/* Runtime ELF file */
static void *efiemu_core = 0;
/* Linked list of segments */
/* equivalent to sizeof (grub_efi_uintn_t) but taking the mode into account*/
int
grub_efiemu_sizeof_uintn_t (void)
{
if (grub_efiemu_mode == GRUB_EFIEMU32)
return 4;
if (grub_efiemu_mode == GRUB_EFIEMU64)
return 8;
return 0;
}
/* Check the header and set mode */
static grub_err_t
{
/* Check the magic numbers. */
{
*mode = GRUB_EFIEMU32;
return GRUB_ERR_NONE;
}
{
*mode = GRUB_EFIEMU64;
return GRUB_ERR_NONE;
}
}
/* Unload segments */
static int
{
{
}
return 1;
}
{
switch (grub_efiemu_mode)
{
case GRUB_EFIEMU32:
break;
case GRUB_EFIEMU64:
break;
default:
break;
}
efiemu_core = 0;
efiemu_segments = 0;
return GRUB_ERR_NONE;
}
/* Load runtime file and do some initial preparations */
{
efiemu_core = 0;
if (! efiemu_core)
return grub_errno;
!= (int) efiemu_core_size)
{
efiemu_core = 0;
return grub_errno;
}
{
efiemu_core = 0;
return GRUB_ERR_BAD_MODULE;
}
switch (grub_efiemu_mode)
{
case GRUB_EFIEMU32:
&efiemu_segments)))
{
efiemu_core = 0;
return err;
}
break;
case GRUB_EFIEMU64:
&efiemu_segments)))
{
efiemu_core = 0;
return err;
}
break;
default:
}
return GRUB_ERR_NONE;
}
grub_efiemu_loadcore_load (void)
{
switch (grub_efiemu_mode)
{
case GRUB_EFIEMU32:
return err;
case GRUB_EFIEMU64:
return err;
default:
}
}