00001 /* 00002 * Copyright (C) 2008 Michael Brown <mbrown@fensystems.co.uk>. 00003 * 00004 * This program is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU General Public License as 00006 * published by the Free Software Foundation; either version 2 of the 00007 * License, or any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, but 00010 * WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program; if not, write to the Free Software 00016 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00017 */ 00018 00019 FILE_LICENCE ( GPL2_OR_LATER ); 00020 00021 #include <gpxe/nap.h> 00022 #include <gpxe/efi/efi.h> 00023 00024 /** @file 00025 * 00026 * gPXE CPU sleeping API for EFI 00027 * 00028 */ 00029 00030 /** 00031 * Sleep until next interrupt 00032 * 00033 */ 00034 static void efix86_cpu_nap ( void ) { 00035 /* 00036 * I can't find any EFI API that allows us to put the CPU to 00037 * sleep. The CpuSleep() function is defined in CpuLib.h, but 00038 * isn't part of any exposed protocol so we have no way to 00039 * call it. 00040 * 00041 * The EFI shell doesn't seem to bother sleeping the CPU; it 00042 * just sits there idly burning power. 00043 * 00044 */ 00045 __asm__ __volatile__ ( "hlt" ); 00046 } 00047 00048 PROVIDE_NAP ( efix86, cpu_nap, efix86_cpu_nap );
1.5.7.1