glibc/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
Amrita H S 1ea0511456 powerpc: Placeholder and infrastructure/build support to add Power11 related changes.
The following three changes have been added to provide initial Power11 support.
    1. Add the directories to hold Power11 files.
    2. Add support to select Power11 libraries based on AT_PLATFORM.
    3. Let submachine=power11 be set automatically.

Reviewed-by: Florian Weimer <fweimer@redhat.com>
Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
2024-03-19 21:11:34 -05:00

56 lines
1.7 KiB
C

/* glibc-hwcaps subdirectory test. powerpc64le version.
Copyright (C) 2020-2024 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <string.h>
#include <support/check.h>
#include <sys/auxv.h>
#include <sys/param.h>
extern int marker2 (void);
extern int marker3 (void);
/* Return the POWER level, 8 for the baseline. */
static int
compute_level (void)
{
const char *platform = (const char *) getauxval (AT_PLATFORM);
if (strcmp (platform, "power8") == 0)
return 8;
if (strcmp (platform, "power9") == 0)
return 9;
if (strcmp (platform, "power10") == 0)
return 10;
if (strcmp (platform, "power11") == 0)
return 11;
printf ("warning: unrecognized AT_PLATFORM value: %s\n", platform);
/* Assume that the new platform supports POWER11. */
return 11;
}
static int
do_test (void)
{
int level = compute_level ();
printf ("info: detected POWER level: %d\n", level);
TEST_COMPARE (marker2 (), MIN (level - 7, 2));
TEST_COMPARE (marker3 (), MIN (level - 7, 3));
return 0;
}
#include <support/test-driver.c>