From 9adda7af10c354a62146d917a30a2fae8df370d1 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 3 Jul 2020 13:34:21 +0100 Subject: [PATCH] Remove stale overlay testcase bits D10V support was removed years ago, but the gdb.base/d10vovly.c file stayed behind. Looking a bit closer, I can't find anywhere that references gdb.base/m32rovly.c either. Both gdb.base/m32rovly.c and gdb.base/d10vovly.c seem to be older copies of gdb.base/ovlymgr.c, that are exactly the same, except for some cosmetic differences, and for missing _ovly_debug_event. Note that gdb.base/ovlymgr.c has the #ifdef __M32R__ bits too. Note also that gdb.base/overlays.exp is currently only supported on m32r, and that uses ovlymgr.c not gdb.base/m32rovly.c. gdb/testsuite/ChangeLog: * gdb.base/d10vovly.c: Delete. * gdb.base/m32rovly.c: Delete. * gdb.base/ovlymgr.c: Remove all code guarded by __D10V__. --- gdb/testsuite/ChangeLog | 5 + gdb/testsuite/gdb.base/d10vovly.c | 225 ------------------------------ gdb/testsuite/gdb.base/m32rovly.c | 225 ------------------------------ gdb/testsuite/gdb.base/ovlymgr.c | 133 ------------------ 4 files changed, 5 insertions(+), 583 deletions(-) delete mode 100644 gdb/testsuite/gdb.base/d10vovly.c delete mode 100644 gdb/testsuite/gdb.base/m32rovly.c diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 84855513b4..f6c7e5a62e 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-07-03 Pedro Alves + + * gdb.base/m32rovly.c: Delete. + * gdb.base/ovlymgr.c: Remove all code guarded by __D10V__. + 2020-06-30 Philippe Waroquiers * gdb.python/py-breakpoint.exp: use gdb_test_multiline instead diff --git a/gdb/testsuite/gdb.base/d10vovly.c b/gdb/testsuite/gdb.base/d10vovly.c deleted file mode 100644 index bdb90feae6..0000000000 --- a/gdb/testsuite/gdb.base/d10vovly.c +++ /dev/null @@ -1,225 +0,0 @@ - -/* - * Ovlymgr.c -- Runtime Overlay Manager for the GDB testsuite. - */ - -#include "ovlymgr.h" - -/* Local functions and data: */ - -extern unsigned long _ovly_table[][4]; -extern unsigned long _novlys __attribute__ ((section (".data"))); -enum ovly_index { VMA, SIZE, LMA, MAPPED}; - -static void ovly_copy (unsigned long dst, unsigned long src, long size); - -/* Flush the data and instruction caches at address START for SIZE bytes. - Support for each new port must be added here. */ -/* FIXME: Might be better to have a standard libgloss function that - ports provide that we can then use. Use libgloss instead of newlib - since libgloss is the one intended to handle low level system issues. - I would suggest something like _flush_cache to avoid the user's namespace - but not be completely obscure as other things may need this facility. */ - -static void -FlushCache (void) -{ -#ifdef __M32R__ - volatile char *mspr = (char *) 0xfffffff7; - *mspr = 1; -#endif -} - -/* OverlayLoad: - * Copy the overlay into its runtime region, - * and mark the overlay as "mapped". - */ - -bool -OverlayLoad (unsigned long ovlyno) -{ - unsigned long i; - - if (ovlyno < 0 || ovlyno >= _novlys) - exit (-1); /* fail, bad ovly number */ - - if (_ovly_table[ovlyno][MAPPED]) - return TRUE; /* this overlay already mapped -- nothing to do! */ - - for (i = 0; i < _novlys; i++) - if (i == ovlyno) - _ovly_table[i][MAPPED] = 1; /* this one now mapped */ - else if (_ovly_table[i][VMA] == _ovly_table[ovlyno][VMA]) - _ovly_table[i][MAPPED] = 0; /* this one now un-mapped */ - - ovly_copy (_ovly_table[ovlyno][VMA], - _ovly_table[ovlyno][LMA], - _ovly_table[ovlyno][SIZE]); - - FlushCache (); - - return TRUE; -} - -/* OverlayUnload: - * Copy the overlay back into its "load" region. - * Does NOT mark overlay as "unmapped", therefore may be called - * more than once for the same mapped overlay. - */ - -bool -OverlayUnload (unsigned long ovlyno) -{ - if (ovlyno < 0 || ovlyno >= _novlys) - exit (-1); /* fail, bad ovly number */ - - if (!_ovly_table[ovlyno][MAPPED]) - exit (-1); /* error, can't copy out a segment that's not "in" */ - - ovly_copy (_ovly_table[ovlyno][LMA], - _ovly_table[ovlyno][VMA], - _ovly_table[ovlyno][SIZE]); - - return TRUE; -} - -#ifdef __D10V__ -#define IMAP0 (*(short *)(0xff00)) -#define IMAP1 (*(short *)(0xff02)) -#define DMAP (*(short *)(0xff04)) - -static void -D10VTranslate (unsigned long logical, - short *dmap, - unsigned long **addr) -{ - unsigned long physical; - unsigned long seg; - unsigned long off; - - /* to access data, we use the following mapping - 0x00xxxxxx: Logical data address segment (DMAP translated memory) - 0x01xxxxxx: Logical instruction address segment (IMAP translated memory) - 0x10xxxxxx: Physical data memory segment (On-chip data memory) - 0x11xxxxxx: Physical instruction memory segment (On-chip insn memory) - 0x12xxxxxx: Phisical unified memory segment (Unified memory) - */ - - /* Addresses must be correctly aligned */ - if (logical & (sizeof (**addr) - 1)) - exit (-1); - - /* If the address is in one of the two logical address spaces, it is - first translated into a physical address */ - seg = (logical >> 24); - off = (logical & 0xffffffL); - switch (seg) - { - case 0x00: /* in logical data address segment */ - if (off <= 0x7fffL) - physical = (0x10L << 24) + off; - else - /* Logical address out side of on-chip segment, not - supported */ - exit (-1); - break; - case 0x01: /* in logical instruction address segment */ - { - short map; - if (off <= 0x1ffffL) - map = IMAP0; - else if (off <= 0x3ffffL) - map = IMAP1; - else - /* Logical address outside of IMAP[01] segment, not - supported */ - exit (-1); - if (map & 0x1000L) - { - /* Instruction memory */ - physical = (0x11L << 24) | off; - } - else - { - /* Unified memory */ - physical = ((map & 0x7fL) << 17) + (off & 0x1ffffL); - if (physical > 0xffffffL) - /* Address outside of unified address segment */ - exit (-1); - physical |= (0x12L << 24); - } - break; - } - case 0x10: - case 0x11: - case 0x12: - physical = logical; - break; - default: - exit (-1); /* error */ - } - - seg = (physical >> 24); - off = (physical & 0xffffffL); - switch (seg) - { - case 0x10: /* dst is a 15 bit offset into the on-chip memory */ - *dmap = 0; - *addr = (long *) (0x0000 + ((short)off & 0x7fff)); - break; - case 0x11: /* dst is an 18-bit offset into the on-chip - instruction memory */ - *dmap = 0x1000L | ((off & 0x3ffffL) >> 14); - *addr = (long *) (0x8000 + ((short)off & 0x3fff)); - break; - case 0x12: /* dst is a 24-bit offset into unified memory */ - *dmap = off >> 14; - *addr = (long *) (0x8000 + ((short)off & 0x3fff)); - break; - default: - exit (-1); /* error */ - } -} -#endif /* __D10V__ */ - -static void -ovly_copy (unsigned long dst, unsigned long src, long size) -{ -#ifdef __M32R__ - memcpy ((void *) dst, (void *) src, size); - return; -#endif /* M32R */ - -#ifdef __D10V__ - unsigned long *s, *d, tmp; - short dmap_src, dmap_dst; - short dmap_save; - - /* all section sizes should by multiples of 4 bytes */ - dmap_save = DMAP; - - D10VTranslate (src, &dmap_src, &s); - D10VTranslate (dst, &dmap_dst, &d); - - while (size > 0) - { - /* NB: Transfer 4 byte (long) quantites, problems occure - when only two bytes are transfered */ - DMAP = dmap_src; - tmp = *s; - DMAP = dmap_dst; - *d = tmp; - d++; - s++; - size -= sizeof (tmp); - src += sizeof (tmp); - dst += sizeof (tmp); - if ((src & 0x3fff) == 0) - D10VTranslate (src, &dmap_src, &s); - if ((dst & 0x3fff) == 0) - D10VTranslate (dst, &dmap_dst, &d); - } - DMAP = dmap_save; -#endif /* D10V */ -} - diff --git a/gdb/testsuite/gdb.base/m32rovly.c b/gdb/testsuite/gdb.base/m32rovly.c deleted file mode 100644 index bdb90feae6..0000000000 --- a/gdb/testsuite/gdb.base/m32rovly.c +++ /dev/null @@ -1,225 +0,0 @@ - -/* - * Ovlymgr.c -- Runtime Overlay Manager for the GDB testsuite. - */ - -#include "ovlymgr.h" - -/* Local functions and data: */ - -extern unsigned long _ovly_table[][4]; -extern unsigned long _novlys __attribute__ ((section (".data"))); -enum ovly_index { VMA, SIZE, LMA, MAPPED}; - -static void ovly_copy (unsigned long dst, unsigned long src, long size); - -/* Flush the data and instruction caches at address START for SIZE bytes. - Support for each new port must be added here. */ -/* FIXME: Might be better to have a standard libgloss function that - ports provide that we can then use. Use libgloss instead of newlib - since libgloss is the one intended to handle low level system issues. - I would suggest something like _flush_cache to avoid the user's namespace - but not be completely obscure as other things may need this facility. */ - -static void -FlushCache (void) -{ -#ifdef __M32R__ - volatile char *mspr = (char *) 0xfffffff7; - *mspr = 1; -#endif -} - -/* OverlayLoad: - * Copy the overlay into its runtime region, - * and mark the overlay as "mapped". - */ - -bool -OverlayLoad (unsigned long ovlyno) -{ - unsigned long i; - - if (ovlyno < 0 || ovlyno >= _novlys) - exit (-1); /* fail, bad ovly number */ - - if (_ovly_table[ovlyno][MAPPED]) - return TRUE; /* this overlay already mapped -- nothing to do! */ - - for (i = 0; i < _novlys; i++) - if (i == ovlyno) - _ovly_table[i][MAPPED] = 1; /* this one now mapped */ - else if (_ovly_table[i][VMA] == _ovly_table[ovlyno][VMA]) - _ovly_table[i][MAPPED] = 0; /* this one now un-mapped */ - - ovly_copy (_ovly_table[ovlyno][VMA], - _ovly_table[ovlyno][LMA], - _ovly_table[ovlyno][SIZE]); - - FlushCache (); - - return TRUE; -} - -/* OverlayUnload: - * Copy the overlay back into its "load" region. - * Does NOT mark overlay as "unmapped", therefore may be called - * more than once for the same mapped overlay. - */ - -bool -OverlayUnload (unsigned long ovlyno) -{ - if (ovlyno < 0 || ovlyno >= _novlys) - exit (-1); /* fail, bad ovly number */ - - if (!_ovly_table[ovlyno][MAPPED]) - exit (-1); /* error, can't copy out a segment that's not "in" */ - - ovly_copy (_ovly_table[ovlyno][LMA], - _ovly_table[ovlyno][VMA], - _ovly_table[ovlyno][SIZE]); - - return TRUE; -} - -#ifdef __D10V__ -#define IMAP0 (*(short *)(0xff00)) -#define IMAP1 (*(short *)(0xff02)) -#define DMAP (*(short *)(0xff04)) - -static void -D10VTranslate (unsigned long logical, - short *dmap, - unsigned long **addr) -{ - unsigned long physical; - unsigned long seg; - unsigned long off; - - /* to access data, we use the following mapping - 0x00xxxxxx: Logical data address segment (DMAP translated memory) - 0x01xxxxxx: Logical instruction address segment (IMAP translated memory) - 0x10xxxxxx: Physical data memory segment (On-chip data memory) - 0x11xxxxxx: Physical instruction memory segment (On-chip insn memory) - 0x12xxxxxx: Phisical unified memory segment (Unified memory) - */ - - /* Addresses must be correctly aligned */ - if (logical & (sizeof (**addr) - 1)) - exit (-1); - - /* If the address is in one of the two logical address spaces, it is - first translated into a physical address */ - seg = (logical >> 24); - off = (logical & 0xffffffL); - switch (seg) - { - case 0x00: /* in logical data address segment */ - if (off <= 0x7fffL) - physical = (0x10L << 24) + off; - else - /* Logical address out side of on-chip segment, not - supported */ - exit (-1); - break; - case 0x01: /* in logical instruction address segment */ - { - short map; - if (off <= 0x1ffffL) - map = IMAP0; - else if (off <= 0x3ffffL) - map = IMAP1; - else - /* Logical address outside of IMAP[01] segment, not - supported */ - exit (-1); - if (map & 0x1000L) - { - /* Instruction memory */ - physical = (0x11L << 24) | off; - } - else - { - /* Unified memory */ - physical = ((map & 0x7fL) << 17) + (off & 0x1ffffL); - if (physical > 0xffffffL) - /* Address outside of unified address segment */ - exit (-1); - physical |= (0x12L << 24); - } - break; - } - case 0x10: - case 0x11: - case 0x12: - physical = logical; - break; - default: - exit (-1); /* error */ - } - - seg = (physical >> 24); - off = (physical & 0xffffffL); - switch (seg) - { - case 0x10: /* dst is a 15 bit offset into the on-chip memory */ - *dmap = 0; - *addr = (long *) (0x0000 + ((short)off & 0x7fff)); - break; - case 0x11: /* dst is an 18-bit offset into the on-chip - instruction memory */ - *dmap = 0x1000L | ((off & 0x3ffffL) >> 14); - *addr = (long *) (0x8000 + ((short)off & 0x3fff)); - break; - case 0x12: /* dst is a 24-bit offset into unified memory */ - *dmap = off >> 14; - *addr = (long *) (0x8000 + ((short)off & 0x3fff)); - break; - default: - exit (-1); /* error */ - } -} -#endif /* __D10V__ */ - -static void -ovly_copy (unsigned long dst, unsigned long src, long size) -{ -#ifdef __M32R__ - memcpy ((void *) dst, (void *) src, size); - return; -#endif /* M32R */ - -#ifdef __D10V__ - unsigned long *s, *d, tmp; - short dmap_src, dmap_dst; - short dmap_save; - - /* all section sizes should by multiples of 4 bytes */ - dmap_save = DMAP; - - D10VTranslate (src, &dmap_src, &s); - D10VTranslate (dst, &dmap_dst, &d); - - while (size > 0) - { - /* NB: Transfer 4 byte (long) quantites, problems occure - when only two bytes are transfered */ - DMAP = dmap_src; - tmp = *s; - DMAP = dmap_dst; - *d = tmp; - d++; - s++; - size -= sizeof (tmp); - src += sizeof (tmp); - dst += sizeof (tmp); - if ((src & 0x3fff) == 0) - D10VTranslate (src, &dmap_src, &s); - if ((dst & 0x3fff) == 0) - D10VTranslate (dst, &dmap_dst, &d); - } - DMAP = dmap_save; -#endif /* D10V */ -} - diff --git a/gdb/testsuite/gdb.base/ovlymgr.c b/gdb/testsuite/gdb.base/ovlymgr.c index f4958ed14a..5d087ad90a 100644 --- a/gdb/testsuite/gdb.base/ovlymgr.c +++ b/gdb/testsuite/gdb.base/ovlymgr.c @@ -93,141 +93,8 @@ OverlayUnload (unsigned long ovlyno) return TRUE; } -#ifdef __D10V__ -#define IMAP0 (*(short *)(0xff00)) -#define IMAP1 (*(short *)(0xff02)) -#define DMAP (*(short *)(0xff04)) - -static void -D10VTranslate (unsigned long logical, - short *dmap, - unsigned long **addr) -{ - unsigned long physical; - unsigned long seg; - unsigned long off; - - /* to access data, we use the following mapping - 0x00xxxxxx: Logical data address segment (DMAP translated memory) - 0x01xxxxxx: Logical instruction address segment (IMAP translated memory) - 0x10xxxxxx: Physical data memory segment (On-chip data memory) - 0x11xxxxxx: Physical instruction memory segment (On-chip insn memory) - 0x12xxxxxx: Phisical unified memory segment (Unified memory) - */ - - /* Addresses must be correctly aligned */ - if (logical & (sizeof (**addr) - 1)) - exit (-1); - - /* If the address is in one of the two logical address spaces, it is - first translated into a physical address */ - seg = (logical >> 24); - off = (logical & 0xffffffL); - switch (seg) - { - case 0x00: /* in logical data address segment */ - if (off <= 0x7fffL) - physical = (0x10L << 24) + off; - else - /* Logical address out side of on-chip segment, not - supported */ - exit (-1); - break; - case 0x01: /* in logical instruction address segment */ - { - short map; - if (off <= 0x1ffffL) - map = IMAP0; - else if (off <= 0x3ffffL) - map = IMAP1; - else - /* Logical address outside of IMAP[01] segment, not - supported */ - exit (-1); - if (map & 0x1000L) - { - /* Instruction memory */ - physical = (0x11L << 24) | off; - } - else - { - /* Unified memory */ - physical = ((map & 0x7fL) << 17) + (off & 0x1ffffL); - if (physical > 0xffffffL) - /* Address outside of unified address segment */ - exit (-1); - physical |= (0x12L << 24); - } - break; - } - case 0x10: - case 0x11: - case 0x12: - physical = logical; - break; - default: - exit (-1); /* error */ - } - - seg = (physical >> 24); - off = (physical & 0xffffffL); - switch (seg) - { - case 0x10: /* dst is a 15 bit offset into the on-chip memory */ - *dmap = 0; - *addr = (long *) (0x0000 + ((short)off & 0x7fff)); - break; - case 0x11: /* dst is an 18-bit offset into the on-chip - instruction memory */ - *dmap = 0x1000L | ((off & 0x3ffffL) >> 14); - *addr = (long *) (0x8000 + ((short)off & 0x3fff)); - break; - case 0x12: /* dst is a 24-bit offset into unified memory */ - *dmap = off >> 14; - *addr = (long *) (0x8000 + ((short)off & 0x3fff)); - break; - default: - exit (-1); /* error */ - } -} -#endif /* __D10V__ */ - static void ovly_copy (unsigned long dst, unsigned long src, long size) { -#ifdef __D10V__ - unsigned long *s, *d, tmp; - short dmap_src, dmap_dst; - short dmap_save; - - /* all section sizes should by multiples of 4 bytes */ - dmap_save = DMAP; - - D10VTranslate (src, &dmap_src, &s); - D10VTranslate (dst, &dmap_dst, &d); - - while (size > 0) - { - /* NB: Transfer 4 byte (long) quantites, problems occure - when only two bytes are transfered */ - DMAP = dmap_src; - tmp = *s; - DMAP = dmap_dst; - *d = tmp; - d++; - s++; - size -= sizeof (tmp); - src += sizeof (tmp); - dst += sizeof (tmp); - if ((src & 0x3fff) == 0) - D10VTranslate (src, &dmap_src, &s); - if ((dst & 0x3fff) == 0) - D10VTranslate (dst, &dmap_dst, &d); - } - DMAP = dmap_save; -#else memcpy ((void *) dst, (void *) src, size); -#endif /* D10V */ - return; } -