EFI: Break smp into arch subpath

Change-Id: Ia9438777f1da8ca32f93e0d85229230c809e6711
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1918
Reviewed-by: Alex von Gluck IV <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
Alexander von Gluck IV
2019-10-16 21:21:15 +00:00
committed by Alex von Gluck IV
parent e3c74f400e
commit 761ddb2c4f
4 changed files with 42 additions and 17 deletions
+11 -13
View File
@@ -37,14 +37,7 @@ local platform_src =
support.S support.S
; ;
local arch_src = Includes [ FGristFiles $(efi_glue_src) $(platform_src) ]
arch_mmu.cpp
arch_smp.cpp
relocation_func.cpp
entry.S
;
Includes [ FGristFiles $(efi_glue_src) $(platform_src) $(arch_src) ]
: :
[ BuildFeatureAttribute gnuefi : headers ] [ BuildFeatureAttribute gnuefi : headers ]
[ BuildFeatureAttribute gnuefi : headersProtocol ] [ BuildFeatureAttribute gnuefi : headersProtocol ]
@@ -55,21 +48,26 @@ local platform ;
for platform in [ MultiBootSubDirSetup efi ] { for platform in [ MultiBootSubDirSetup efi ] {
on $(platform) { on $(platform) {
BootMergeObject boot_platform_efi.o : BootMergeObject boot_platform_efi_common.o :
$(efi_glue_src) $(efi_glue_src)
$(platform_src) $(platform_src)
$(arch_src)
: :
: boot_platform_generic_efi.a : boot_platform_generic_efi.a
; ;
SEARCH on [ FGristFiles $(arch_src) ] BootMergeObject boot_platform_efi.o :
= [ FDirName $(SUBDIR) arch $(TARGET_ARCH) ] ; : :
boot_platform_efi_$(TARGET_ARCH).o
boot_platform_efi_common.o
;
LOCATE on [ FGristFiles $(efi_glue_src) ] LOCATE on [ FGristFiles $(efi_glue_src) ]
= [ BuildFeatureAttribute gnuefi : libdir : path ] ; = [ BuildFeatureAttribute gnuefi : libdir : path ] ;
Depends [ FGristFiles $(efi_glue_src) ] Depends [ FGristFiles $(efi_glue_src) ]
: [ BuildFeatureAttribute gnuefi : libdir ] ; : [ BuildFeatureAttribute gnuefi : libdir ] ;
Depends [ FGristFiles $(platform_src) $(arch_src) ] Depends [ FGristFiles $(platform_src) ]
: [ BuildFeatureAttribute gnuefi : headers ] ; : [ BuildFeatureAttribute gnuefi : headers ] ;
} }
} }
SubInclude HAIKU_TOP src system boot platform efi arch $(TARGET_ARCH) ;
@@ -0,0 +1,29 @@
SubDir HAIKU_TOP src system boot platform efi arch x86_64 ;
SubDirHdrs $(HAIKU_TOP) src system boot platform efi ;
UsePrivateHeaders [ FDirName kernel boot platform efi ] ;
UseBuildFeatureHeaders gnuefi ;
UseBuildFeatureHeaders gnuefi : headersProtocol ;
UseBuildFeatureHeaders gnuefi : headersArch ;
local arch_src =
entry.S
relocation_func.cpp
arch_smp.cpp
arch_mmu.cpp
;
BootMergeObject boot_platform_efi_x86_64.o :
$(arch_src)
;
Includes [ FGristFiles $(arch_src) ]
:
[ BuildFeatureAttribute gnuefi : headers ]
[ BuildFeatureAttribute gnuefi : headersProtocol ]
[ BuildFeatureAttribute gnuefi : headersArch ]
;
Depends [ FGristFiles $(arch_src) ]
: [ BuildFeatureAttribute gnuefi : libdir ] ;
@@ -72,14 +72,14 @@ struct trampoline_args {
}; };
static uint32 uint32
apic_read(uint32 offset) apic_read(uint32 offset)
{ {
return *(volatile uint32 *)((addr_t)gKernelArgs.arch_args.apic_phys + offset); return *(volatile uint32 *)((addr_t)gKernelArgs.arch_args.apic_phys + offset);
} }
static void void
apic_write(uint32 offset, uint32 data) apic_write(uint32 offset, uint32 data)
{ {
*(volatile uint32 *)((addr_t)gKernelArgs.arch_args.apic_phys + offset) = data; *(volatile uint32 *)((addr_t)gKernelArgs.arch_args.apic_phys + offset) = data;
@@ -9,8 +9,6 @@
#include <arch/x86/descriptors.h> #include <arch/x86/descriptors.h>
#include "mmu.h"
#define GDT_LIMIT 0x800 #define GDT_LIMIT 0x800