forked from Bananymous/banan-os
				
			Kernel: Only compile lai for x86_64 targets
I will be dropping lai entirely soon. Once I get to writing AML interpreter.
This commit is contained in:
		
							parent
							
								
									2352c86048
								
							
						
					
					
						commit
						0424082e7b
					
				|  | @ -113,6 +113,13 @@ if("${BANAN_ARCH}" STREQUAL "x86_64") | ||||||
| 		arch/x86_64/Syscall.S | 		arch/x86_64/Syscall.S | ||||||
| 		arch/x86_64/Thread.S | 		arch/x86_64/Thread.S | ||||||
| 	) | 	) | ||||||
|  | 	file(GLOB_RECURSE LAI_SOURCES | ||||||
|  | 		lai/*.c | ||||||
|  | 	) | ||||||
|  | 	set(LAI_SOURCES | ||||||
|  | 		${LAI_SOURCES} | ||||||
|  | 		kernel/lai_host.cpp | ||||||
|  | 	) | ||||||
| elseif("${BANAN_ARCH}" STREQUAL "i386") | elseif("${BANAN_ARCH}" STREQUAL "i386") | ||||||
| 	set(KERNEL_SOURCES | 	set(KERNEL_SOURCES | ||||||
| 		${KERNEL_SOURCES} | 		${KERNEL_SOURCES} | ||||||
|  | @ -125,14 +132,6 @@ else() | ||||||
| 	message(FATAL_ERROR "unsupported architecure ${BANAN_ARCH}") | 	message(FATAL_ERROR "unsupported architecure ${BANAN_ARCH}") | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| file(GLOB_RECURSE LAI_SOURCES |  | ||||||
| 	lai/*.c |  | ||||||
| ) |  | ||||||
| set(LAI_SOURCES |  | ||||||
| 	${LAI_SOURCES} |  | ||||||
| 	kernel/lai_host.cpp |  | ||||||
| ) |  | ||||||
| 
 |  | ||||||
| set(BAN_SOURCES | set(BAN_SOURCES | ||||||
| 	../BAN/BAN/Assert.cpp | 	../BAN/BAN/Assert.cpp | ||||||
| 	../BAN/BAN/New.cpp | 	../BAN/BAN/New.cpp | ||||||
|  | @ -177,7 +176,7 @@ if(ENABLE_KERNEL_UBSAN) | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| if("${BANAN_ARCH}" STREQUAL "x86_64") | if("${BANAN_ARCH}" STREQUAL "x86_64") | ||||||
| 	target_compile_options(kernel PUBLIC -mcmodel=kernel -mno-red-zone -mno-mmx) | 	target_compile_options(kernel PUBLIC -mcmodel=kernel -mno-red-zone) | ||||||
| 	target_link_options(kernel PUBLIC LINKER:-z,max-page-size=4096) | 	target_link_options(kernel PUBLIC LINKER:-z,max-page-size=4096) | ||||||
| 	target_link_options(kernel PUBLIC LINKER:-T,${CMAKE_CURRENT_SOURCE_DIR}/arch/x86_64/linker.ld) | 	target_link_options(kernel PUBLIC LINKER:-T,${CMAKE_CURRENT_SOURCE_DIR}/arch/x86_64/linker.ld) | ||||||
| elseif("${BANAN_ARCH}" STREQUAL "i386") | elseif("${BANAN_ARCH}" STREQUAL "i386") | ||||||
|  |  | ||||||
|  | @ -31,7 +31,9 @@ namespace Kernel | ||||||
| 		if (s_instance == nullptr) | 		if (s_instance == nullptr) | ||||||
| 			return BAN::Error::from_errno(ENOMEM); | 			return BAN::Error::from_errno(ENOMEM); | ||||||
| 		TRY(s_instance->initialize_impl()); | 		TRY(s_instance->initialize_impl()); | ||||||
|  | #if ARCH(x86_64) | ||||||
| 		lai_create_namespace(); | 		lai_create_namespace(); | ||||||
|  | #endif | ||||||
| 		return {}; | 		return {}; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -93,7 +95,9 @@ namespace Kernel | ||||||
| 		const RSDP* rsdp = locate_rsdp(); | 		const RSDP* rsdp = locate_rsdp(); | ||||||
| 		if (rsdp == nullptr) | 		if (rsdp == nullptr) | ||||||
| 			return BAN::Error::from_error_code(ErrorCode::ACPI_NoRootSDT); | 			return BAN::Error::from_error_code(ErrorCode::ACPI_NoRootSDT); | ||||||
|  | #if ARCH(x86_64) | ||||||
| 		lai_set_acpi_revision(rsdp->revision); | 		lai_set_acpi_revision(rsdp->revision); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 		uint32_t root_entry_count = 0; | 		uint32_t root_entry_count = 0; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -42,7 +42,9 @@ namespace Kernel | ||||||
| 
 | 
 | ||||||
| 	void InterruptController::enter_acpi_mode() | 	void InterruptController::enter_acpi_mode() | ||||||
| 	{ | 	{ | ||||||
|  | #if ARCH(x86_64) | ||||||
| 		if (lai_enable_acpi(m_using_apic ? 1 : 0) != 0) | 		if (lai_enable_acpi(m_using_apic ? 1 : 0) != 0) | ||||||
|  | #endif | ||||||
| 			dwarnln("could not enter acpi mode"); | 			dwarnln("could not enter acpi mode"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1187,7 +1187,9 @@ namespace Kernel | ||||||
| 
 | 
 | ||||||
| 	[[noreturn]] static void reset_system() | 	[[noreturn]] static void reset_system() | ||||||
| 	{ | 	{ | ||||||
|  | #if ARCH(x86_64) | ||||||
| 		lai_acpi_reset(); | 		lai_acpi_reset(); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 		// acpi reset did not work
 | 		// acpi reset did not work
 | ||||||
| 
 | 
 | ||||||
|  | @ -1206,21 +1208,17 @@ namespace Kernel | ||||||
| 
 | 
 | ||||||
| 		DevFileSystem::get().initiate_sync(true); | 		DevFileSystem::get().initiate_sync(true); | ||||||
| 
 | 
 | ||||||
| 		lai_api_error_t error; | 		if (command == POWEROFF_REBOOT) | ||||||
| 		switch (command) |  | ||||||
| 		{ |  | ||||||
| 			case POWEROFF_REBOOT: |  | ||||||
| 			reset_system(); | 			reset_system(); | ||||||
| 				break; |  | ||||||
| 			case POWEROFF_SHUTDOWN: |  | ||||||
| 				error = lai_enter_sleep(5); |  | ||||||
| 				break; |  | ||||||
| 			default: |  | ||||||
| 				ASSERT_NOT_REACHED(); |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
|  | #if ARCH(x86_64) | ||||||
|  | 		auto error = lai_enter_sleep(5); | ||||||
| 		// If we reach here, there was an error
 | 		// If we reach here, there was an error
 | ||||||
| 		dprintln("{}", lai_api_error_to_string(error)); | 		dprintln("{}", lai_api_error_to_string(error)); | ||||||
|  | #else | ||||||
|  | 		dprintln("poweroff available only on x86_64"); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| 		return BAN::Error::from_errno(EUNKNOWN); | 		return BAN::Error::from_errno(EUNKNOWN); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue