Merge pull request #5044 from BernardXiong/libc_pr

[libc] remove rtlibc
This commit is contained in:
Bernard Xiong 2021-09-11 20:00:39 +08:00 committed by GitHub
commit 4423b487c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 305 additions and 406 deletions

View File

@ -8,7 +8,7 @@
* 2019-07-23 tyustli first version * 2019-07-23 tyustli first version
* *
*/ */
#include <stddef.h>
#include <rtthread.h> #include <rtthread.h>
#include <rtdevice.h> #include <rtdevice.h>
#include "board.h" #include "board.h"

View File

@ -8,7 +8,6 @@ cwd = GetCurrentDir()
src = Glob('GD32VF103_standard_peripheral/Source/*.c') src = Glob('GD32VF103_standard_peripheral/Source/*.c')
src += Glob('n22/env_Eclipse/*.c') src += Glob('n22/env_Eclipse/*.c')
src += Glob('n22/stubs/*.c')
src += ['GD32VF103_standard_peripheral/system_gd32vf103.c', src += ['GD32VF103_standard_peripheral/system_gd32vf103.c',
'n22/drivers/n22_func.c', 'n22/drivers/n22_func.c',
'n22/env_Eclipse/start.S', 'n22/env_Eclipse/start.S',

View File

@ -8,7 +8,7 @@
* 2013-05-18 Bernard The first version for LPC40xx * 2013-05-18 Bernard The first version for LPC40xx
* 2019-05-05 jg1uaa port to LPC1114 * 2019-05-05 jg1uaa port to LPC1114
*/ */
#include <stddef.h>
#include <rtthread.h> #include <rtthread.h>
#include <rtdevice.h> #include <rtdevice.h>
#include <rthw.h> #include <rthw.h>

View File

@ -1,11 +1,14 @@
/* /*
* File : uart.c * Copyright (c) 2006-2021, RT-Thread Development Team
* Drivers for s3c2440 uarts. *
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2020-04-09 Jonne Code refactoring for new bsp * 2020-04-09 Jonne Code refactoring for new bsp
*/ */
#include <stddef.h>
#include <rthw.h> #include <rthw.h>
#include <rtdevice.h> #include <rtdevice.h>
#include <board.h> #include <board.h>
@ -132,7 +135,8 @@ static void rt_hw_uart_isr(int irqno, void *param)
} }
} }
static struct rt_uart_ops s3c2440_uart_ops = { static struct rt_uart_ops s3c2440_uart_ops =
{
.configure = s3c2440_serial_configure, .configure = s3c2440_serial_configure,
.control = s3c2440_serial_control, .control = s3c2440_serial_control,
.putc = s3c2440_putc, .putc = s3c2440_putc,
@ -140,35 +144,41 @@ static struct rt_uart_ops s3c2440_uart_ops = {
}; };
static struct rt_serial_device _serial0 = { static struct rt_serial_device _serial0 =
{
.ops = &s3c2440_uart_ops, .ops = &s3c2440_uart_ops,
.config = RT_SERIAL_CONFIG_DEFAULT, .config = RT_SERIAL_CONFIG_DEFAULT,
.serial_rx = NULL, .serial_rx = NULL,
.serial_tx = NULL .serial_tx = NULL
}; };
static struct hw_uart_device _hwserial0 = { static struct hw_uart_device _hwserial0 =
{
.hw_base = 0x50000000, .hw_base = 0x50000000,
.irqno = INTUART0 .irqno = INTUART0
}; };
static struct rt_serial_device _serial1 = { static struct rt_serial_device _serial1 =
{
.ops = &s3c2440_uart_ops, .ops = &s3c2440_uart_ops,
.config = RT_SERIAL_CONFIG_DEFAULT, .config = RT_SERIAL_CONFIG_DEFAULT,
.serial_rx = NULL, .serial_rx = NULL,
.serial_tx = NULL .serial_tx = NULL
}; };
static struct hw_uart_device _hwserial1 = { static struct hw_uart_device _hwserial1 =
{
.hw_base = 0x50004000, .hw_base = 0x50004000,
.irqno = INTUART1 .irqno = INTUART1
}; };
static struct rt_serial_device _serial2 = { static struct rt_serial_device _serial2 =
{
.ops = &s3c2440_uart_ops, .ops = &s3c2440_uart_ops,
.config = RT_SERIAL_CONFIG_DEFAULT, .config = RT_SERIAL_CONFIG_DEFAULT,
.serial_rx = NULL, .serial_rx = NULL,
.serial_tx = NULL .serial_tx = NULL
}; };
static struct hw_uart_device _hwserial2 = { static struct hw_uart_device _hwserial2 =
{
.hw_base = 0x50008000, .hw_base = 0x50008000,
.irqno = INTUART2 .irqno = INTUART2
}; };
@ -198,5 +208,5 @@ int rt_hw_uart_init(void)
return RT_EOK; return RT_EOK;
} }
INIT_BOARD_EXPORT(rt_hw_uart_init); INIT_BOARD_EXPORT(rt_hw_uart_init);

