summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2020-07-17 22:59:07 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2020-09-30 03:08:36 +0200
commit03aacdb73d2f797768129d54ac971b48756fa51a (patch)
tree7902012ef175d3649d404e0eaa0e739b924414ec /solenv
parentf11dc8335c9bae837823c14d059388b8d5965dcb (diff)
bridges: add a Windows Arm64 UNO bridge
Since Microsoft follows the general ARM64 ABI calling conventions, and the SEH exception handling is the same, this result is a mixed port of the gcc3_linux_aarch64 bridge and the refactored x86-64 exception handling. I have no idea, if the complicated 32-bit handling in RaiseInfo() is needed, as the ARM64 trampolines definitly use 64-bit code. But since this is the first working version, I currently don't mind much ;-) There is definitly more potential for refactoring in the whole bridges directory... Change-Id: I9782a2e99c0231cdd1286af156ad312229eccf39 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103642 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'solenv')
-rw-r--r--solenv/gbuild/platform/com_MSC_class.mk16
1 files changed, 16 insertions, 0 deletions
diff --git a/solenv/gbuild/platform/com_MSC_class.mk b/solenv/gbuild/platform/com_MSC_class.mk
index 09dd48dc8754..8a71ca3422bb 100644
--- a/solenv/gbuild/platform/com_MSC_class.mk
+++ b/solenv/gbuild/platform/com_MSC_class.mk
@@ -134,6 +134,21 @@ fi
endef
# AsmObject class
+ifeq ($(CPUNAME),ARM64)
+gb_AsmObject_get_source = $(1)/$(2).S
+
+# Code needs a preprozessor step .S -> .asm -> .o
+define gb_AsmObject__command
+$(call gb_Output_announce,$(2),$(true),ASM,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) $(dir $(4)) && \
+ "$(CC)" -nologo -EP -D_M_ARM64 $(SOLARINC) $(3) > $(subst .o,.asm,$(1)) && \
+ "$(ML_EXE)" $(gb_AFLAGS) -g -errorReport:prompt -o $(1) $(subst .o,.asm,$(1)), \
+ ) && \
+ echo "$(1) : $(3)" > $(4)
+endef
+
+else # !ARM64
gb_AsmObject_get_source = $(1)/$(2).asm
define gb_AsmObject__command
@@ -146,6 +161,7 @@ $(call gb_Helper_abbreviate_dirs,\
echo "$(1) : $(3)" > $(4)
endef
+endif
# LinkTarget class