mirror of
				https://github.com/ipxe/ipxe.git
				synced 2025-10-31 08:21:32 +01:00 
			
		
		
		
	[loong64] Add CPU sleeping API for EFI LoongArch64
Signed-off-by: Xiaotian Wu <wuxiaotian@loongson.cn> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
		
							parent
							
								
									0c67a3632d
								
							
						
					
					
						commit
						6d98e0ca47
					
				| @ -20,6 +20,7 @@ CFLAGS		+= -fshort-wchar | ||||
| 
 | ||||
| # LoongArch64-specific directories containing source files
 | ||||
| SRCDIRS		+= arch/loong64/core | ||||
| SRCDIRS		+= arch/loong64/interface/efi | ||||
| 
 | ||||
| # Include platform-specific Makefile
 | ||||
| MAKEDEPS	+= arch/loong64/Makefile.$(PLATFORM) | ||||
|  | ||||
| @ -9,4 +9,6 @@ | ||||
| 
 | ||||
| FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | ||||
| 
 | ||||
| #endif /* _BITS_MAP_H */ | ||||
| #include <ipxe/efi/efiloong64_nap.h> | ||||
| 
 | ||||
| #endif /* _BITS_NAP_H */ | ||||
|  | ||||
							
								
								
									
										18
									
								
								src/arch/loong64/include/ipxe/efi/efiloong64_nap.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/arch/loong64/include/ipxe/efi/efiloong64_nap.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| #ifndef _IPXE_EFILOONG64_NAP_H | ||||
| #define _IPXE_EFILOONG64_NAP_H | ||||
| 
 | ||||
| /** @file
 | ||||
|  * | ||||
|  * EFI CPU sleeping | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | ||||
| 
 | ||||
| #ifdef NAP_EFILOONG64 | ||||
| #define NAP_PREFIX_efiloong64 | ||||
| #else | ||||
| #define NAP_PREFIX_efiloong64 __efiloong64_ | ||||
| #endif | ||||
| 
 | ||||
| #endif /* _IPXE_EFILOONG64_NAP_H */ | ||||
							
								
								
									
										53
									
								
								src/arch/loong64/interface/efi/efiloong64_nap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/arch/loong64/interface/efi/efiloong64_nap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| /*
 | ||||
|  * Copyright (c) 2023, Xiaotian Wu <wuxiaotian@loongson.cn> | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License as | ||||
|  * published by the Free Software Foundation; either version 2 of the | ||||
|  * License, or any later version. | ||||
|  * | ||||
|  * This program 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 this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||||
|  * 02110-1301, USA. | ||||
|  * | ||||
|  * You can also choose to distribute this program under the terms of | ||||
|  * the Unmodified Binary Distribution Licence (as given in the file | ||||
|  * COPYING.UBDL), provided that you have satisfied its requirements. | ||||
|  */ | ||||
| 
 | ||||
| FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); | ||||
| 
 | ||||
| #include <ipxe/nap.h> | ||||
| #include <ipxe/efi/efi.h> | ||||
| 
 | ||||
| /** @file
 | ||||
|  * | ||||
|  * iPXE CPU sleeping API for EFI | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  * Sleep until next interrupt | ||||
|  * | ||||
|  */ | ||||
| static void efiloong64_cpu_nap ( void ) { | ||||
| 	/*
 | ||||
| 	 * I can't find any EFI API that allows us to put the CPU to | ||||
| 	 * sleep.  The CpuSleep() function is defined in CpuLib.h, but | ||||
| 	 * isn't part of any exposed protocol so we have no way to | ||||
| 	 * call it. | ||||
| 	 * | ||||
| 	 * The EFI shell doesn't seem to bother sleeping the CPU; it | ||||
| 	 * just sits there idly burning power. | ||||
| 	 * | ||||
| 	 */ | ||||
| 	__asm__ __volatile__ ( "idle 0" ); | ||||
| } | ||||
| 
 | ||||
| PROVIDE_NAP ( efiloong64, cpu_nap, efiloong64_cpu_nap ); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user