View File

@ -7,7 +7,8 @@
* Date Author Notes * Date Author Notes
* 2021-05-20 bigmagic first version * 2021-05-20 bigmagic first version
*/ */
#include "rtthread.h" #include <rtthread.h>
#include <stdint.h>
#include "plic.h" #include "plic.h"
#include <riscv_io.h> #include <riscv_io.h>
#include "encoding.h" #include "encoding.h"

View File

@ -72,8 +72,8 @@ sbi_get_impl_version(void)
void void
sbi_print_version(void) sbi_print_version(void)
{ {
u_int major; int major;
u_int minor; int minor;
/* For legacy SBI implementations. */ /* For legacy SBI implementations. */
if (sbi_spec_version == 0) if (sbi_spec_version == 0)

View File

@ -48,6 +48,7 @@
#ifndef _MACHINE_SBI_H_ #ifndef _MACHINE_SBI_H_
#define _MACHINE_SBI_H_ #define _MACHINE_SBI_H_
#include <stdint.h>
#include <rtdef.h> #include <rtdef.h>
/* SBI Specification Version */ /* SBI Specification Version */

View File

@ -9,9 +9,12 @@
* 2020-10-30 bigmagic first version * 2020-10-30 bigmagic first version
*/ */
#include <rthw.h>
#include <stdint.h> #include <stdint.h>
#include <rthw.h>
#include <rtthread.h> #include <rtthread.h>
#include "board.h"
#include <lwip/sys.h> #include <lwip/sys.h>
#include <netif/ethernetif.h> #include <netif/ethernetif.h>
@ -428,7 +431,7 @@ static rt_uint32_t bcmgenet_gmac_eth_recv(rt_uint8_t **packetp)
} }
else else
{ {
if(prev_recv_cnt == prod_index & 0xffff) if (prev_recv_cnt == (prod_index & 0xffff))
{ {
return 0; return 0;
} }
@ -437,11 +440,12 @@ static rt_uint32_t bcmgenet_gmac_eth_recv(rt_uint8_t **packetp)
length = read32(desc_base + DMA_DESC_LENGTH_STATUS); length = read32(desc_base + DMA_DESC_LENGTH_STATUS);
length = (length >> DMA_BUFLENGTH_SHIFT) & DMA_BUFLENGTH_MASK; length = (length >> DMA_BUFLENGTH_SHIFT) & DMA_BUFLENGTH_MASK;
addr = read32(desc_base + DMA_DESC_ADDRESS_LO); addr = read32(desc_base + DMA_DESC_ADDRESS_LO);
/* To cater for the IP headepr alignment the hardware does. /* To cater for the IP headepr alignment the hardware does.
* This would actually not be needed if we don't program * This would actually not be needed if we don't program
* RBUF_ALIGN_2B * RBUF_ALIGN_2B
*/ */
rt_hw_cpu_dcache_invalidate(addr,length); rt_hw_cpu_dcache_ops(RT_HW_CACHE_INVALIDATE, (void *) addr, length);
*packetp = (rt_uint8_t *)(addr + RX_BUF_OFFSET); *packetp = (rt_uint8_t *)(addr + RX_BUF_OFFSET);
rx_index = rx_index + 1; rx_index = rx_index + 1;
@ -468,16 +472,16 @@ static int bcmgenet_gmac_eth_send(void *packet, int length)
void *desc_base = (TX_DESC_BASE + tx_index * DMA_DESC_SIZE); void *desc_base = (TX_DESC_BASE + tx_index * DMA_DESC_SIZE);
rt_uint32_t len_stat = length << DMA_BUFLENGTH_SHIFT; rt_uint32_t len_stat = length << DMA_BUFLENGTH_SHIFT;
rt_uint32_t prod_index, cons; rt_uint32_t prod_index;
rt_uint32_t tries = 100;
prod_index = read32(MAC_REG + TDMA_PROD_INDEX); prod_index = read32(MAC_REG + TDMA_PROD_INDEX);
len_stat |= 0x3F << DMA_TX_QTAG_SHIFT; len_stat |= 0x3F << DMA_TX_QTAG_SHIFT;
len_stat |= DMA_TX_APPEND_CRC | DMA_SOP | DMA_EOP; len_stat |= DMA_TX_APPEND_CRC | DMA_SOP | DMA_EOP;
rt_hw_cpu_dcache_clean((void*)packet, length); rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, (void *)packet, length);
write32((desc_base + DMA_DESC_ADDRESS_LO), packet);
write32((desc_base + DMA_DESC_ADDRESS_LO), (rt_uint32_t)packet);
write32((desc_base + DMA_DESC_ADDRESS_HI), 0); write32((desc_base + DMA_DESC_ADDRESS_HI), 0);
write32((desc_base + DMA_DESC_LENGTH_STATUS), len_stat); write32((desc_base + DMA_DESC_LENGTH_STATUS), len_stat);

View File

@ -12,6 +12,7 @@
#define __MBOX_H__ #define __MBOX_H__
#include <rtthread.h> #include <rtthread.h>
#include "board.h"
//https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface //https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
//https://github.com/hermanhermitage/videocoreiv //https://github.com/hermanhermitage/videocoreiv

View File

@ -11,6 +11,7 @@
#ifndef __DRV_PWM_H__ #ifndef __DRV_PWM_H__
#define __DRV_PWM_H__ #define __DRV_PWM_H__
#include <stdint.h>
#include<rtdevice.h> #include<rtdevice.h>
#include<rthw.h> #include<rthw.h>

View File

@ -11,6 +11,7 @@
#ifndef __DRV_SPI_H__ #ifndef __DRV_SPI_H__
#define __DRV_SPI_H__ #define __DRV_SPI_H__
#include <stdint.h>
#include <rtdevice.h> #include <rtdevice.h>
#include <rthw.h> #include <rthw.h>
#include "drivers/spi.h" #include "drivers/spi.h"

View File

@ -16,6 +16,8 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <dirent.h> #include <dirent.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h> #include <sys/time.h>
#include <rtdevice.h> #include <rtdevice.h>

View File

@ -16,22 +16,15 @@
#define __DFS_POSIX_H__ #define __DFS_POSIX_H__
#include <dfs_file.h> #include <dfs_file.h>
#include <sys/stat.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* directory api*/
int mkdir(const char *path, mode_t mode);
DIR *opendir(const char *name);
struct dirent *readdir(DIR *d);
long telldir(DIR *d);
void seekdir(DIR *d, off_t offset);
void rewinddir(DIR *d);
int closedir(DIR *d);
/* file api*/ /* file api*/
int open(const char *file, int flags, ...);
int close(int d); int close(int d);
#if defined(RT_USING_NEWLIB) && defined(_EXFUN) #if defined(RT_USING_NEWLIB) && defined(_EXFUN)
@ -45,11 +38,7 @@ int write(int fd, const void *buf, size_t len);
off_t lseek(int fd, off_t offset, int whence); off_t lseek(int fd, off_t offset, int whence);
int rename(const char *from, const char *to); int rename(const char *from, const char *to);
int unlink(const char *pathname); int unlink(const char *pathname);
int stat(const char *file, struct stat *buf);
int fstat(int fildes, struct stat *buf);
int fsync(int fildes); int fsync(int fildes);
int fcntl(int fildes, int cmd, ...);
int ioctl(int fildes, int cmd, ...);
int ftruncate(int fd, off_t length); int ftruncate(int fd, off_t length);
/* directory api*/ /* directory api*/
@ -62,7 +51,6 @@ int statfs(const char *path, struct statfs *buf);
int access(const char *path, int amode); int access(const char *path, int amode);
int pipe(int fildes[2]); int pipe(int fildes[2]);
int mkfifo(const char *path, mode_t mode);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -11,6 +11,8 @@
#ifndef CPUTIME_H__ #ifndef CPUTIME_H__
#define CPUTIME_H__ #define CPUTIME_H__
#include <stdint.h>
struct rt_clock_cputime_ops struct rt_clock_cputime_ops
{ {
float (*cputime_getres) (void); float (*cputime_getres) (void);

View File

@ -15,6 +15,7 @@
#ifndef __PM_H__ #ifndef __PM_H__
#define __PM_H__ #define __PM_H__
#include <stdint.h>
#include <rtthread.h> #include <rtthread.h>
#ifndef PM_HAS_CUSTOM_CONFIG #ifndef PM_HAS_CUSTOM_CONFIG

View File

@ -8,7 +8,7 @@
* Date Author Notes * Date Author Notes
* 2020-09-27 wangqiang first version * 2020-09-27 wangqiang first version
*/ */
#include <stddef.h>
#include <rthw.h> #include <rthw.h>
#include <rtthread.h> #include <rtthread.h>
#include <rtdevice.h> #include <rtdevice.h>

View File

@ -223,7 +223,7 @@ rt_err_t set_time(rt_uint32_t hour, rt_uint32_t minute, rt_uint32_t second)
/** /**
* get date and time or set (local timezone) [year month day hour min sec] * get date and time or set (local timezone) [year month day hour min sec]
*/ */
static void date(uint8_t argc, char **argv) static void date(int argc, char **argv)
{ {
if (argc == 1) if (argc == 1)
{ {
@ -235,8 +235,9 @@ static void date(uint8_t argc, char **argv)
else if (argc >= 7) else if (argc >= 7)
{ {
/* set time and date */ /* set time and date */
uint16_t year; rt_uint16_t year;
uint8_t month, day, hour, min, sec; rt_uint8_t month, day, hour, min, sec;
year = atoi(argv[1]); year = atoi(argv[1]);
month = atoi(argv[2]); month = atoi(argv[2]);
day = atoi(argv[3]); day = atoi(argv[3]);

View File

@ -5,44 +5,17 @@
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2018-02-07 Bernard Add O_DIRECTORY definition in NEWLIB mode. * 2021-09-02 Meco Man First version
* 2018-02-09 Bernard Add O_BINARY definition
*/ */
#ifndef __FCNTL_H__
#define __FCNTL_H__
#ifndef LIBC_FCNTL_H__ #include <sys/types.h>
#define LIBC_FCNTL_H__
#if defined(RT_USING_NEWLIB) || defined(_WIN32) || (defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
#include <fcntl.h>
#ifndef O_NONBLOCK
#define O_NONBLOCK 0x4000
#endif
#if defined(_WIN32) #if defined(_WIN32)
#define O_ACCMODE (_O_RDONLY | _O_WRONLY | _O_RDWR) #define O_ACCMODE (_O_RDONLY | _O_WRONLY | _O_RDWR)
#endif #endif
#ifndef F_GETFL
#define F_GETFL 3
#endif
#ifndef F_SETFL
#define F_SETFL 4
#endif
#ifndef O_DIRECTORY
#define O_DIRECTORY 0x200000
#endif
#ifndef O_BINARY
#ifdef _O_BINARY
#define O_BINARY _O_BINARY
#else
#define O_BINARY 0
#endif
#endif
#else
#define O_RDONLY 00 #define O_RDONLY 00
#define O_WRONLY 01 #define O_WRONLY 01
#define O_RDWR 02 #define O_RDWR 02
@ -60,7 +33,6 @@
#define O_DIRECTORY 0200000 #define O_DIRECTORY 0200000
#define O_NOFOLLOW 0400000 #define O_NOFOLLOW 0400000
#define O_CLOEXEC 02000000 #define O_CLOEXEC 02000000
#define O_ASYNC 020000 #define O_ASYNC 020000
#define O_DIRECT 040000 #define O_DIRECT 040000
#define O_LARGEFILE 0100000 #define O_LARGEFILE 0100000
@ -68,7 +40,6 @@
#define O_PATH 010000000 #define O_PATH 010000000
#define O_TMPFILE 020200000 #define O_TMPFILE 020200000
#define O_NDELAY O_NONBLOCK #define O_NDELAY O_NONBLOCK
#define O_SEARCH O_PATH #define O_SEARCH O_PATH
#define O_EXEC O_PATH #define O_EXEC O_PATH
@ -93,6 +64,9 @@
#define F_GETOWN_EX 16 #define F_GETOWN_EX 16
#define F_GETOWNER_UIDS 17 #define F_GETOWNER_UIDS 17
#endif
int open(const char *file, int flags, ...);
int fcntl(int fildes, int cmd, ...);
int creat(const char *, mode_t);
#endif #endif

View File

@ -1,18 +0,0 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#ifndef FCNTL_H__
#define FCNTL_H__
#include <rtconfig.h>
#ifdef RT_USING_DFS
#include <dfs_posix.h>
#endif
#endif

View File

@ -5,9 +5,79 @@
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2021-09-02 Meco Man First version
*/ */
#ifndef __SYS_STAT_H__ #ifndef __SYS_STAT_H__
#define __SYS_STAT_H__ #define __SYS_STAT_H__
#include <sys/types.h>
#include <sys/time.h>
#define S_IFMT 00170000
#define S_IFSOCK 0140000
#define S_IFLNK 0120000
#define S_IFREG 0100000
#define S_IFBLK 0060000
#define S_IFDIR 0040000
#define S_IFCHR 0020000
#define S_IFIFO 0010000
#define S_ISUID 0004000
#define S_ISGID 0002000
#define S_ISVTX 0001000
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#define S_IRWXU 00700
#define S_IRUSR 00400
#define S_IWUSR 00200
#define S_IXUSR 00100
#define S_IRWXG 00070
#define S_IRGRP 00040
#define S_IWGRP 00020
#define S_IXGRP 00010
#define S_IRWXO 00007
#define S_IROTH 00004
#define S_IWOTH 00002
#define S_IXOTH 00001
struct stat
{
struct rt_device *st_dev;
uint16_t st_ino;
uint16_t st_mode;
uint16_t st_nlink;
uint16_t st_uid;
uint16_t st_gid;
struct rt_device *st_rdev;
uint32_t st_size;
time_t st_atime;
long st_spare1;
time_t st_mtime;
long st_spare2;
time_t st_ctime;
long st_spare3;
uint32_t st_blksize;
uint32_t st_blocks;
long st_spare4[2];
};
int chmod(const char *, mode_t);
int fchmod(int, mode_t);
int fstat(int, struct stat *);
int lstat(const char *, struct stat *);
int mkdir(const char *, mode_t);
int mkfifo(const char *, mode_t);
int mknod(const char *, mode_t, dev_t);
int stat(const char *, struct stat *);
mode_t umask(mode_t);
#endif #endif

View File

@ -235,4 +235,6 @@ struct winsize {
#define SIOCDEVPRIVATE 0x89F0 #define SIOCDEVPRIVATE 0x89F0
#define SIOCPROTOPRIVATE 0x89E0 #define SIOCPROTOPRIVATE 0x89E0
int ioctl(int fildes, int cmd, ...);
#endif #endif

View File

@ -9,7 +9,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <fcntl.h>
#include <rtthread.h> #include <rtthread.h>
#include "libc.h" #include "libc.h"

View File

@ -9,7 +9,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <fcntl.h>
#include <rtthread.h> #include <rtthread.h>
#include "libc.h" #include "libc.h"

View File

@ -28,12 +28,7 @@ typedef rt_int32_t Elf64_Sword;
typedef rt_uint32_t Elf64_Word; typedef rt_uint32_t Elf64_Word;
typedef rt_uint64_t Elf64_Xword; typedef rt_uint64_t Elf64_Xword;
typedef rt_int64_t Elf64_Sxword; typedef rt_int64_t Elf64_Sxword;
typedef uint16_t Elf64_Section; typedef rt_uint16_t Elf64_Section;
/* e_ident[] magic number */ /* e_ident[] magic number */
#define ELFMAG0 0x7f /* e_ident[EI_MAG0] */ #define ELFMAG0 0x7f /* e_ident[EI_MAG0] */
@ -91,8 +86,8 @@ typedef struct elfhdr
header string table" entry offset */ header string table" entry offset */
} Elf32_Ehdr; } Elf32_Ehdr;
typedef struct elf64_hdr
typedef struct elf64_hdr { {
unsigned char e_ident[EI_NIDENT]; /* ELF Identification */ unsigned char e_ident[EI_NIDENT]; /* ELF Identification */
Elf64_Half e_type; /* object file type */ Elf64_Half e_type; /* object file type */
Elf64_Half e_machine; /* machine */ Elf64_Half e_machine; /* machine */
@ -140,7 +135,6 @@ typedef struct
Elf64_Xword sh_entsize; /* Entry size if section holds table */ Elf64_Xword sh_entsize; /* Entry size if section holds table */
} Elf64_Shdr; } Elf64_Shdr;
/* Section names */ /* Section names */
#define ELF_BSS ".bss" /* uninitialized data */ #define ELF_BSS ".bss" /* uninitialized data */
#define ELF_DATA ".data" /* initialized data */ #define ELF_DATA ".data" /* initialized data */
@ -176,7 +170,6 @@ typedef struct elf32_sym
Elf32_Half st_shndx; /* section header index */ Elf32_Half st_shndx; /* section header index */
} Elf32_Sym; } Elf32_Sym;
typedef struct typedef struct
{ {
Elf64_Word st_name; /* Symbol name (string tbl index) */ Elf64_Word st_name; /* Symbol name (string tbl index) */
@ -187,8 +180,6 @@ typedef struct
Elf64_Xword st_size; /* Symbol size */ Elf64_Xword st_size; /* Symbol size */
} Elf64_Sym; } Elf64_Sym;
#define STB_LOCAL 0 /* BIND */ #define STB_LOCAL 0 /* BIND */
#define STB_GLOBAL 1 #define STB_GLOBAL 1
#define STB_WEAK 2 #define STB_WEAK 2
@ -249,8 +240,6 @@ typedef struct
#define ELF32_R_TYPE(i) ((unsigned char) (i)) #define ELF32_R_TYPE(i) ((unsigned char) (i))
#define ELF32_R_INFO(s,t) (((s) << 8) + (unsigned char)(t)) #define ELF32_R_INFO(s,t) (((s) << 8) + (unsigned char)(t))
#define ELF64_R_SYM(i) ((i) >> 32) #define ELF64_R_SYM(i) ((i) >> 32)
#define ELF64_R_TYPE(i) ((i) & 0xffffffff) #define ELF64_R_TYPE(i) ((i) & 0xffffffff)
#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) #define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type))
@ -301,7 +290,6 @@ typedef struct
Elf32_Word p_align; /* memory alignment */ Elf32_Word p_align; /* memory alignment */
} Elf32_Phdr; } Elf32_Phdr;
typedef struct typedef struct
{ {
Elf64_Word p_type; /* Segment type */ Elf64_Word p_type; /* Segment type */
@ -314,10 +302,6 @@ typedef struct
Elf64_Xword p_align; /* Segment alignment */ Elf64_Xword p_align; /* Segment alignment */
} Elf64_Phdr; } Elf64_Phdr;
/* p_type */ /* p_type */
#define PT_NULL 0 #define PT_NULL 0
#define PT_LOAD 1 #define PT_LOAD 1
@ -389,10 +373,9 @@ typedef Elf64_Sym Elf_Sym;
typedef Elf64_Rela Elf_Rel; typedef Elf64_Rela Elf_Rel;
typedef Elf64_Addr Elf_Addr; typedef Elf64_Addr Elf_Addr;
#endif #endif
int dlmodule_relocate(struct rt_dlmodule *module, Elf_Rel *rel, Elf_Addr sym_val); int dlmodule_relocate(struct rt_dlmodule *module, Elf_Rel *rel, Elf_Addr sym_val);
rt_err_t dlmodule_load_shared_object(struct rt_dlmodule *module, void *module_ptr); rt_err_t dlmodule_load_shared_object(struct rt_dlmodule *module, void *module_ptr);
rt_err_t dlmodule_load_relocated_object(struct rt_dlmodule *module, void *module_ptr); rt_err_t dlmodule_load_relocated_object(struct rt_dlmodule *module, void *module_ptr);
#endif #endif

View File

@ -533,6 +533,7 @@
#ifndef LWIP_SOCKET #ifndef LWIP_SOCKET
#define LWIP_SOCKET 1 #define LWIP_SOCKET 1
#endif #endif
#include <fcntl.h>
/* /*
* LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names.

View File

@ -572,6 +572,7 @@
#ifndef LWIP_SOCKET #ifndef LWIP_SOCKET
#define LWIP_SOCKET 1 #define LWIP_SOCKET 1
#endif #endif
#include <fcntl.h>
/* /*
* LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names.

View File

@ -572,6 +572,7 @@
#ifndef LWIP_SOCKET #ifndef LWIP_SOCKET
#define LWIP_SOCKET 1 #define LWIP_SOCKET 1
#endif #endif
#include <fcntl.h>
/* /*
* LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names.

View File

@ -579,6 +579,7 @@
#ifndef LWIP_SOCKET #ifndef LWIP_SOCKET
#define LWIP_SOCKET 1 #define LWIP_SOCKET 1
#endif #endif
#include <fcntl.h>
/* /*
* LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names.

View File

@ -10,6 +10,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include <rtthread.h> #include <rtthread.h>
#include <rthw.h> #include <rthw.h>

View File

@ -7,7 +7,7 @@
* Date Author Notes * Date Author Notes
* 2018-05-18 ChenYong First version * 2018-05-18 ChenYong First version
*/ */
#include <stdlib.h>
#include <rtthread.h> #include <rtthread.h>
#include <netdev_ipaddr.h> #include <netdev_ipaddr.h>

View File

@ -9,6 +9,7 @@
* 2108-05-24 ChenYong Add socket abstraction layer * 2108-05-24 ChenYong Add socket abstraction layer
*/ */
#include <stddef.h>
#include <rtthread.h> #include <rtthread.h>
#include <netdb.h> #include <netdb.h>

View File

@ -50,8 +50,8 @@ void utest_assert_buf(const char *a, const char *b, rt_size_t sz, rt_bool_t equa
*/ */
#define uassert_true(value) __utest_assert(value, "(" #value ") is false") #define uassert_true(value) __utest_assert(value, "(" #value ") is false")
#define uassert_false(value) __utest_assert(!(value), "(" #value ") is true") #define uassert_false(value) __utest_assert(!(value), "(" #value ") is true")
#define uassert_null(value) __utest_assert((const char *)(value) == NULL, "(" #value ") is not null") #define uassert_null(value) __utest_assert((const char *)(value) == RT_NULL, "(" #value ") is not null")
#define uassert_not_null(value) __utest_assert((const char *)(value) != NULL, "(" #value ") is null") #define uassert_not_null(value) __utest_assert((const char *)(value) != RT_NULL, "(" #value ") is null")
#define uassert_int_equal(a, b) __utest_assert((a) == (b), "(" #a ") not equal to (" #b ")") #define uassert_int_equal(a, b) __utest_assert((a) == (b), "(" #a ") not equal to (" #b ")")
#define uassert_int_not_equal(a, b) __utest_assert((a) != (b), "(" #a ") equal to (" #b ")") #define uassert_int_not_equal(a, b) __utest_assert((a) != (b), "(" #a ") equal to (" #b ")")

View File

@ -1,110 +0,0 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
*/
#ifndef LIBC_STAT_H__
#define LIBC_STAT_H__
#include <rtconfig.h>
#if defined(RT_USING_NEWLIB) || (defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
/* use header file of newlib */
#include <sys/stat.h>
#elif defined(_WIN32)
#include <sys/stat.h>
#define S_IRWXU 00700
#define S_IRUSR 00400
#define S_IWUSR 00200
#define S_IXUSR 00100
#define S_IRWXG 00070
#define S_IRGRP 00040
#define S_IWGRP 00020
#define S_IXGRP 00010
#define S_IRWXO 00007
#define S_IROTH 00004
#define S_IWOTH 00002
#define S_IXOTH 00001
#define S_IFSOCK 0140000
#define S_IFLNK 0120000
#define S_IFBLK 0060000
#define S_IFIFO 0010000
#define S_ISUID 0004000
#define S_ISGID 0002000
#define S_ISVTX 0001000
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#else
#define S_IFMT 00170000
#define S_IFSOCK 0140000
#define S_IFLNK 0120000
#define S_IFREG 0100000
#define S_IFBLK 0060000
#define S_IFDIR 0040000
#define S_IFCHR 0020000
#define S_IFIFO 0010000
#define S_ISUID 0004000
#define S_ISGID 0002000
#define S_ISVTX 0001000
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
#define S_IRWXU 00700
#define S_IRUSR 00400
#define S_IWUSR 00200
#define S_IXUSR 00100
#define S_IRWXG 00070
#define S_IRGRP 00040
#define S_IWGRP 00020
#define S_IXGRP 00010
#define S_IRWXO 00007
#define S_IROTH 00004
#define S_IWOTH 00002
#define S_IXOTH 00001
/* stat structure */
#include <stdint.h>
#include <time.h>
struct stat
{
struct rt_device *st_dev;
uint16_t st_ino;
uint16_t st_mode;
uint16_t st_nlink;
uint16_t st_uid;
uint16_t st_gid;
struct rt_device *st_rdev;
uint32_t st_size;
time_t st_atime;
long st_spare1;
time_t st_mtime;
long st_spare2;
time_t st_ctime;
long st_spare3;
uint32_t st_blksize;
uint32_t st_blocks;
long st_spare4[2];
};
#endif
#endif

View File

@ -1146,9 +1146,6 @@ struct rt_device_graphic_ops
/**@}*/ /**@}*/
#endif #endif
/* definitions for libc */
#include "rtlibc.h"
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -1,31 +0,0 @@
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2017-01-21 Bernard the first version
*/
#ifndef RTLIBC_H__
#define RTLIBC_H__
/* definitions for libc if toolchain has no these definitions */
#include "libc/libc_stat.h"
#include "libc/libc_fcntl.h"
#ifndef RT_USING_LIBC
#if defined(__ARMCC_VERSION) || defined(__IAR_SYSTEMS_ICC__)
typedef signed long off_t;
typedef int mode_t;
#endif
#endif
#if defined(__MINGW32__) || defined(_WIN32)
typedef signed long off_t;
typedef int mode_t;
#endif
#endif

View File

@ -9,6 +9,8 @@
* 2020-03-19 WangHuachen first version * 2020-03-19 WangHuachen first version
* 2021-05-10 WangHuachen add more functions * 2021-05-10 WangHuachen add more functions
*/ */
#include <stdint.h>
#include <rthw.h> #include <rthw.h>
#include <rtdef.h> #include <rtdef.h>
@ -71,7 +73,8 @@ void Xil_DCacheEnable(void)
#elif defined (__ICCARM__) #elif defined (__ICCARM__)
mfcp(XREG_CP15_SYS_CONTROL, CtrlReg); mfcp(XREG_CP15_SYS_CONTROL, CtrlReg);
#endif #endif
if ((CtrlReg & XREG_CP15_CONTROL_C_BIT)==0x00000000U) { if ((CtrlReg & XREG_CP15_CONTROL_C_BIT) == 0x00000000U)
{
/* invalidate the Data cache */ /* invalidate the Data cache */
Xil_DCacheInvalidate(); Xil_DCacheInvalidate();
@ -143,24 +146,28 @@ void Xil_DCacheInvalidateRange(INTPTR adr, u32 len)
currmask = mfcpsr(); currmask = mfcpsr();
mtcpsr(currmask | IRQ_FIQ_MASK); mtcpsr(currmask | IRQ_FIQ_MASK);
if (len != 0U) { if (len != 0U)
{
end = tempadr + len; end = tempadr + len;
tempend = end; tempend = end;
/* Select L1 Data cache in CSSR */ /* Select L1 Data cache in CSSR */
mtcp(XREG_CP15_CACHE_SIZE_SEL, 0U); mtcp(XREG_CP15_CACHE_SIZE_SEL, 0U);
if ((tempadr & (cacheline-1U)) != 0U) { if ((tempadr & (cacheline - 1U)) != 0U)
{
tempadr &= (~(cacheline - 1U)); tempadr &= (~(cacheline - 1U));
Xil_DCacheFlushLine(tempadr); Xil_DCacheFlushLine(tempadr);
} }
if ((tempend & (cacheline-1U)) != 0U) { if ((tempend & (cacheline - 1U)) != 0U)
{
tempend &= (~(cacheline - 1U)); tempend &= (~(cacheline - 1U));
Xil_DCacheFlushLine(tempend); Xil_DCacheFlushLine(tempend);
} }
while (tempadr < tempend) { while (tempadr < tempend)
{
/* Invalidate Data cache line */ /* Invalidate Data cache line */
asm_inval_dc_line_mva_poc(tempadr); asm_inval_dc_line_mva_poc(tempadr);
@ -211,8 +218,10 @@ void Xil_DCacheFlush(void)
Set = 0U; Set = 0U;
/* Invalidate all the cachelines */ /* Invalidate all the cachelines */
for (WayIndex = 0U; WayIndex < NumWays; WayIndex++) { for (WayIndex = 0U; WayIndex < NumWays; WayIndex++)
for (SetIndex = 0U; SetIndex < NumSet; SetIndex++) { {
for (SetIndex = 0U; SetIndex < NumSet; SetIndex++)
{
C7Reg = Way | Set; C7Reg = Way | Set;
/* Flush by Set/Way */ /* Flush by Set/Way */
asm_clean_inval_dc_line_sw(C7Reg); asm_clean_inval_dc_line_sw(C7Reg);
@ -256,14 +265,16 @@ void Xil_DCacheFlushRange(INTPTR adr, u32 len)
currmask = mfcpsr(); currmask = mfcpsr();
mtcpsr(currmask | IRQ_FIQ_MASK); mtcpsr(currmask | IRQ_FIQ_MASK);
if (len != 0x00000000U) { if (len != 0x00000000U)
{
/* Back the starting address up to the start of a cache line /* Back the starting address up to the start of a cache line
* perform cache operations until adr+len * perform cache operations until adr+len
*/ */
end = LocalAddr + len; end = LocalAddr + len;
LocalAddr &= ~(cacheline - 1U); LocalAddr &= ~(cacheline - 1U);
while (LocalAddr < end) { while (LocalAddr < end)
{
/* Flush Data cache line */ /* Flush Data cache line */
asm_clean_inval_dc_line_mva_poc(LocalAddr); asm_clean_inval_dc_line_mva_poc(LocalAddr);
@ -301,7 +312,8 @@ void Xil_ICacheEnable(void)
#elif defined (__ICCARM__) #elif defined (__ICCARM__)
mfcp(XREG_CP15_SYS_CONTROL, CtrlReg); mfcp(XREG_CP15_SYS_CONTROL, CtrlReg);
#endif #endif
if ((CtrlReg & XREG_CP15_CONTROL_I_BIT)==0x00000000U) { if ((CtrlReg & XREG_CP15_CONTROL_I_BIT) == 0x00000000U)
{
/* invalidate the instruction cache */ /* invalidate the instruction cache */
mtcp(XREG_CP15_INVAL_IC_POU, 0); mtcp(XREG_CP15_INVAL_IC_POU, 0);
@ -374,7 +386,8 @@ void Xil_ICacheInvalidateRange(INTPTR adr, u32 len)
currmask = mfcpsr(); currmask = mfcpsr();
mtcpsr(currmask | IRQ_FIQ_MASK); mtcpsr(currmask | IRQ_FIQ_MASK);
if (len != 0x00000000U) { if (len != 0x00000000U)
{
/* Back the starting address up to the start of a cache line /* Back the starting address up to the start of a cache line
* perform cache operations until adr+len * perform cache operations until adr+len
*/ */
@ -384,7 +397,8 @@ void Xil_ICacheInvalidateRange(INTPTR adr, u32 len)
/* Select cache L0 I-cache in CSSR */ /* Select cache L0 I-cache in CSSR */
mtcp(XREG_CP15_CACHE_SIZE_SEL, 1U); mtcp(XREG_CP15_CACHE_SIZE_SEL, 1U);
while (LocalAddr < end) { while (LocalAddr < end)
{
/* Invalidate L1 I-cache line */ /* Invalidate L1 I-cache line */
asm_inval_ic_line_mva_pou(LocalAddr); asm_inval_ic_line_mva_pou(LocalAddr);

View File

@ -63,7 +63,7 @@ struct pt_regs {
* so it should be a part of pt_regs */ * so it should be a part of pt_regs */
struct mips_fpu_struct fpu; struct mips_fpu_struct fpu;
#endif #endif
} __aligned(8); } __attribute__((aligned(8)));
#endif #endif
/* Note: For call stack o32 ABI has 0x8 shadowsoace Here */ /* Note: For call stack o32 ABI has 0x8 shadowsoace Here */

View File

@ -9,13 +9,13 @@
* 2021-02-11 lizhirui add gp support * 2021-02-11 lizhirui add gp support
*/ */
#include <stddef.h>
#include <rthw.h> #include <rthw.h>
#include <rtthread.h> #include <rtthread.h>
#include "cpuport.h" #include "cpuport.h"
#include "stack.h" #include "stack.h"
/** /**
* @brief from thread used interrupt context switch * @brief from thread used interrupt context switch
* *