From 030a49838de92cb8c2bf77e025cd9ca64314b75b Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Thu, 30 Jun 2016 14:05:18 +0200 Subject: A first changeset for MinGW32 and MinGW64 to compile GHDL with mcode and llvm backend on Windows x86-64. --- src/grt/Makefile.inc | 5 ++-- src/grt/config/win32.c | 4 +-- src/ortho/mcode/ortho_code-x86-flags_windows64.ads | 34 ++++++++++++++++++++++ 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 src/ortho/mcode/ortho_code-x86-flags_windows64.ads (limited to 'src') diff --git a/src/grt/Makefile.inc b/src/grt/Makefile.inc index f8a4d327a..7ac0c96d2 100644 --- a/src/grt/Makefile.inc +++ b/src/grt/Makefile.inc @@ -47,8 +47,9 @@ endif GRT_ELF_OPTS:=-Wl,--version-script=@/grt.ver -Wl,--export-dynamic # Set target files. -ifeq ($(filter-out mingw32,$(osys)),) - GRT_TARGET_OBJS=jumps.o math.o clock.o +ifeq ($(filter-out mingw32 mingw64,$(osys)),) + GRT_TARGET_OBJS=win32.o clock.o + GRT_EXTRA_LIB=-ldbghelp else GRT_TARGET_OBJS=jumps.o times.o ifeq ($(filter-out linux,$(osys)),) diff --git a/src/grt/config/win32.c b/src/grt/config/win32.c index 79935e6f0..c473b246c 100644 --- a/src/grt/config/win32.c +++ b/src/grt/config/win32.c @@ -79,9 +79,9 @@ get_bt_from_context (struct backtrace_addrs *bt, CONTEXT *ctxt, int skip) frame.AddrPC.Offset = ctxt->Rip; frame.AddrPC.Mode = AddrModeFlat; - frame.AddrFrame.Offset = ctx->Rsp; + frame.AddrFrame.Offset = ctxt->Rsp; frame.AddrFrame.Mode = AddrModeFlat; - frame.AddrStack.Offset = ctx->Rsp; + frame.AddrStack.Offset = ctxt->Rsp; frame.AddrStack.Mode = AddrModeFlat; #else diff --git a/src/ortho/mcode/ortho_code-x86-flags_windows64.ads b/src/ortho/mcode/ortho_code-x86-flags_windows64.ads new file mode 100644 index 000000000..1e7550012 --- /dev/null +++ b/src/ortho/mcode/ortho_code-x86-flags_windows64.ads @@ -0,0 +1,34 @@ +-- X86 ABI flags. +-- Copyright (C) 2006 Tristan Gingold +-- +-- GHDL 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, or (at your option) any later +-- version. +-- +-- GHDL 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 GCC; see the file COPYING. If not, write to the Free +-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA +-- 02111-1307, USA. +with Interfaces; use Interfaces; + +package Ortho_Code.X86.Flags_Windows64 is + -- If true, OE_Alloca calls __chkstk (Windows), otherwise OE_Alloc + -- modifies ESP directly. + Flag_Alloca_Call : constant Boolean := True; + + -- Prefered stack alignment. + -- Must be a power of 2. + Stack_Boundary : constant Unsigned_32 := 2 ** 3; + + -- Alignment for double (64 bit float). + Mode_F64_Align : constant Natural := 3; + + -- 32 bits. + M64 : constant Boolean := False; +end Ortho_Code.X86.Flags_Windows64; -- cgit v1.2.3