meso: makefile improvements, sysreg accessors

This commit is contained in:
Michael Scire 2020-01-29 05:37:14 -08:00
parent 507ab46709
commit ad0d2faa6c
4 changed files with 32 additions and 5 deletions

View file

@ -71,4 +71,16 @@ namespace ams::kern::arm64::cpu {
EnsureInstructionConsistency(); EnsureInstructionConsistency();
} }
ALWAYS_INLINE uintptr_t GetCoreLocalRegionAddress() {
register uintptr_t x18 asm("x18");
__asm__ __volatile__("" : [x18]"=r"(x18));
return x18;
}
ALWAYS_INLINE void SetCoreLocalRegionAddress(uintptr_t value) {
register uintptr_t x18 asm("x18") = value;
__asm__ __volatile__("":: [x18]"r"(x18));
SetTpidrEl1(value);
}
} }

View file

@ -39,6 +39,7 @@ namespace ams::kern::arm64::cpu {
MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(TcrEl1, tcr_el1) MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(TcrEl1, tcr_el1)
MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(MairEl1, mair_el1) MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(MairEl1, mair_el1)
MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(TpidrEl1, tpidr_el1)
MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(VbarEl1, vbar_el1) MESOSPHERE_CPU_DEFINE_SYSREG_ACCESSORS(VbarEl1, vbar_el1)

View file

@ -239,6 +239,15 @@ namespace ams::kern {
MESOSPHERE_INIT_ABORT(); MESOSPHERE_INIT_ABORT();
} }
iterator FindFirstBlockByType(u32 type_id) {
for (auto it = this->begin(); it != this->end(); it++) {
if (it->GetType() == type_id) {
return it;
}
}
MESOSPHERE_INIT_ABORT();
}
iterator FindFirstDerivedBlock(u32 type_id) { iterator FindFirstDerivedBlock(u32 type_id) {
for (auto it = this->begin(); it != this->end(); it++) { for (auto it = this->begin(); it != this->end(); it++) {
if (it->IsDerivedFrom(type_id)) { if (it->IsDerivedFrom(type_id)) {

View file

@ -1,5 +1,5 @@
TARGETS := kernel kernel_ldr TARGETS := kernel.bin kernel_ldr.bin
CLEAN_TARGETS := $(foreach target,$(TARGETS),$(target)-clean) CLEAN_TARGETS := $(foreach target,$(TARGETS),$(target:.bin=)-clean)
SUBFOLDERS := $(MODULES) SUBFOLDERS := $(MODULES)
@ -12,10 +12,15 @@ mesosphere.bin: $(TARGETS)
@python build_mesosphere.py @python build_mesosphere.py
@echo "Built mesosphere.bin..." @echo "Built mesosphere.bin..."
$(TARGETS): $(TARGETS): check_libmeso
$(MAKE) -C $@ $(MAKE) -C $(@:.bin=)
@cp $(@:.bin=)/$(@) $(@)
check_libmeso:
@$(MAKE) --no-print-directory -C ../libraries/libmesosphere
$(CLEAN_TARGETS): $(CLEAN_TARGETS):
$(MAKE) -C $(@:-clean=) clean $(MAKE) -C $(@:-clean=) clean
@rm -f $(@:-clean=).bin
.PHONY: all clean $(TARGETS) $(CLEAN_TARGETS) .PHONY: all clean $(CLEAN_TARGETS)