diff --git a/ChangeLog b/ChangeLog
index 76aac2e11c7..8c3968c0c32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7540,12 +7540,8 @@
runs from ISRAM and loads an Intel HEX file into DRAM (2014-6-26).
* configs/sama5d4-ek/nsh and scripts/: Setup the SAMA5D4-EK NSHi
configuration to use the DRAMBOOT loader by default (2014-6-26).
+ * binfmt: Various changes associated with symbol tables. Most from Pelle
+ Windestam (2014-6-27).
+ * Networkin: Add network device ioctl to access PHY registers. From Daniel
+ Lazlo Sitzer (2014-6-27).
* net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
- * net/netdev: Move net/netdev*.c to net/netdev/netdev*.c (2014-6-27).
-
diff --git a/Documentation/NuttXNxFlat.html b/Documentation/NuttXNxFlat.html
index 41b2a19ee9f..89b415041b5 100644
--- a/Documentation/NuttXNxFlat.html
+++ b/Documentation/NuttXNxFlat.html
@@ -407,7 +407,10 @@ any following arguments.
nuttx/syscall/syscall.csv that describes the NuttX RTOS interface, and
nuttx/libc/lib.csv that describes the NuttX C library interface.
+ nuttx/libc/libc.csv that describes the NuttX C library interface.
+ nuttx/libc/math.cvs that descirbes any math library.
@@ -424,7 +427,7 @@ Where:
cd nuttx/tools -cat ../syscall/syscall.csv ../libc/lib.csv | sort >tmp.csv +cat ../syscall/syscall.csv ../libc/libc.csv | sort >tmp.csv ./mksymtab.exe tmp.csv tmp.cdiff --git a/arch/arm/src/stm32/stm32_eth.c b/arch/arm/src/stm32/stm32_eth.c index 2197665b32e..0d86cd605a7 100644 --- a/arch/arm/src/stm32/stm32_eth.c +++ b/arch/arm/src/stm32/stm32_eth.c @@ -665,6 +665,9 @@ static void stm32_rxdescinit(FAR struct stm32_ethmac_s *priv); /* PHY Initialization */ +#ifdef CONFIG_NETDEV_PHY_IOCTL +static int stm32_ioctl(int cmd, struct mii_ioctl_data *req); +#endif static int stm32_phyread(uint16_t phydevaddr, uint16_t phyregaddr, uint16_t *value); static int stm32_phywrite(uint16_t phydevaddr, uint16_t phyregaddr, uint16_t value); #ifdef CONFIG_ETH0_PHY_DM9161 @@ -2475,6 +2478,63 @@ static void stm32_rxdescinit(FAR struct stm32_ethmac_s *priv) stm32_putreg((uint32_t)priv->rxtable, STM32_ETH_DMARDLAR); } +/**************************************************************************** + * Function: stm32_ioctl + * + * Description: + * Executes the SIOCxMIIxxx command and responds using the request struct + * that must be provided as its 2nd parameter. + * + * When called with SIOCGMIIPHY it will get the PHY address for the device + * and write it to the req->phy_id field of the request struct. + * + * When called with SIOCGMIIREG it will read a register of the PHY that is + * specified using the req->reg_no struct field and then write its output + * to the req->val_out field. + * + * When called with SIOCSMIIREG it will write to a register of the PHY that + * is specified using the req->reg_no struct field and use req->val_in as + * its input. + * + * Parameters: + * cmd - SIOCxMIIxxx command code + * req - request structure also used to return values + * + * Returned Value: Negated errno on failure. + * + * Assumptions: + * + ****************************************************************************/ + +#ifdef CONFIG_NETDEV_PHY_IOCTL +static int stm32_ioctl(int cmd, struct mii_ioctl_data *req) +{ + int ret = -ENOTTY; + + switch (cmd) + { + case SIOCGMIIPHY: /* Get MII PHY address */ + req->phy_id = CONFIG_STM32_PHYADDR; + ret = OK; + break; + + case SIOCGMIIREG: /* Get register from MII PHY */ + ret = stm32_phyread(req->phy_id, req->reg_num, &req->val_out); + break; + + case SIOCSMIIREG: /* Set register in MII PHY */ + ret = stm32_phywrite(req->phy_id, req->reg_num, req->val_in); + break; + + default: + ret = -EINVAL; + break; + } + + return ret; +} +#endif /* CONFIG_NETDEV_PHY_IOCTL */ + /**************************************************************************** * Function: stm32_phyread * @@ -3460,6 +3520,9 @@ int stm32_ethinitialize(int intf) #ifdef CONFIG_NET_IGMP priv->dev.d_addmac = stm32_addmac; /* Add multicast MAC address */ priv->dev.d_rmmac = stm32_rmmac; /* Remove multicast MAC address */ +#endif +#ifdef CONFIG_NETDEV_PHY_IOCTL + priv->dev.d_ioctl = stm32_ioctl; /* Support PHY ioctl() calls */ #endif priv->dev.d_private = (void*)g_stm32ethmac; /* Used to recover private state from dev */ diff --git a/configs/README.txt b/configs/README.txt index ff1ef80a7aa..8ed0060aafa 100644 --- a/configs/README.txt +++ b/configs/README.txt @@ -684,7 +684,7 @@ There are also common-separated value (CSV) values in the source try that provide information about symbols. In particular: nuttx/syscall/syscall.csv - Describes the NuttX RTOS interface, and - nuttx/lib/lib.csv - Describes the NuttX C library interface. + nuttx/lib/libc.csv - Describes the NuttX C library interface. There is a tool at nuttx/tools/mksymtab that will use these CSV files as input to generate a generic symbol table. See nuttx/tools/README.txt for diff --git a/configs/sama5d4-ek/Kconfig b/configs/sama5d4-ek/Kconfig index 0b45ed29aba..de0141c8a48 100644 --- a/configs/sama5d4-ek/Kconfig +++ b/configs/sama5d4-ek/Kconfig @@ -50,7 +50,7 @@ config SAMA5D4EK_DRAM_MAIN by SAMA5D4EK_DRAM_START. NOTE: If you use this boot loader, then your program must be built at - origin 0x2000:0000, not at 0x2100:0000 as is customary with U-Boot. + origin 0x2000:0000, not at 0x2000:8000 as is customary with U-Boot. config SAMA5D4EK_DRAM_START bool "Start DRAM program" @@ -71,7 +71,7 @@ config SAMA5D4EK_DRAM_BOOT Select this option if you are going to boot using the sdram_main bootloader (created with SAMA5D4EK_DRAM_MAIN=y). This selection will simply origin your program at 0x2000:0000 as required by the - sdram_main bootloader (vs. 0x2100:0000 as required by U-Boot). + sdram_main bootloader (vs. 0x2000:8000 as required by U-Boot). config SAMA5D4EK_NAND_AUTOMOUNT bool "NAND FLASH auto-mount" diff --git a/include/cxx/cunistd b/include/cxx/cunistd index 2f0b7127092..1a9c2cf1636 100644 --- a/include/cxx/cunistd +++ b/include/cxx/cunistd @@ -66,7 +66,7 @@ namespace std using ::rmdir; using ::getopt; using ::getoptargp; - using ::getopindgp; + using ::getoptindp; using ::getoptoptp; } diff --git a/include/inttypes.h b/include/inttypes.h index 57bf1184d22..9aa1c049737 100644 --- a/include/inttypes.h +++ b/include/inttypes.h @@ -165,7 +165,8 @@ typedef void *imaxdiv_t; /* Dummy type since imaxdiv is not yet supported */ #ifdef __cplusplus #define EXTERN extern "C" -extern "C" { +extern "C" +{ #else #define EXTERN extern #endif @@ -174,13 +175,13 @@ extern "C" { * macros. Function prototypes shall be provided." */ -EXTERN intmax_t imaxabs(intmax_t); -EXTERN imaxdiv_t imaxdiv(intmax_t, intmax_t); -EXTERN intmax_t strtoimax(const char *, char **, int); -EXTERN uintmax_t strtoumax(const char *, char **, int); +intmax_t imaxabs(intmax_t); +imaxdiv_t imaxdiv(intmax_t, intmax_t); +intmax_t strtoimax(const char *, char **, int); +uintmax_t strtoumax(const char *, char **, int); -EXTERN intmax_t wcstoimax(const wchar_t *, wchar_t **, int); -EXTERN uintmax_t wcstoumax(const wchar_t *, wchar_t **, int); +intmax_t wcstoimax(const wchar_t *, wchar_t **, int); +uintmax_t wcstoumax(const wchar_t *, wchar_t **, int); #undef EXTERN #ifdef __cplusplus diff --git a/include/net/if.h b/include/net/if.h index eae6bcb3fc3..bad4a212405 100644 --- a/include/net/if.h +++ b/include/net/if.h @@ -57,11 +57,22 @@ #define IFF_RUNNING (1 << 2) #define IFF_NOARP (1 << 7) - /******************************************************************************************* * Public Type Definitions *******************************************************************************************/ +/* Part of the I/F request used to read from or write to the MII/PHY management + * interface when SIOCxMIIREG ioctl was called. + */ + +struct mii_ioctl_data +{ + uint16_t phy_id; /* PHY device address */ + uint16_t reg_num; /* PHY register address */ + uint16_t val_in; /* PHY input data */ + uint16_t val_out; /* PHY output data */ +}; + /* This is the newer form if the I/F request structure that can be used with both IPv4 * and IPv6. */ @@ -79,6 +90,7 @@ struct lifreq int lifru_count; /* Number of devices */ int lifru_mtu; /* MTU size */ uint8_t lifru_flags; /* Interface flags */ + struct mii_ioctl_data lifru_mii_data; /* MII request data */ } lifr_ifru; }; @@ -90,6 +102,10 @@ struct lifreq #define lifr_mtu lifr_ifru.lifru_mtu /* MTU */ #define lifr_count lifr_ifru.lifru_count /* Number of devices */ #define lifr_flags lifr_ifru.lifru_flags /* interface flags */ +#define lifr_mii_phy_id lifr_ifru.lifru_mii_data.phy_id /* PHY device address */ +#define lifr_mii_reg_num lifr_ifru.lifru_mii_data.reg_num /* PHY register address */ +#define lifr_mii_val_in lifr_ifru.lifru_mii_data.val_in /* PHY input data */ +#define lifr_mii_val_out lifr_ifru.lifru_mii_data.val_out /* PHY output data */ /* This is the older I/F request that should only be used with IPv4. However, since * NuttX only supports IPv4 or 6 (not both), we can force the older structure to @@ -110,6 +126,7 @@ struct ifreq int ifru_count; /* Number of devices */ int ifru_mtu; /* MTU size */ uint8_t ifru_flags; /* Interface flags */ + struct mii_ioctl_data ifru_mii_data; /* MII request data */ } ifr_ifru; }; @@ -121,6 +138,10 @@ struct ifreq #define ifr_mtu ifr_ifru.ifru_mtu /* MTU */ #define ifr_count ifr_ifru.ifru_count /* Number of devices */ #define ifr_flags ifr_ifru.ifru_flags /* interface flags */ +#define ifr_mii_phy_id ifr_ifru.ifru_mii_data.phy_id /* PHY device address */ +#define ifr_mii_reg_num ifr_ifru.ifru_mii_data.reg_num /* PHY register address */ +#define ifr_mii_val_in ifr_ifru.ifru_mii_data.val_in /* PHY input data */ +#define ifr_mii_val_out ifr_ifru.ifru_mii_data.val_out /* PHY output data */ #else /* CONFIG_NET_IPv6 */ @@ -134,6 +155,10 @@ struct ifreq #define ifr_mtu lifr_ifru.lifru_mtu /* MTU */ #define ifr_count lifr_ifru.lifru_count /* Number of devices */ #define ifr_flags lifr_ifru.lifru_flags /* interface flags */ +#define ifr_mii_phy_id lifr_ifru.lifru_mii_data.phy_id /* PHY device address */ +#define ifr_mii_reg_num lifr_ifru.lifru_mii_data.reg_num /* PHY register address */ +#define ifr_mii_val_in lifr_ifru.lifru_mii_data.val_in /* PHY input data */ +#define ifr_mii_val_out lifr_ifru.lifru_mii_data.val_out /* PHY output data */ #endif /* CONFIG_NET_IPv6 */ diff --git a/include/nuttx/math.h b/include/nuttx/math.h index c01963cff1e..d7945ec95eb 100644 --- a/include/nuttx/math.h +++ b/include/nuttx/math.h @@ -150,6 +150,14 @@ double round (double x); long double roundl(long double x); #endif +float rintf(float x); /* Not implemented */ +#if CONFIG_HAVE_DOUBLE +double_t rint(double_t x); +#endif +#ifdef CONFIG_HAVE_LONG_DOUBLE +long double rintl(long double x); /* Not implemented */ +#endif + float fabsf (float x); #if CONFIG_HAVE_DOUBLE double fabs (double x); diff --git a/include/nuttx/net/ioctl.h b/include/nuttx/net/ioctl.h index 7fbcc3b201a..7c2e1cb4974 100644 --- a/include/nuttx/net/ioctl.h +++ b/include/nuttx/net/ioctl.h @@ -160,6 +160,12 @@ #define SIOCSIWPMKSA _SIOC(0x0041) /* PMKSA cache operation */ +/* MDIO/MCD *****************************************************************/ + +#define SIOCGMIIPHY _SIOC(0x0042) /* Get address of MII PHY in use */ +#define SIOCGMIIREG _SIOC(0x0043) /* Get a MII register via MDIO */ +#define SIOCSMIIREG _SIOC(0x0044) /* Set a MII register via MDIO */ + /**************************************************************************** * Type Definitions ****************************************************************************/ diff --git a/include/nuttx/net/netdev.h b/include/nuttx/net/netdev.h index 05375873817..cc781a77df5 100644 --- a/include/nuttx/net/netdev.h +++ b/include/nuttx/net/netdev.h @@ -187,6 +187,9 @@ struct uip_driver_s int (*d_addmac)(struct uip_driver_s *dev, FAR const uint8_t *mac); int (*d_rmmac)(struct uip_driver_s *dev, FAR const uint8_t *mac); #endif +#ifdef CONFIG_NETDEV_PHY_IOCTL + int (*d_ioctl)(int cmd, struct mii_ioctl_data *req); +#endif /* Drivers may attached device-specific, private information */ diff --git a/include/unistd.h b/include/unistd.h index dd1ef3f5a9c..395b434f51d 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -119,7 +119,7 @@ EXTERN int optind; /* Index into argv */ EXTERN int optopt; /* unrecognized option character */ #else # define optarg (*(getoptargp())) -# define optind (*(getopindgp())) +# define optind (*(getoptindp())) # define optopt (*(getoptoptp())) #endif @@ -183,7 +183,7 @@ int getopt(int argc, FAR char *const argv[], FAR const char *optstring); */ FAR char **getoptargp(void); /* Optional argument following option */ -int *getopindgp(void); /* Index into argv */ +int *getoptindp(void); /* Index into argv */ int *getoptoptp(void); /* unrecognized option character */ #undef EXTERN diff --git a/libc/README.txt b/libc/README.txt index 3997b6b3ce8..4ecc7c2999f 100644 --- a/libc/README.txt +++ b/libc/README.txt @@ -52,7 +52,7 @@ Library Database Information about functions available in the NuttX C library information is maintained in a database. That "database" is implemented as a simple comma- -separated-value file, lib.csv. Most spreadsheets programs will accept this +separated-value file, libc.csv. Most spreadsheets programs will accept this format and can be used to maintain the library database. This library database will (eventually) be used to generate symbol library diff --git a/libc/fixedmath/Make.defs b/libc/fixedmath/Make.defs index b53df2b2c00..e4534184c96 100644 --- a/libc/fixedmath/Make.defs +++ b/libc/fixedmath/Make.defs @@ -35,7 +35,7 @@ # Add the fixed precision math C files to the build -CSRCS += lib_rint.c lib_fixedmath.c lib_b16sin.c lib_b16cos.c lib_b16atan2.c +CSRCS += lib_fixedmath.c lib_b16sin.c lib_b16cos.c lib_b16atan2.c # Add the fixed precision math directory to the build diff --git a/libc/lib.csv b/libc/libc.csv similarity index 99% rename from libc/lib.csv rename to libc/libc.csv index 29cdf39a6a4..ec4cfb2e2ce 100644 --- a/libc/lib.csv +++ b/libc/libc.csv @@ -51,7 +51,7 @@ "gmtime_r","time.h","","FAR struct tm","FAR const time_t *","FAR struct tm *" "htonl","arpa/inet.h","","uint32_t","uint32_t" "htons","arpa/inet.h","","uint16_t","uint16_t" -"imaxabs","stdlib.h","","intmax_t","intmax_t" +"imaxabs","inttypes.h","","intmax_t","intmax_t" "inet_addr","arpa/inet.h","","in_addr_t","FAR const char " "inet_ntoa","arpa/inet.h","!defined(CONFIG_NET_IPv6) && defined(CONFIG_CAN_PASS_STRUCTS)","FAR char","struct in_addr" "inet_ntop","arpa/inet.h","","FAR const char","int","FAR const void *","FAR char *","socklen_t" @@ -62,7 +62,7 @@ "lldbg","debug.h","!defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_ARCH_LOWPUTC)","int","const char *","..." "llvdbg","debug.h","!defined(CONFIG_CPP_HAVE_VARARGS) && defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_VERBOSE) && defined(CONFIG_ARCH_LOWPUTC)","int","const char *","..." "lowsyslog","syslog.h","","int","FAR const char *","..." -"match","","","int","const char *","const char *" +"match","nuttx/regex.h","","int","const char *","const char *" "memccpy","string.h","","FAR void","FAR void *","FAR const void *","int c","size_t" "memchr","string.h","","FAR void","FAR const void *","int c","size_t" "memcmp","string.h","","int","FAR const void *","FAR const void *","size_t" @@ -102,7 +102,6 @@ "qsort","stdlib.h","","void","void *","size_t","size_t","int(*)(const void *","const void *)" "rand","stdlib.h","","int" "readdir_r","dirent.h","CONFIG_NFILE_DESCRIPTORS > 0","int","FAR DIR *","FAR struct dirent *","FAR struct dirent **" -"rint","","","double_t","double_t" "sched_get_priority_max","sched.h","","int","int" "sched_get_priority_min","sched.h","","int","int" "sem_getvalue","semaphore.h","","int","FAR sem_t *","FAR int *" diff --git a/libc/math.csv b/libc/math.csv new file mode 100644 index 00000000000..88b7fc272bf --- /dev/null +++ b/libc/math.csv @@ -0,0 +1,73 @@ +"acos","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"acosf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"acosl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"asin","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"asinf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"asinl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"atan","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"atan2","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double",double" +"atan2f","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float",float" +"atan2l","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double","long double" +"atanf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"atanl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"ceil","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"ceilf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"ceill","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"cos","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"cosf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"cosh","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"coshf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"coshl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"cosl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"exp","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"expf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"expl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"fabs","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"fabsf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"fabsl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"floor","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"floorf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"floorl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"fmod","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double","double" +"fmodf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float","float" +"fmodl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double","long double" +"frexp","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double","int *" +"frexpf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float","int *" +"frexpl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double",int *" +"ldexp","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double",int" +"ldexpf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float",int" +"ldexpl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double","int" +"log","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"log10","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"log10f","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"log10l","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"log2","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"log2f","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"log2l","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"logf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"logl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"modf","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double","double *" +"modff","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float","float *" +"modfl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double","long double *" +"pow","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double","double" +"powf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float","float" +"powl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double","long double" +"rint","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double_t","double_t" +"round","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"roundf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"roundl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"sin","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"sinf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"sinh","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"sinhf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"sinhl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"sinl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"sqrt","math.hdefined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","","" +"sqrtf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"sqrtl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"tan","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"tanf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"tanh","math.h","defined(CONFIG_HAVE_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","double","double" +"tanhf","math.h","defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH)","float","float" +"tanhl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" +"tanl","math.h","defined(CONFIG_HAVE_LONG_DOUBLE) && (defined(CONFIG_LIBM) || defined(CONFIG_ARCH_MATH))","long double","long double" diff --git a/libc/math/Make.defs b/libc/math/Make.defs index ece25f4e523..e4c75b45dc5 100644 --- a/libc/math/Make.defs +++ b/libc/math/Make.defs @@ -45,7 +45,7 @@ CSRCS += lib_roundf.c lib_sinf.c lib_sinhf.c lib_sqrtf.c lib_tanf.c lib_tanhf.c CSRCS += lib_acos.c lib_asin.c lib_atan.c lib_atan2.c lib_ceil.c lib_cos.c CSRCS += lib_cosh.c lib_exp.c lib_fabs.c lib_floor.c lib_fmod.c lib_frexp.c CSRCS += lib_ldexp.c lib_log.c lib_log10.c lib_log2.c lib_modf.c lib_pow.c -CSRCS += lib_round.c lib_sin.c lib_sinh.c lib_sqrt.c lib_tan.c lib_tanh.c +CSRCS += lib_rint.c lib_round.c lib_sin.c lib_sinh.c lib_sqrt.c lib_tan.c lib_tanh.c CSRCS += lib_acosl.c lib_asinl.c lib_atan2l.c lib_atanl.c lib_ceill.c lib_cosl.c CSRCS += lib_coshl.c lib_expl.c lib_fabsl.c lib_floorl.c lib_fmodl.c lib_frexpl.c diff --git a/libc/fixedmath/lib_rint.c b/libc/math/lib_rint.c similarity index 99% rename from libc/fixedmath/lib_rint.c rename to libc/math/lib_rint.c index a1212c970ba..677d9a6cd43 100644 --- a/libc/fixedmath/lib_rint.c +++ b/libc/math/lib_rint.c @@ -42,8 +42,10 @@ ************************************************************/ #include