diff options
author | Olivier Hainque <hainque@gcc.gnu.org> | 2018-09-21 13:09:51 +0000 |
---|---|---|
committer | Olivier Hainque <hainque@gcc.gnu.org> | 2018-09-21 13:09:51 +0000 |
commit | 5244089f1518bed96b73dfd52bbdc436f180696d (patch) | |
tree | 11df61031d7ba534f20094e2dd43d10fd1ff5b27 /libgcc | |
parent | 8d0ef282099ee0681222631bfb6421e28a177906 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | libgcc/config/t-vxworks | 5 | ||||
-rw-r--r-- | libgcc/config/t-vxworks7 | 5 | ||||
-rw-r--r-- | libgcc/config/vxcache.c | 35 |
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); +} |