aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@gcc.gnu.org>2018-09-21 13:09:51 +0000
committerOlivier Hainque <hainque@gcc.gnu.org>2018-09-21 13:09:51 +0000
commit5244089f1518bed96b73dfd52bbdc436f180696d (patch)
tree11df61031d7ba534f20094e2dd43d10fd1ff5b27 /libgcc
parent8d0ef282099ee0681222631bfb6421e28a177906 (diff)
downloadgcc-5244089f1518bed96b73dfd52bbdc436f180696d.zip
gcc-5244089f1518bed96b73dfd52bbdc436f180696d.tar.gz
gcc-5244089f1518bed96b73dfd52bbdc436f180696d.tar.bz2
Leverage cacheTextUpdate for __clear_cache on VxWorks
2018-09-21 Alexandre Oliva <oliva@adacore.com> libgcc/ * config/vxcache.c: New file. Provide __clear_cache, based on the cacheTextUpdate VxWorks service. * config/t-vxworks (LIB2ADD): Add vxcache.c. (LIB2FUNCS_EXCLUDE): Add _clear_cache. * config/t-vxwoks7: Likewise. gcc/ * config/vxworks.h (CLEAR_INSN_CACHE): #define to 1. From-SVN: r264479
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog8
-rw-r--r--libgcc/config/t-vxworks5
-rw-r--r--libgcc/config/t-vxworks75
-rw-r--r--libgcc/config/vxcache.c35
4 files changed, 53 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index b172d71..928b5a8 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-09-21 Alexandre Oliva <oliva@adacore.com>
+
+ * config/vxcache.c: New file. Provide __clear_cache, based on
+ the cacheTextUpdate VxWorks service.
+ * config/t-vxworks (LIB2ADD): Add vxcache.c.
+ (LIB2FUNCS_EXCLUDE): Add _clear_cache.
+ * config/t-vxwoks7: Likewise.
+
2018-09-21 Martin Liska <mliska@suse.cz>
* libgcov-driver.c (crc32_unsigned): Remove.
diff --git a/libgcc/config/t-vxworks b/libgcc/config/t-vxworks
index df70fee..2db8e05 100644
--- a/libgcc/config/t-vxworks
+++ b/libgcc/config/t-vxworks
@@ -1,6 +1,11 @@
# Don't build libgcc.a with debug info
LIBGCC2_DEBUG_CFLAGS =
+# We provide our own implementation for __clear_cache, using a
+# VxWorks specific entry point.
+LIB2FUNCS_EXCLUDE += _clear_cache
+LIB2ADD += $(srcdir)/config/vxcache.c
+
# Extra libgcc2 modules used by gthr-vxworks.h functions
LIB2ADDEH += $(srcdir)/config/vxlib.c $(srcdir)/config/vxlib-tls.c
diff --git a/libgcc/config/t-vxworks7 b/libgcc/config/t-vxworks7
index f0293fe..054ab7c 100644
--- a/libgcc/config/t-vxworks7
+++ b/libgcc/config/t-vxworks7
@@ -1,6 +1,11 @@
# Don't build libgcc.a with debug info
LIBGCC2_DEBUG_CFLAGS =
+# We provide our own implementation for __clear_cache, using a
+# VxWorks specific entry point.
+LIB2FUNCS_EXCLUDE += _clear_cache
+LIB2ADD += $(srcdir)/config/vxcache.c
+
# Extra libgcc2 modules used by gthr-vxworks.h functions
LIB2ADDEH += $(srcdir)/config/vxlib.c $(srcdir)/config/vxlib-tls.c
diff --git a/libgcc/config/vxcache.c b/libgcc/config/vxcache.c
new file mode 100644
index 0000000..23c72fb
--- /dev/null
+++ b/libgcc/config/vxcache.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2018 Free Software Foundation, Inc.
+ Contributed by Alexandre Oliva <oliva@adacore.com>
+
+This file is part of GCC.
+
+GCC 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 3, or (at your option) any later
+version.
+
+GCC 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.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/* Instruction cache invalidation routine using VxWorks' cacheLib. */
+
+#include <vxWorks.h>
+#include <cacheLib.h>
+
+void
+__clear_cache (char *beg __attribute__((__unused__)),
+ char *end __attribute__((__unused__)))
+{
+ cacheTextUpdate (beg, end - beg);
+}