tile: prefer <arch/intreg.h> to __need_int_reg_t
As part of some work in glibc to move away from the "__need" prefix, this commit breaks away the definitions of __int_reg_t, __uint_reg_t, __INT_REG_BITS, and __INT_REG_FMT to a separate <arch/intreg.h> "microheader". It is then included from <arch/abi.h> to preserve the semantics of the previous header. For now, we continue to preserve the __need_int_reg_t semantics in <arch/abi.h> as well, but anticipate that after a few years we can obsolete it.
This commit is contained in:
parent
c02ed2e75e
commit
34649f72b6
|
@ -20,58 +20,17 @@
|
|||
|
||||
#ifndef __ARCH_ABI_H__
|
||||
|
||||
#if !defined __need_int_reg_t && !defined __DOXYGEN__
|
||||
# define __ARCH_ABI_H__
|
||||
# include <arch/chip.h>
|
||||
#endif
|
||||
|
||||
/* Provide the basic machine types. */
|
||||
#ifndef __INT_REG_BITS
|
||||
|
||||
/** Number of bits in a register. */
|
||||
#if defined __tilegx__
|
||||
# define __INT_REG_BITS 64
|
||||
#elif defined __tilepro__
|
||||
# define __INT_REG_BITS 32
|
||||
#elif !defined __need_int_reg_t
|
||||
#ifndef __tile__ /* support uncommon use of arch headers in non-tile builds */
|
||||
# include <arch/chip.h>
|
||||
# define __INT_REG_BITS CHIP_WORD_SIZE()
|
||||
#else
|
||||
# error Unrecognized architecture with __need_int_reg_t
|
||||
#endif
|
||||
|
||||
#if __INT_REG_BITS == 64
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
/** Unsigned type that can hold a register. */
|
||||
typedef unsigned long long __uint_reg_t;
|
||||
|
||||
/** Signed type that can hold a register. */
|
||||
typedef long long __int_reg_t;
|
||||
#endif
|
||||
|
||||
/** String prefix to use for printf(). */
|
||||
#define __INT_REG_FMT "ll"
|
||||
|
||||
#else
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
/** Unsigned type that can hold a register. */
|
||||
typedef unsigned long __uint_reg_t;
|
||||
|
||||
/** Signed type that can hold a register. */
|
||||
typedef long __int_reg_t;
|
||||
#endif
|
||||
|
||||
/** String prefix to use for printf(). */
|
||||
#define __INT_REG_FMT "l"
|
||||
|
||||
#endif
|
||||
#endif /* __INT_REG_BITS */
|
||||
|
||||
#include <arch/intreg.h>
|
||||
|
||||
/* __need_int_reg_t is deprecated: just include <arch/intreg.h> */
|
||||
#ifndef __need_int_reg_t
|
||||
|
||||
#define __ARCH_ABI_H__
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
/** Unsigned type that can hold a register. */
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright 2017 Tilera Corporation. All Rights Reserved.
|
||||
*
|
||||
* This program 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, version 2.
|
||||
*
|
||||
* This program 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, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* Provide types and defines for the type that can hold a register,
|
||||
* in the implementation namespace.
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_INTREG_H__
|
||||
#define __ARCH_INTREG_H__
|
||||
|
||||
/*
|
||||
* Get number of bits in a register. __INT_REG_BITS may be defined
|
||||
* prior to including this header to force a particular bit width.
|
||||
*/
|
||||
|
||||
#ifndef __INT_REG_BITS
|
||||
# if defined __tilegx__
|
||||
# define __INT_REG_BITS 64
|
||||
# elif defined __tilepro__
|
||||
# define __INT_REG_BITS 32
|
||||
# else
|
||||
# error Unrecognized architecture
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __INT_REG_BITS == 64
|
||||
|
||||
# ifndef __ASSEMBLER__
|
||||
/** Unsigned type that can hold a register. */
|
||||
typedef unsigned long long __uint_reg_t;
|
||||
|
||||
/** Signed type that can hold a register. */
|
||||
typedef long long __int_reg_t;
|
||||
# endif
|
||||
|
||||
/** String prefix to use for printf(). */
|
||||
# define __INT_REG_FMT "ll"
|
||||
|
||||
#elif __INT_REG_BITS == 32
|
||||
|
||||
# ifndef __ASSEMBLER__
|
||||
/** Unsigned type that can hold a register. */
|
||||
typedef unsigned long __uint_reg_t;
|
||||
|
||||
/** Signed type that can hold a register. */
|
||||
typedef long __int_reg_t;
|
||||
# endif
|
||||
|
||||
/** String prefix to use for printf(). */
|
||||
# define __INT_REG_FMT "l"
|
||||
|
||||
#else
|
||||
# error Unrecognized value of __INT_REG_BITS
|
||||
#endif
|
||||
|
||||
#endif /* !__ARCH_INTREG_H__ */
|
Loading…
Reference in New Issue