Skip to content

Commit 9b48791

Browse files
committed
machine/sh: Clean up SuperH support
Add fenv bits, provide fallback for strncpy on targets without asm support. Signed-off-by: Keith Packard <[email protected]>
1 parent 4d97673 commit 9b48791

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed

newlib/libc/machine/sh/meson.build

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ srcs_machine = [
4141
'strcpy.S',
4242
'strlen.S',
4343
'strncpy.S',
44+
'strncpy.c',
4445
]
4546

47+
subdir('sys')
48+
4649
src_machine = files(srcs_machine)

newlib/libc/machine/sh/strncpy.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#if !defined(__SH5__) || !__SHMEDIA__
2+
#include "../../string/strncpy.c"
3+
#endif

newlib/libc/machine/sh/sys/fenv.h

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*-
2+
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3+
*
4+
* Copyright (c) 2004-2005 David Schultz <[email protected]>
5+
* All rights reserved.
6+
*
7+
* Redistribution and use in source and binary forms, with or without
8+
* modification, are permitted provided that the following conditions
9+
* are met:
10+
* 1. Redistributions of source code must retain the above copyright
11+
* notice, this list of conditions and the following disclaimer.
12+
* 2. Redistributions in binary form must reproduce the above copyright
13+
* notice, this list of conditions and the following disclaimer in the
14+
* documentation and/or other materials provided with the distribution.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26+
* SUCH DAMAGE.
27+
*
28+
* $FreeBSD$
29+
*/
30+
31+
#ifndef _SYS_FENV_H_
32+
#define _SYS_FENV_H_ 1
33+
34+
#include <sys/_types.h>
35+
#include <sys/cdefs.h>
36+
37+
#ifdef __cplusplus
38+
extern "C" {
39+
#endif
40+
41+
typedef int fenv_t;
42+
typedef int fexcept_t;
43+
44+
#ifdef __SH_FPU_ANY__
45+
46+
#ifdef __SH2E__
47+
#define PICOLIBC_LONG_DOUBLE_NOROUND
48+
#define PICOLIBC_LONG_DOUBLE_NOEXCEPT
49+
#if __SIZEOF_DOUBLE__ > 4
50+
#define PICOLIBC_DOUBLE_NOROUND
51+
#define PICOLIBC_DOUBLE_NOEXCEPT
52+
#endif
53+
#endif
54+
55+
#ifdef __SH4_SINGLE_ONLY__
56+
#define PICOLIBC_LONG_DOUBLE_NOROUND
57+
#define PICOLIBC_LONG_DOUBLE_NOEXCEPT
58+
#endif
59+
60+
/* Exception flags */
61+
#define FE_INVALID 0x0040
62+
#define FE_DIVBYZERO 0x0020
63+
#define FE_OVERFLOW 0x0010
64+
#define FE_UNDERFLOW 0x0008
65+
#define FE_INEXACT 0x0004
66+
#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | \
67+
FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
68+
69+
/* Rounding modes */
70+
#define FE_TONEAREST 0x0000
71+
#define FE_TOWARDZERO 0x0001
72+
73+
#endif
74+
75+
#ifdef __cplusplus
76+
}
77+
#endif
78+
79+
#endif /* _SYS_FENV_H_ */
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#
2+
# SPDX-License-Identifier: BSD-3-Clause
3+
#
4+
# Copyright © 2020 Keith Packard,
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions
8+
# are met:
9+
#
10+
# 1. Redistributions of source code must retain the above copyright
11+
# notice, this list of conditions and the following disclaimer.
12+
#
13+
# 2. Redistributions in binary form must reproduce the above
14+
# copyright notice, this list of conditions and the following
15+
# disclaimer in the documentation and/or other materials provided
16+
# with the distribution.
17+
#
18+
# 3. Neither the name of the copyright holder nor the names of its
19+
# contributors may be used to endorse or promote products derived
20+
# from this software without specific prior written permission.
21+
#
22+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24+
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25+
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26+
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
27+
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30+
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31+
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
33+
# OF THE POSSIBILITY OF SUCH DAMAGE.
34+
#
35+
inc_sys_headers_machine = [
36+
'fenv.h'
37+
]
38+
39+
install_headers(inc_sys_headers_machine,
40+
install_dir: include_dir / 'sys')

0 commit comments

Comments
 (0)