Change SDK dir name. Use OpenOCD only.

Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
This commit is contained in:
Drasko DRASKOVIC 2017-05-14 18:47:13 +02:00
parent 05b731b5f3
commit eeb7f808ae
1446 changed files with 1 additions and 65 deletions

View file

@ -0,0 +1,256 @@
/*
* rtl_lib.h
*
* Definitions for RTL library functions
*/
#ifndef _RTL_LIB_ROM_H_
#define _RTL_LIB_ROM_H_
#include <basic_types.h>
#include <diag.h>
#include <reent.h>
#include "../libc/rom/string/rom_libc_string.h"
#include "../libgloss/rtl8195a/rom/rom_libgloss_retarget.h"
#ifndef _PTR
#define _PTR void *
#endif
#ifndef _AND
#define _AND ,
#endif
#ifndef _NOARGS
#define _NOARGS void
#endif
#ifndef _CONST
#define _CONST const
#endif
#ifndef _VOLATILE
#define _VOLATILE volatile
#endif
#ifndef _SIGNED
#define _SIGNED signed
#endif
#ifndef _DOTS
#define _DOTS , ...
#endif
#ifndef _VOID
#define _VOID void
#endif
//
// RTL library functions in ROM
//
#define __rtl_memset __rtl_memset_v1_00
#define __rtl_memchr __rtl_memchr_v1_00
#define __rtl_memmove __rtl_memmove_v1_00
#define __rtl_strcmp __rtl_strcmp_v1_00
#define __rtl_memcpy __rtl_memcpy_v1_00
extern _LONG_CALL_ void * __rtl_memset_v1_00(void * m , int c , size_t n);
extern _LONG_CALL_ void * __rtl_memchr_v1_00(const void * src_void , int c , size_t length);
extern _LONG_CALL_ void * __rtl_memmove_v1_00( void * dst_void , const void * src_void , size_t length);
extern _LONG_CALL_ int __rtl_strcmp_v1_00(const char *s1 , const char *s2);
extern _LONG_CALL_ void * __rtl_memcpy_v1_00(void * __restrict dst0 , const void * __restrict src0 , size_t len0);
//
// rtl eabi functions
//
#define __rtl_itod __rtl_itod_v1_00
#define __rtl_dtoi __rtl_dtoi_v1_00
#define __rtl_uitof __rtl_uitof_v1_00
#define __rtl_uitod __rtl_uitod_v1_00
#define __rtl_dcmpeq __rtl_dcmpeq_v1_00
#define __rtl_dcmplt __rtl_dcmplt_v1_00
#define __rtl_dcmpgt __rtl_dcmpgt_v1_00
#define __rtl_dadd __rtl_dadd_v1_00
#define __rtl_dsub __rtl_dsub_v1_00
#define __rtl_dmul __rtl_dmul_v1_00
#define __rtl_ddiv __rtl_ddiv_v1_00
extern _LONG_CALL_ double __rtl_itod_v1_00(int lval);
extern _LONG_CALL_ int __rtl_dtoi_v1_00(double d);
extern _LONG_CALL_ float __rtl_uitof_v1_00(unsigned int lval);
extern _LONG_CALL_ double __rtl_uitod_v1_00(unsigned int lval);
extern _LONG_CALL_ int __rtl_dcmpeq_v1_00(double a, double b);
extern _LONG_CALL_ int __rtl_dcmplt_v1_00(double a, double b);
extern _LONG_CALL_ int __rtl_dcmpgt_v1_00(double a, double b);
extern _LONG_CALL_ double __rtl_dadd_v1_00(double a, double b);
extern _LONG_CALL_ double __rtl_dsub_v1_00(double a, double b);
extern _LONG_CALL_ double __rtl_dmul_v1_00(double a, double b);
extern _LONG_CALL_ double __rtl_ddiv_v1_00(double a, double b);
//
// mprec
//
#include <reent.h>
typedef struct _Bigint _Bigint;
#define __rtl_Balloc __rtl_Balloc_v1_00
#define __rtl_Bfree __rtl_Bfree_v1_00
#define __rtl_d2b __rtl_d2b_v1_00
#define __rtl_i2b __rtl_i2b_v1_00
#define __rtl_pow5mult __rtl_pow5mult_v1_00
#define __rtl_multadd __rtl_multadd_v1_00
#define __rtl_mult __rtl_mult_v1_00
#define __rtl_hi0bits __rtl_hi0bits_v1_00
#define __rtl_lshift __rtl_lshift_v1_00
#define __rtl_cmp __rtl_cmp_v1_00
#define __rtl_diff __rtl_diff_v1_00
extern _LONG_CALL_ _Bigint * __rtl_Balloc_v1_00(struct _reent *ptr, int k);
extern _LONG_CALL_ void __rtl_Bfree_v1_00(struct _reent *ptr, _Bigint * v);
extern _LONG_CALL_ _Bigint * __rtl_d2b_v1_00(struct _reent * ptr, double _d, int *e, int *bits);
extern _LONG_CALL_ _Bigint * __rtl_i2b_v1_00(struct _reent *ptr, int i );
extern _LONG_CALL_ _Bigint * __rtl_pow5mult_v1_00(struct _reent * ptr, _Bigint *b, int k);
extern _LONG_CALL_ _Bigint * __rtl_multadd_v1_00(struct _reent *ptr, _Bigint * b, int m, int a);
extern _LONG_CALL_ _Bigint * __rtl_mult_v1_00(struct _reent *ptr, _Bigint *a, _Bigint *b);
extern _LONG_CALL_ int __rtl_hi0bits_v1_00(register __ULong x);
extern _LONG_CALL_ _Bigint *__rtl_lshift_v1_00(struct _reent *ptr, _Bigint *b, int k);
extern _LONG_CALL_ int __rtl_cmp_v1_00(_Bigint *a, _Bigint *b);
extern _LONG_CALL_ _Bigint *__rtl_diff_v1_00(struct _reent* ptr, _Bigint *a, _Bigint *b);
//
// dtoa
//
#define __rtl_dtoa_r __rtl_dtoa_r_v1_00
extern char * __rtl_dtoa_r_v1_00(struct _reent *ptr, double _d, int mode, int ndigits, int *decpt, int *sign, char **rve);
//
// mallocr
//
#include <sys/config.h>
#include <reent.h>
#define __rom_mallocr_init __rom_mallocr_init_v1_00
#define __rtl_calloc_r __rtl_calloc_r_v1_00
#define __rtl_cfree_r __rtl_cfree_r_v1_00
#define __rtl_malloc_r __rtl_malloc_r_v1_00
#define __rtl_free_r __rtl_free_r_v1_00
#define __rtl_realloc_r __rtl_realloc_r_v1_00
#define __rtl_memalign_r __rtl_memalign_r_v1_00
#define __rtl_valloc_r __rtl_valloc_r_v1_00
#define __rtl_pvalloc_r __rtl_pvalloc_r_v1_00
extern _LONG_CALL_ void __rom_mallocr_init_v1_00(void);
#define RARG struct _reent *reent_ptr,
extern _LONG_CALL_ void* __rtl_calloc_r_v1_00(RARG size_t n, size_t elem_size);
extern _LONG_CALL_ void __rtl_cfree_r_v1_00(void *mem);
extern _LONG_CALL_ void* __rtl_malloc_r_v1_00(RARG size_t bytes);
extern _LONG_CALL_ void __rtl_free_r_v1_00(RARG void* mem);
extern _LONG_CALL_ void* __rtl_realloc_r_v1_00(RARG void* oldmem, size_t bytes);
extern _LONG_CALL_ void* __rtl_memalign_r_v1_00(RARG size_t alignment, size_t bytes);
extern _LONG_CALL_ void* __rtl_valloc_r_v1_00(RARG size_t bytes);
extern _LONG_CALL_ void* __rtl_pvalloc_r_v1_00(RARG size_t bytes);
//
// stdio
//
extern int __rtl_errno;
#ifndef _READ_WRITE_RETURN_TYPE
#define _READ_WRITE_RETURN_TYPE _ssize_t
#endif
#ifndef _READ_WRITE_BUFSIZE_TYPE
#define _READ_WRITE_BUFSIZE_TYPE int
#endif
#define __rtl_sread __rtl_sread_v1_00
#define __rtl_swrite __rtl_swrite_v1_00
#define __rtl_seofread __rtl_seofread_v1_00
#define __rtl_sseek __rtl_sseek_v1_00
#define __rtl_sclose __rtl_sclose_v1_00
#define __rtl_sbrk_r __rtl_sbrk_r_v1_00
extern _LONG_CALL_ _READ_WRITE_RETURN_TYPE __rtl_sread_v1_00(
struct _reent *ptr,
void *cookie,
char *buf,
_READ_WRITE_BUFSIZE_TYPE n);
extern _LONG_CALL_ _READ_WRITE_RETURN_TYPE __rtl_swrite_v1_00(
struct _reent *ptr,
void *cookie,
char const *buf,
_READ_WRITE_BUFSIZE_TYPE n);
extern _LONG_CALL_ _READ_WRITE_RETURN_TYPE __rtl_seofread_v1_00(
struct _reent *_ptr,
_PTR cookie,
char *buf,
_READ_WRITE_BUFSIZE_TYPE len);
extern _LONG_CALL_ _fpos_t __rtl_sseek_v1_00(
struct _reent *ptr _AND
void *cookie _AND
_fpos_t offset _AND
int whence);
extern _LONG_CALL_ int __rtl_sclose_v1_00(
struct _reent *ptr _AND
void *cookie);
extern _LONG_CALL_ void * __rtl_sbrk_r_v1_00(
struct _reent *ptr,
ptrdiff_t incr);
//
// vfprintf
//
#include <stdio.h>
#include <stdarg.h>
#define __rtl_vfprintf_r __rtl_vfprintf_r_v1_00
extern _LONG_CALL_ int __rtl_vfprintf_r_v1_00(struct _reent *, FILE *, const char *, va_list);
#ifndef CONFIG_RELEASE_BUILD_LIBRARIES
#define __rtl_fflush_r __rtl_fflush_r_v1_00
extern _LONG_CALL_ int __rtl_fflush_r_v1_00(struct _reent *ptr, register FILE * fp);
#endif
#endif /* _RTL_LIB_ROM_H_ */

View file

@ -0,0 +1,234 @@
/*
* rtl_bios_data.h
*
* Created on: 12/02/2017
* Author: pvvx
*
* This variables declared in ROM code!
* Variables use fixed addresses!
* (see *.ld script)
*/
#ifndef _RTL_BIOS_DATA_H_
#define _RTL_BIOS_DATA_H_
#include "platform_autoconf.h"
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <sys/reent.h>
// component/soc/realtek/common/bsp/
#include "basic_types.h"
// component/soc/realtek/8195a/fwlib/
#include "rtl8195a/rtl8195a.h"
#include "hal_gpio.h"
#include "hal_irqn.h"
#include "hal_timer.h"
#include "hal_sdr_controller.h"
// component/soc/realtek/8195a/fwlib/
#include "ram_lib/wlan/realtek/wlan_ram_map/rom/rom_wlan_ram_map.h"
// component/soc/realtek/8195a/misc/driver/
#include "rtl_consol.h"
// component/soc/realtek/8195a/misc/rtl_std_lib/
#include "include/rtl_lib.h"
#include "include/rt_lib_rom.h"
#include "libc/rom/string/rom_libc_string.h"
#include "libgloss/rtl8195a/rom/rom_libgloss_retarget.h"
//#include "rom/rom_libgloss_retarget.h"
typedef void (*START_FUNC)(void);
/* ROM + startup.c */
extern IRQ_FUN NewVectorTable[64]; // 10000000
extern IRQ_FUN UserIrqFunTable[64]; // 10000100
extern u32 UserIrqDataTable[64]; // 10000200
/* ROM + diag.h */
extern u32 CfgSysDebugWarn; // 10000300
extern u32 CfgSysDebugInfo; // 10000304
extern u32 CfgSysDebugErr; // 10000308
extern u32 ConfigDebugWarn; // 1000030c
extern u32 ConfigDebugInfo; // 10000310
extern u32 ConfigDebugErr; // 10000314
/* ROM + hal_timer.h & .. */
extern HAL_TIMER_OP HalTimerOp; // 10000318
extern u16 GPIOState[11]; // 10000334
extern u32 gTimerRecord; // 1000034C
/* ROM + hal_ssi.h */
extern u32 SSI_DBG_CONFIG; // 10000350
extern PHAL_GPIO_ADAPTER _pHAL_Gpio_Adapter; // 10000354
/* ROM + rtl8195a_timer.c */
extern IRQ_FUN Timer2To7VectorTable[MAX_TIMER_VECTOR_TABLE_NUM]; // 10000358
/* ROM + Rand() */
extern u32 _rand_z4, _rand_z3, _rand_z2, _rand_z1, _rand_first; // 10000370..
/* ROM + rtl_consol.c */
extern volatile UART_LOG_CTL *pUartLogCtl; // 10000384
extern UART_LOG_BUF UartLogBuf; // 10000388
extern volatile UART_LOG_CTL UartLogCtl; // 10000408
extern u8 UartLogHistoryBuf[UART_LOG_HISTORY_LEN][UART_LOG_CMD_BUFLEN]; // 10000430 UartLogHistoryBuf[5][127] !
extern u8 *ArgvArray[MAX_ARGV]; // 100006AC *ArgvArray[10] !
/* ROM + ?? */
extern struct _rom_wlan_ram_map rom_wlan_ram_map; // 100006D4
typedef struct _FALSE_ALARM_STATISTICS {
u32 Cnt_Parity_Fail;
u32 Cnt_Rate_Illegal;
u32 Cnt_Crc8_fail;
u32 Cnt_Mcs_fail;
u32 Cnt_Ofdm_fail;
u32 Cnt_Ofdm_fail_pre;
u32 Cnt_Cck_fail;
u32 Cnt_all;
u32 Cnt_Fast_Fsync;
u32 Cnt_SB_Search_fail;
u32 Cnt_OFDM_CCA;
u32 Cnt_CCK_CCA;
u32 Cnt_CCA_all;
u32 Cnt_BW_USC;
u32 Cnt_BW_LSC;
} FALSE_ALARM_STATISTICS;
extern FALSE_ALARM_STATISTICS FalseAlmCnt; // 100006E0
typedef struct _rom_info {
u8 EEPROMVersion;
u8 CrystalCap;
u64 DebugComponents;
u32 DebugLevel;
} ROM_INFO;
extern ROM_INFO ROMInfo; // 10000720
typedef struct _CFO_TRACKING_ {
BOOL bATCStatus;
BOOL largeCFOHit;
BOOL bAdjust;
u8 CrystalCap;
u8 DefXCap;
u32 CFO_tail[2];
u32 CFO_ave_pre;
u32 packetCount;
u32 packetCount_pre;
BOOL bForceXtalCap;
BOOL bReset;
u8 CFO_TH_XTAL_HIGH;
u8 CFO_TH_XTAL_LOW;
u8 CFO_TH_ATC;
}CFO_TRACKING;
extern CFO_TRACKING DM_CfoTrack; // 10000738
/* in rom_libgloss_retarget.h
struct _rom_libgloss_ram_map {
int (*libgloss_close)(int fildes);
int (*libgloss_fstat)(int fildes , struct stat *st);
int (*libgloss_isatty)(int file);
int (*libgloss_lseek)(int file , int ptr , int dir);
int (*libgloss_open)(char *file , int flags , int mode);
int (*libgloss_read)(int file , char *ptr , int len);
int (*libgloss_write)(int file , const char *ptr , int len);
void* (*libgloss_sbrk)(int incr);
};
*/
extern struct _rom_libgloss_ram_map rom_libgloss_ram_map; // 10000760
struct malloc_chunk
{
size_t prev_size;
size_t size;
struct malloc_chunk *fd;
struct malloc_chunk *bk;
};
extern struct malloc_chunk * __rtl_malloc_av_[258]; // 10000780 __rom_mallocr_init_v1_00(), _rtl_free_r_v1_00()..
extern u32 __rtl_malloc_trim_threshold; // 10000b88 __rom_mallocr_init_v1_00()
extern u32 __rtl_malloc_top_pad; // 10000b8c __rom_mallocr_init_v1_00()
extern u8 * __rtl_malloc_sbrk_base; // 10000b90 __rom_mallocr_init_v1_00()
extern u32 __rtl_malloc_max_sbrked_mem; // 10000b94 __rom_mallocr_init_v1_00()
extern u32 __rtl_malloc_max_total_mem; // 10000b98 __rom_mallocr_init_v1_00()
struct mallinfo
{
int arena;
int ordblks;
int smblks;
int hblks;
int hblkhd;
int usmblks;
int fsmblks;
int uordblks;
int fordblks;
int keepcost;
};
extern struct mallinfo __rtl_malloc_current_mallinfo; // 10000b9c __rom_mallocr_init_v1_00()
/* IMAGE1 HEAD: ROM + startup.c (bootloader) */
extern RAM_START_FUNCTION gRamStartFun; // 10000bc8 = { PreProcessForVendor + 1 };
extern RAM_START_FUNCTION gRamPatchWAKE; // 10000bcc = { RtlBootToSram + 1 };
extern RAM_START_FUNCTION gRamPatchFun0; // 10000bd0 = { RtlBootToSram + 1 };
extern RAM_START_FUNCTION gRamPatchFun1; // 10000bd4 = { RtlBootToSram + 1 };
extern RAM_START_FUNCTION gRamPatchFun2; // 10000bd8 = { RtlBootToSram + 1 };
//extern uint8 RAM_IMG1_VALID_PATTEN[8]; // 10000bdc = { 0x23, 0x79, 0x16, 0x88, 0xff, 0xff, 0xff, 0xff };
/* ROM + hal_sdr_controller.c */
extern u32 rand_x; // 10000be4: ChangeRandSeed_rom(), Sdr_Rand2_rom()
#define REC_NUM 512
extern u32 AvaWds[2][REC_NUM]; // 10000be8
extern DRAM_DEVICE_INFO SdrDramInfo; // 10001be8
#define DRAM_DEVICE_INFO_INIT() { \
&SdrDramDev, \
&SdrDramModeReg, \
&SdrDramTiming, \
DRAM_TIMING_TCK, \
DFI_RATIO_1 }
extern DRAM_TIMING_INFO SdrDramTiming; // 10001bfc
#define DRAM_TIMING_INFO_INIT() { \
DRAM_TIMING_TRFC, /* TrfcPs; */ \
DRAM_TIMING_TREFI, /* TrefiPs; */ \
DRAM_TIMING_TWRMAXTCK, /* WrMaxTck; */\
DRAM_TIMING_TRCD, /* TrcdPs; */ \
DRAM_TIMING_TRP, /* TrpPs; */ \
DRAM_TIMING_TRAS, /* TrasPs; */ \
DRAM_TIMING_TRRD, /* TrrdTck; */ \
DRAM_TIMING_TWR, /* TwrPs; */ \
DRAM_TIMING_TWTR, /* TwtrTck; */ \
/* 13090, */ /* TrtpPs; */ \
DRAM_TIMING_TMRD, /* TmrdTck; */ \
DRAM_TIMING_TRTP, /* TrtpTck; */ \
DRAM_TIMING_TCCD, /* TccdTck; */ \
DRAM_TIMING_TRC } /* TrcPs; */
extern DRAM_MODE_REG_INFO SdrDramModeReg; // 10001c30
#define DRAM_MODE_REG_INFO_INIT() { \
BST_LEN_4, \
SENQUENTIAL, \
0x3, /* Mode0Cas: 3 */ \
0x0, /* Mode0Wr */ \
0, /* Mode1DllEnN */ \
0, /* Mode1AllLat */ \
0 } /* Mode2Cwl */
extern DRAM_INFO SdrDramDev; // 10001c4c
#define DRAM_INFO_INIT() { DRAM_INFO_TYPE, DRAM_INFO_COL_ADDR_WTH,DRAM_INFO_BANK_SZ, DRAM_INFO_DQ_WTH }
extern SPIC_INIT_PARA SpicInitParaAllClk[SpicMaxMode][CPU_CLK_TYPE_NO]; // 100021ec [144=0x90]
/* ROM + "C" standard library */
extern struct _reent * _rtl_impure_ptr; // 10001c60 = { &impure_reent };
extern struct _reent impure_reent; // 10001c68 = _REENT_INIT(impure_reent);
/* ROM ? UserData? */
extern u32 _rom_unc_data[9]; // 100020e8
/* ROM + hal_sdr_controller.c: Sdr_Rand2() */
extern u32 _sdr_rnd2_c, _sdr_rnd2_z, _sdr_rnd2_y; // 100020BC, 100020B8, 100020B4
/* *.ld */
extern u8 __rom_bss_start__, __rom_bss_end__;
extern u8 __image1_bss_start__, __image1_bss_end__;
extern START_FUNC __image2_entry_func__;
//extern RAM_START_FUNCTION __image2_entry_func__;
extern u8 __image2_validate_code__;
#ifndef STACK_TOP
#define STACK_TOP 0x1ffffffc
#endif
#endif /* _RTL_BIOS_DATA_H_ */

View file

@ -0,0 +1,141 @@
/*
* rtl_lib.h
*
* Definitions for RTL library functions
*/
#ifndef _RTL_LIB_H_
#define _RTL_LIB_H_
#include <basic_types.h>
#include <diag.h>
#include <stdarg.h>
extern int __rtl_errno;
void init_rom_libgloss_ram_map(void);
//
// RTL library functions for Libc::stdio
//
extern int rtl_printf(IN const char* fmt, ...);
extern int rtl_vprintf(const char *fmt, va_list param);
extern int rtl_sprintf(char* str, const char* fmt, ...);
extern int rtl_snprintf(char* str, size_t size, const char* fmt, ...);
extern int rtl_vsnprintf(char *str, size_t size, const char *fmt, va_list param);
//
// RTL library functions for string
//
extern void * rtl_memchr(const void * src_void , int c , size_t length);
extern int rtl_memcmp(const void * m1 , const void * m2 , size_t n);
extern void * rtl_memcpy(void * dst0 , const void * src0 , size_t len0);
extern void * rtl_memmove( void * dst_void , const void * src_void , size_t length);
extern void * rtl_memset(void * m , int c , size_t n);
extern char * rtl_strcat(char * s1 , const char * s2);
extern char * rtl_strchr(const char *s1 , int i);
extern int rtl_strcmp(const char *s1 , const char *s2);
extern char* rtl_strcpy(char *dst0 , const char *src0);
extern size_t rtl_strlen(const char *str);
extern char * rtl_strncat(char * s1 , const char * s2 , size_t n);
extern int rtl_strncmp(const char *s1 , const char *s2 , size_t n);
extern char * rtl_strncpy(char * dst0 , const char * src0 , size_t count);
extern char * rtl_strstr(const char *searchee , const char *lookfor);
extern char * rtl_strsep(char **source_ptr , const char *delim);
extern char * rtl_strtok(char * s , const char * delim);
//
// RTL library functions for math
//
extern double rtl_fabs(double);
extern float rtl_fabsf(float a);
extern float rtl_cos_f32(float a);
extern float rtl_sin_f32(float a);
extern float rtl_fadd(float a, float b);
extern float rtl_fsub(float a, float b);
extern float rtl_fmul(float a, float b);
extern float rtl_fdiv(float a, float b);
extern int rtl_fcmplt(float a, float b);
extern int rtl_fcmpgt(float a, float b);
//
// RTL eabi functions
extern double rtl_ftod(float f);
extern double rtl_ddiv(double a, double b);
//
// Macro Library Functions
//
typedef union
{
float value;
u32 word;
} ieee_float_shape_type;
/* Get a 32 bit int from a float. */
#define GET_FLOAT_WORD(i,d) \
do { \
ieee_float_shape_type gf_u; \
gf_u.value = (d); \
(i) = gf_u.word; \
} while (0)
/* Set a float from a 32 bit int. */
#define SET_FLOAT_WORD(d,i) \
do { \
ieee_float_shape_type sf_u; \
sf_u.word = (i); \
(d) = sf_u.value; \
} while (0)
static inline
float rtl_nanf(void)
{
float x;
SET_FLOAT_WORD(x,0x7fc00000);
return x;
}
//
// Library Test functions
//
extern int rtl_lib_test(IN u16 argc, IN u8 *argv[]);
extern int rtl_math_test(IN u16 argc, IN u8 *argv[]);
extern int rtl_string_test(IN u16 argc, IN u8 *argv[]);
//
// Macro functions
//
#undef dbg_printf
#define dbg_printf(fmt, args...) \
rtl_printf("%s():%d : " fmt "\n", __FUNCTION__, __LINE__, ##args);
#undef err_printf
#define err_printf(fmt, args...) \
rtl_printf("%s():%d : " fmt "\n", __FUNCTION__, __LINE__, ##args);
#endif /* _RTL_LIB_H_ */

View file

@ -0,0 +1,166 @@
/*
* RAM->ROM Calls
*/
#ifndef _INC_RTL_RR_LIBC_
#define _INC_RTL_RR_LIBC_
//#undef malloc
#define malloc(size) pvPortMalloc(size)
//#undef free
#define free(pbuf) vPortFree(pbuf)
//extern void* pvPortReAlloc( void *pv, size_t xWantedSize )
#define realloc(pv, xWantedSize) pvPortReAlloc(pv, xWantedSize)
#define calloc(nelements, elementSize) calloc_freertos(nelements, elementSize)
#define snprintf rtl_snprintf
#define sprintf rtl_sprintf
#define printf rtl_printf
#define vprintf rtl_vprintf
#define vsnprintf rtl_vsnprintf
#define vfprintf rtl_vfprintf
#define memchr rtl_memchr
#define memcmp rtl_memcmp
#define memcpy rtl_memcpy
#define memmove rtl_memmove
#define memset rtl_memset
#define strcat rtl_strcat
#define strchr rtl_strchr
#define strcmp rtl_strcmp
#define strcpy rtl_strcpy
#define strlen rtl_strlen
#define strncat rtl_strncat
#define strncmp rtl_strncmp
#define strncpy rtl_strncpy
#define strstr rtl_strstr
#define strsep rtl_strsep
#define strtok rtl_strtok
#if 0 // __aeabi_
#define dtoi rtl_dtoi
#define dtoui rtl_dtoui
#define i2f rtl_i2f
#define i2d rtl_i2d
#define ui2f rtl_ui2f
#define ui2d rtl_ui2d
#define itoa rtl_itoa
#define ltoa rtl_ltoa
#define utoa rtl_utoa
#define ultoa rtl_ultoa
#define ftol rtl_ftol
#define ftod rtl_ftod
#define dtof rtl_dtof
#define fadd rtl_fadd
#define fsub rtl_fsub
#define fmul rtl_fmul
#define fdiv rtl_fdiv
#define dadd rtl_dadd
#define dsub rtl_dsub
#define dmul rtl_dmul
#define ddiv rtl_ddiv
#define dcmpeq rtl_dcmpeq
#define dcmplt rtl_dcmplt
#define dcmple rtl_dcmple
#define dcmpgt rtl_dcmpgt
#define fcmplt rtl_fcmplt
#define fcmpgt rtl_fcmpgt
#define fabsf rtl_fabsf
#define fabs rtl_fabs
#define cos_f32 rtl_cos_f32
#define sin_f32 rtl_sin_f32
#endif
#if 0
extern void *calloc_freertos(size_t nelements, size_t elementSize);
// ram_libc.c
extern void rtl_libc_init(void);
extern int rtl_snprintf(char *str, size_t size, const char *fmt, ...);
extern int rtl_sprintf(char *str, const char *fmt, ...);
extern int rtl_printf(const char *fmt, ...);
extern int rtl_vprintf(const char *fmt, void *param);
extern int rtl_vsnprintf(char *str, size_t size, const char *fmt, void *param);
extern int rtl_vfprintf(FILE *fp, const char *fmt0, va_list ap);
extern void * rtl_memchr(const void * src_void , int c , size_t length);
extern int rtl_memcmp(const void *m1, const void *m2, size_t n);
extern void * rtl_memcpy(void *dst0, const void *src0, size_t len0);
extern void * rtl_memmove(void *dst_void, const void *src_void, size_t length);
extern void * rtl_memset(void *m, int c, size_t n);
extern char * rtl_strcat(char *s1, const char *s2);
extern char * rtl_strchr(const char *s1, int i);
extern int rtl_strcmp(const char *s1, const char *s2);
extern char * rtl_strcpy(char *dst0, const char *src0);
extern size_t rtl_strlen(const char *str);
extern char * rtl_strncat(char *s1, const char *s2, size_t n);
extern int rtl_strncmp(const char *s1, const char *s2, size_t n);
extern char * rtl_strncpy(char *dst0, const char *src0, size_t count);
extern char * rtl_strstr(const char *searchee, const char *lookfor);
extern char * rtl_strsep(char **source_ptr, const char *delim);
extern char * rtl_strtok(char *s, const char *delim);
//rtl_eabi_cast_ram.c
extern int rtl_dtoi(double d);
extern int rtl_dtoui(double d);
extern float rtl_i2f(int val);
extern int rtl_i2d(int val);
extern float rtl_ui2f(unsigned int val);
extern int rtl_ui2d(unsigned int val);
extern char *rtl_itoa(int value, char *string, int radix);
extern char *rtl_ltoa(int value, char *string, int radix);
extern char *rtl_utoa(unsigned int value, char *string, int radix);
extern char *rtl_ultoa(unsigned int value, char *string, int radix);
extern int rtl_ftol(float f);
extern int rtl_ftod(float f);
extern float rtl_dtof(double d);
extern float rtl_fadd(float a, float b);
extern float rtl_fsub(float a, float b);
extern float rtl_fmul(float a, float b);
extern float rtl_fdiv(float a, float b);
extern int rtl_dadd(double a, double b);
extern int rtl_dsub(double a, double b);
extern int rtl_dmul(double a, double b);
extern int rtl_ddiv(double a, double b);
extern int rtl_dcmpeq(double a, double b);
extern int rtl_dcmplt(double a, double b);
extern int rtl_dcmple(double a, double b);
extern int rtl_dcmpgt(double a, double b);
extern int rtl_fcmplt(float a, float b);
extern int rtl_fcmpgt(float a, float b);
// rtl_math_ram.c
extern float rtl_fabsf(float a);
extern int rtl_fabs(double a);
extern float rtl_cos_f32(float a);
extern float rtl_sin_f32(float a);
// ram_pvvx_libc.c
extern int snprintf(char *str, size_t size, const char *fmt, ...);
extern int sprintf(char *str, const char *fmt, ...);
extern int printf(const char *fmt, ...);
extern int vprintf(const char * fmt, __VALIST param);
extern int vsnprintf(char *str, size_t size, const char *fmt, __VALIST param);
extern int vfprintf(FILE *fp, const char *fmt0, va_list ap);
extern void * memchr(const void * src_void , int c , size_t length);
extern int memcmp(const void *m1, const void *m2, size_t n);
extern void * memcpy(void *dst0, const void *src0, size_t len0);
extern void * memmove(void *dst_void, const void *src_void, size_t length);
extern void * memset(void *m, int c, size_t n);
extern char * strcat(char *s1, const char *s2);
extern char * strchr(const char *s1, int i);
extern int strcmp(const char *s1, const char *s2);
extern char * strcpy(char *dst0, const char *src0);
extern size_t strlen(const char *str);
extern char * strncat(char *s1, const char *s2, size_t n);
extern int strncmp(const char *s1, const char *s2, size_t n);
extern char * strncpy(char *dst0, const char *src0, size_t count);
extern char * strstr(const char *searchee, const char *lookfor);
extern char * strsep(char **source_ptr, const char *delim);
extern char * strtok(char *s, const char *delim);
extern int sscanf(const char *buf, const char *fmt, ...);
extern char toupper(char ch);
extern int _stricmp (const char *s1, const char *s2);
extern unsigned long long __aeabi_llsr(unsigned long long val, unsigned int shift);
#endif
#endif // _INC_RTL_RR_LIBC_

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,292 @@
/*
* ram_libc.o
* pvvx 2016
*/
#include "rtl_bios_data.h"
#include "va_list.h"
#define CHECK_LIBC_INIT 0
//-------------------------------------------------------------------------
// Function declarations
#if 0
void rtl_libc_init(void);
int rtl_snprintf(char *str, size_t size, const char *fmt, ...);
int rtl_sprintf(char *str, const char *fmt, ...);
int rtl_printf(const char *fmt, ...);
int rtl_vprintf(const char *fmt, void *param);
int rtl_vsnprintf(char *str, size_t size, const char *fmt, void *param);
int rtl_vfprintf(FILE *fp, const char *fmt0, va_list ap);
void * rtl_memchr(const void * src_void , int c , size_t length);
int rtl_memcmp(const void *m1, const void *m2, size_t n);
void * rtl_memcpy(void *dst0, const void *src0, size_t len0);
void * rtl_memmove(void *dst_void, const void *src_void, size_t length);
void * rtl_memset(void *m, int c, size_t n);
char * rtl_strcat(char *s1, const char *s2);
char * rtl_strchr(const char *s1, int i);
int rtl_strcmp(const char *s1, const char *s2);
char * rtl_strcpy(char *dst0, const char *src0);
size_t rtl_strlen(const char *str);
char * rtl_strncat(char *s1, const char *s2, size_t n);
int rtl_strncmp(const char *s1, const char *s2, size_t n);
char * rtl_strncpy(char *dst0, const char *src0, size_t count);
char * rtl_strstr(const char *searchee, const char *lookfor);
char * rtl_strsep(char **source_ptr, const char *delim);
char * rtl_strtok(char *s, const char *delim);
#endif
// Extern Calls:
// extern int init_rom_libgloss_ram_map(_DWORD)
// extern int _rom_mallocr_init_v1_00(void)
// extern int __rtl_vfprintf_r_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_fflush_r_v1_00(_DWORD, _DWORD)
// extern int __rtl_memchr_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memcmp_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memcpy_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memmove_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memset_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strcat_v1_00(_DWORD, _DWORD)
// extern int __rtl_strchr_v1_00(_DWORD, _DWORD)
// extern int __rtl_strcmp_v1_00(_DWORD, _DWORD)
// extern int __rtl_strcpy_v1_00(_DWORD, _DWORD)
// extern int __rtl_strlen_v1_00(_DWORD)
// extern int __rtl_strncat_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strncmp_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strncpy_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strstr_v1_00(_DWORD, _DWORD)
// extern int __rtl_strsep_v1_00(_DWORD, _DWORD)
// extern int __rtl_strtok_v1_00(_DWORD, _DWORD)
//-------------------------------------------------------------------------
// Data declarations
extern struct _reent * _rtl_impure_ptr;
char libc_has_init;
char print_off;
// extern rtl_impure_ptr
// extern impure_ptr
//-------------------------------------------------------------------------
// Function
//----- rtl_libc_init()
void rtl_libc_init(void) {
__rom_mallocr_init_v1_00();
init_rom_libgloss_ram_map();
libc_has_init = 1;
}
//----- rtl_snprintf()
int rtl_snprintf(char *str, size_t size, const char *fmt, ...) {
va_list args;
va_start (args, fmt);
int result;
int w;
FILE f;
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
if (size >= 0) {
f._flags = 520;
if (size)
w = size - 1;
else
w = 0;
f._w = w; /* write space left for putc() */
f._bf._size = w;
f._file = -1; /* fileno, if Unix descriptor, else -1 */
f._p = str; /* current position in (some) buffer */
f._bf._base = str;
result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, &f, fmt, args);
if (result + 1 < 0)
_rtl_impure_ptr->_errno = 139;
if (size)
*f._p = 0;
} else {
_rtl_impure_ptr->_errno = 139;
result = -1;
}
return result;
}
//----- rtl_sprintf()
int rtl_sprintf(char *str, const char *fmt, ...) {
FILE f;
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
f._flags = 520;
f._w = 0x7FFFFFFF;
f._bf._size = 0x7FFFFFFF;
f._file = -1;
f._p = str;
f._bf._base = str;
va_list args;
va_start (args, fmt);
int result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, &f, fmt, args);
*f._p = 0;
// va_end (args);
return result;
}
//----- rtl_printf()
int rtl_printf(const char *fmt, ...) {
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
if(!print_off) {
va_list args;
va_start (args, fmt);
int result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr,
_rtl_impure_ptr->_stdout, fmt, args);
__rtl_fflush_r_v1_00(_rtl_impure_ptr, _rtl_impure_ptr->_stdout);
// va_end (args);
return result;
}
else return 0;
}
//----- rtl_vprintf()
int rtl_vprintf(const char *fmt, va_list param) {
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
int result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr,
_rtl_impure_ptr->_stdout, fmt, param);
__rtl_fflush_r_v1_00(_rtl_impure_ptr, _rtl_impure_ptr->_stdout);
return result;
}
//----- rtl_vsnprintf()
int rtl_vsnprintf(char *str, size_t size, const char *fmt, va_list param) {
int result;
int w;
int v11;
FILE f;
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
if (size >= 0) {
if (size)
w = size - 1;
else
w = 0;
f._flags = 520;
f._p = str;
f._bf._base = str;
f._w = w;
f._bf._size = w;
f._file = -1;
result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, &f, fmt, param);
if (result + 1 < 0)
_rtl_impure_ptr->_errno = 139;
if (size)
*f._p = 0;
} else {
_rtl_impure_ptr->_errno = 139;
result = -1;
}
return result;
}
//----- rtl_vfprintf()
int rtl_vfprintf(FILE *fp, const char *fmt0, va_list ap) {
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
return __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, fp, fmt0, ap);
}
//----- rtl_memchr()
void * rtl_memchr(const void * src_void , int c , size_t length) {
return __rtl_memchr_v1_00(src_void, c, length);
}
//----- rtl_memcmp()
int rtl_memcmp(const void *m1, const void *m2, size_t n) {
return __rtl_memcmp_v1_00(m1, m2, n);
}
//----- rtl_memcpy()
void * rtl_memcpy(void *dst0, const void *src0, size_t len0) {
return __rtl_memcpy_v1_00(dst0, src0, len0);
}
//----- rtl_memmove()
void * rtl_memmove(void *dst_void, const void *src_void, size_t length) {
return __rtl_memmove_v1_00(dst_void, src_void, length);
}
//----- rtl_memset()
void * rtl_memset(void *m, int c, size_t n) {
return __rtl_memset_v1_00(m, c, n);
}
//----- rtl_strcat()
char * rtl_strcat(char *s1, const char *s2) {
return (char *) __rtl_strcat_v1_00(s1, s2);
}
//----- rtl_strchr()
char * rtl_strchr(const char *s1, int i) {
return (char *) __rtl_strchr_v1_00(s1, i);
}
//----- rtl_strcmp()
int rtl_strcmp(const char *s1, const char *s2) {
return __rtl_strcmp_v1_00(s1, s2);
}
//----- rtl_strcpy()
char * rtl_strcpy(char *dst0, const char *src0) {
return (char *) __rtl_strcpy_v1_00(dst0, src0);
}
//----- rtl_strlen()
size_t rtl_strlen(const char *str) {
return __rtl_strlen_v1_00(str);
}
//----- rtl_strncat()
char * rtl_strncat(char *s1, const char *s2, size_t n) {
return (char *) __rtl_strncat_v1_00(s1, s2, n);
}
//----- rtl_strncmp()
int rtl_strncmp(const char *s1, const char *s2, size_t n) {
return __rtl_strncmp_v1_00(s1, s2, n);
}
//----- rtl_strncpy()
char * rtl_strncpy(char *dst0, const char *src0, size_t count) {
return (char *) __rtl_strncpy_v1_00(dst0, src0, count);
}
//----- rtl_strstr()
char * rtl_strstr(const char *searchee, const char *lookfor) {
return (char *) __rtl_strstr_v1_00(searchee, lookfor);
}
//----- rtl_strsep()
char * rtl_strsep(char **source_ptr, const char *delim) {
return (char *) __rtl_strsep_v1_00(source_ptr, delim);
}
//----- rtl_strtok()
char * rtl_strtok(char *s, const char *delim) {
return (char *) __rtl_strtok_v1_00(s, delim);
}

View file

@ -0,0 +1,127 @@
/*
* ram_libgloss_retarget.o
* pvvx 2016
*/
#include "rtl_bios_data.h"
//-------------------------------------------------------------------------
// Function declarations
int ram_libgloss_close(int fildes);
int ram_libgloss_fstat(int fildes, struct stat *st);
int ram_libgloss_isatty(int file);
int ram_libgloss_lseek(int file, int ptr, int dir);
int ram_libgloss_read(int file, char *ptr, int len);
char *ram_libgloss_sbrk(int incr);
int ram_libgloss_write(int file, const char *ptr, int len);
int ram_libgloss_open(char *file, int flags, int mode);
void init_rom_libgloss_ram_map(void);
// Extern Calls:
//extern int HalSerialPutcRtl8195a();
//extern int rtl_strcmp();
extern char end;
//-------------------------------------------------------------------------
// Data declarations
static char *rheap_end;
// extern __rtl_errno;
// extern end;
// extern rom_libgloss_ram_map;
//----- ram_libgloss_close()
int ram_libgloss_close(int fildes) {
__rtl_errno = 88;
return -1;
}
//----- ram_libgloss_fstat()
int ram_libgloss_fstat(int fildes, struct stat *st) {
int result;
if ((unsigned int) fildes > 2) {
__rtl_errno = 9;
result = -1;
} else {
st->st_mode = 0x2000;
result = 0;
}
return result;
}
//----- ram_libgloss_isatty()
int ram_libgloss_isatty(int file) {
int result;
if (file <= 2)
result = 1;
else
result = -1;
return result;
}
//----- ram_libgloss_lseek()
int ram_libgloss_lseek(int file, int ptr, int dir) {
__rtl_errno = 88;
return -1;
}
//----- ram_libgloss_read()
int ram_libgloss_read(int file, char *ptr, int len) {
__rtl_errno = 88;
return -1;
}
//----- ram_libgloss_sbrk()
char *ram_libgloss_sbrk(int incr) {
char *prev_heap_end;
if (!rheap_end)
rheap_end = (char *) &end;
prev_heap_end = rheap_end;
rheap_end += incr;
#if CONFIG_DEBUG_LOG > 4
DBG_8195A("ROM_heap = %p[%d], end = %p\n", prev_heap_end, incr, rheap_end);
#endif
return prev_heap_end;
}
//----- ram_libgloss_write()
int ram_libgloss_write(int file, const char *ptr, int len) {
int i;
for (i = 0; i < len; ++i)
HalSerialPutcRtl8195a(ptr[i]);
return len;
}
//----- ram_libgloss_open()
int ram_libgloss_open(char *file, int flags, int mode) {
// file->_p
int result = rtl_strcmp(file, "/stdin");
if (result) {
if (rtl_strcmp(file, "/stdout")) {
if (rtl_strcmp(file, "/stderr"))
result = -1;
else
result = 2;
} else {
result = 1;
}
} else
result = 0;
return result;
}
//----- init_rom_libgloss_ram_map()
void init_rom_libgloss_ram_map(void) {
rom_libgloss_ram_map.libgloss_close = ram_libgloss_close;
rom_libgloss_ram_map.libgloss_fstat = ram_libgloss_fstat;
rom_libgloss_ram_map.libgloss_isatty = ram_libgloss_isatty;
rom_libgloss_ram_map.libgloss_lseek = ram_libgloss_lseek;
rom_libgloss_ram_map.libgloss_open = ram_libgloss_open;
rom_libgloss_ram_map.libgloss_read = ram_libgloss_read;
rom_libgloss_ram_map.libgloss_write = ram_libgloss_write;
rom_libgloss_ram_map.libgloss_sbrk = ram_libgloss_sbrk;
}

View file

@ -0,0 +1,536 @@
/*
* RTL871x1Ax: RAM libc
* Created on: 22/02/2017
* Author: pvvx
*/
#include "rtl_bios_data.h"
#include "va_list.h"
#define CHECK_LIBC_INIT 0
//-------------------------------------------------------------------------
// Function declarations
//void libc_init();
#if 0
int snprintf(char *str, size_t size, const char *fmt, ...);
int sprintf(char *str, const char *fmt, ...);
int printf(const char *fmt, ...);
int vprintf(const char * fmt, __VALIST param);
int vsnprintf(char *str, size_t size, const char *fmt, __VALIST param);
int vfprintf(FILE *fp, const char *fmt0, va_list ap);
void * memchr(const void * src_void , int c , size_t length);
int memcmp(const void *m1, const void *m2, size_t n);
void * memcpy(void *dst0, const void *src0, size_t len0);
void * memmove(void *dst_void, const void *src_void, size_t length);
void * memset(void *m, int c, size_t n);
char * strcat(char *s1, const char *s2);
char * strchr(const char *s1, int i);
int strcmp(const char *s1, const char *s2);
char * strcpy(char *dst0, const char *src0);
size_t strlen(const char *str);
char * strncat(char *s1, const char *s2, size_t n);
int strncmp(const char *s1, const char *s2, size_t n);
char * strncpy(char *dst0, const char *src0, size_t count);
char * strstr(const char *searchee, const char *lookfor);
char * strsep(char **source_ptr, const char *delim);
char * strtok(char *s, const char *delim);
int sscanf(const char *buf, const char *fmt, ...);
char toupper(char ch);
int _stricmp (const char *s1, const char *s2);
unsigned long long __aeabi_llsr(unsigned long long val, unsigned int shift);
#endif
// Extern Calls:
// extern int init_rom_libgloss_ram_map(_DWORD)
// extern int _rom_mallocr_init_v1_00(void)
// extern int __rtl_vfprintf_r_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_fflush_r_v1_00(_DWORD, _DWORD)
// extern int __rtl_memchr_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memcmp_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memcpy_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memmove_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_memset_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strcat_v1_00(_DWORD, _DWORD)
// extern int __rtl_strchr_v1_00(_DWORD, _DWORD)
// extern int __rtl_strcmp_v1_00(_DWORD, _DWORD)
// extern int __rtl_strcpy_v1_00(_DWORD, _DWORD)
// extern int __rtl_strlen_v1_00(_DWORD)
// extern int __rtl_strncat_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strncmp_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strncpy_v1_00(_DWORD, _DWORD, _DWORD)
// extern int __rtl_strstr_v1_00(_DWORD, _DWORD)
// extern int __rtl_strsep_v1_00(_DWORD, _DWORD)
// extern int __rtl_strtok_v1_00(_DWORD, _DWORD)
//-------------------------------------------------------------------------
// Data declarations
extern struct _reent * _rtl_impure_ptr;
extern char libc_has_init;
extern char print_off;
//-------------------------------------------------------------------------
// Function
//----- snprintf()
int snprintf(char *str, size_t size, const char *fmt, ...) {
va_list args;
va_start (args, fmt);
int result;
int w;
FILE f;
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
if (size >= 0) {
f._flags = 520;
if (size)
w = size - 1;
else
w = 0;
f._w = w; /* write space left for putc() */
f._bf._size = w;
f._file = -1; /* fileno, if Unix descriptor, else -1 */
f._p = str; /* current position in (some) buffer */
f._bf._base = str;
result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, &f, fmt, args);
if (result + 1 < 0)
_rtl_impure_ptr->_errno = 139;
if (size)
*f._p = 0;
} else {
_rtl_impure_ptr->_errno = 139;
result = -1;
}
return result;
}
#ifndef ENAC_FLOAT
//----- sprintf()
int sprintf(char *str, const char *fmt, ...) {
FILE f;
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
f._flags = 520;
f._w = 0x7FFFFFFF;
f._bf._size = 0x7FFFFFFF;
f._file = -1;
f._p = str;
f._bf._base = str;
va_list args;
va_start (args, fmt);
int result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, &f, fmt, args);
*f._p = 0;
// va_end (args);
return result;
}
//----- printf()
int printf(const char *fmt, ...) {
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
if(!print_off) {
va_list args;
va_start (args, fmt);
int result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr,
_rtl_impure_ptr->_stdout, fmt, args);
__rtl_fflush_r_v1_00(_rtl_impure_ptr, _rtl_impure_ptr->_stdout);
// va_end (args);
return result;
}
else return 0;
}
//----- vprintf()
int vprintf(const char * fmt, __VALIST param) {
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
int result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr,
_rtl_impure_ptr->_stdout, fmt, param);
__rtl_fflush_r_v1_00(_rtl_impure_ptr, _rtl_impure_ptr->_stdout);
return result;
}
#endif // ENAC_FLOAT
//----- vsnprintf()
int vsnprintf(char *str, size_t size, const char *fmt, __VALIST param) {
int result;
int w;
int v11;
FILE f;
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
if (size >= 0) {
if (size)
w = size - 1;
else
w = 0;
f._flags = 520;
f._p = str;
f._bf._base = str;
f._w = w;
f._bf._size = w;
f._file = -1;
result = __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, &f, fmt, param);
if (result + 1 < 0)
_rtl_impure_ptr->_errno = 139;
if (size)
*f._p = 0;
} else {
_rtl_impure_ptr->_errno = 139;
result = -1;
}
return result;
}
//----- vfprintf()
int vfprintf(FILE *fp, const char *fmt0, va_list ap) {
#if CHECK_LIBC_INIT
if (!libc_has_init) {
rtl_libc_init();
}
#endif
return __rtl_vfprintf_r_v1_00(_rtl_impure_ptr, fp, fmt0, ap);
}
//----- memchr()
void * memchr(const void * src_void , int c , size_t length) {
return __rtl_memchr_v1_00(src_void, c, length);
}
//----- memcmp()
int memcmp(const void *m1, const void *m2, size_t n) {
return __rtl_memcmp_v1_00(m1, m2, n);
}
//----- memcpy()
void * memcpy(void *dst0, const void *src0, size_t len0) {
return __rtl_memcpy_v1_00(dst0, src0, len0);
}
//----- memmove()
void * memmove(void *dst_void, const void *src_void, size_t length) {
return __rtl_memmove_v1_00(dst_void, src_void, length);
}
//----- memset()
void * memset(void *m, int c, size_t n) {
return __rtl_memset_v1_00(m, c, n);
}
//----- strcat()
char * strcat(char *s1, const char *s2) {
return (char *) __rtl_strcat_v1_00(s1, s2);
}
//----- strchr()
char * strchr(const char *s1, int i) {
return (char *) __rtl_strchr_v1_00(s1, i);
}
//----- strcmp()
int strcmp(const char *s1, const char *s2) {
return __rtl_strcmp_v1_00(s1, s2);
}
//----- strcpy()
char * strcpy(char *dst0, const char *src0) {
return (char *) __rtl_strcpy_v1_00(dst0, src0);
}
//----- strlen()
size_t strlen(const char *str) {
return __rtl_strlen_v1_00(str);
}
//----- strncat()
char * strncat(char *s1, const char *s2, size_t n) {
return (char *) __rtl_strncat_v1_00(s1, s2, n);
}
//----- strncmp()
int strncmp(const char *s1, const char *s2, size_t n) {
return __rtl_strncmp_v1_00(s1, s2, n);
}
//----- strncpy()
char * strncpy(char *dst0, const char *src0, size_t count) {
return (char *) __rtl_strncpy_v1_00(dst0, src0, count);
}
//----- strstr()
char * strstr(const char *searchee, const char *lookfor) {
return (char *) __rtl_strstr_v1_00(searchee, lookfor);
}
//----- strsep()
char * strsep(char **source_ptr, const char *delim) {
return (char *) __rtl_strsep_v1_00(source_ptr, delim);
}
//----- strtok()
char * strtok(char *s, const char *delim) {
return (char *) __rtl_strtok_v1_00(s, delim);
}
int sscanf(const char *buf, const char *fmt, ...) {
va_list args;
int i;
va_start(args, fmt);
i = _vsscanf(buf, fmt, args);
va_end(args);
return i;
}
char toupper(char ch) {
return ((ch >= 'a' && ch <= 'z') ? ch - 'a' + 'A' : ch);
};
int _stricmp (const char *s1, const char *s2)
{
while (*s2 != 0 && toupper(*s1) == toupper(*s2))
s1++, s2++;
return (int) (toupper(*s1) - toupper(*s2));
}
unsigned long long __aeabi_llsr(unsigned long long val, unsigned int shift)
{
u32 lo = ((u32)val >> shift) | ((u32)(val >> 32) << (32 - shift));
u32 hi = (u32)val >> shift;
return ((unsigned long long)hi << 32) | lo;
}
/*
#undef __VFP_FP__
#if defined(__VFP_FP__)
typedef long __jmp_buf[10 + 8 + 1]; // d8-d15 fpu + fpscr
#else
typedef long __jmp_buf[10];
#endif
int setjmp(__jmp_buf buf) __attribute__ ((noinline));
int setjmp(__jmp_buf buf)
{
register void * r0 __asm__("r0") = buf;
__asm__(
"mov %%ip, %%sp\n"
"stmia %[store]!, {%%r4-%%r9, %%sl, %%fp, %%ip, %%lr}\n"
#if defined(__VFP_FP__)
"vstmia %[store]!, {%%d8-%%d15}\n"
"vmrs %%r1, fpscr\n"
"str %%r1, [%[store]], #4\n"
#endif
"mov.w %r0, #0\n"
: : [store] "r" (r0) :);
}
void longjmp(__jmp_buf buf, long value) __attribute__((noreturn));
void longjmp(__jmp_buf buf, long value)
{
__asm__(
"ldmia %[load]!, {%%r4-%%r9, %%sl, %%fp, %%ip, %%lr}\n"
#if defined(__VFP_FP__)
"vldmia %[load]!, {%%d8-%%d15}\n"
"ldr %%r0, [%[load]], #4\n"
"vmsr fpscr, %%r0\n"
#endif
"mov %%sp, %%ip\n"
"movs %%r0, %%r1\n"
"it eq\n"
"moveq %%r0, #1\n"
"bx lr\n"
: : [load] "r" (buf), [value] "r" (value):);
__builtin_unreachable();
}
*/
extern __attribute__ ((long_call)) unsigned int Rand(void);
unsigned int rand(void)
{
return Rand();
}
//----- rtl_dtoi()
int __aeabi_dtoi(double d)
{
return __rtl_dtoi_v1_00(d);
}
//----- __aeabi_dtoui()
int __aeabi_dtoui(double d)
{
return __rtl_dtoui_v1_00(d);
}
//----- __aeabi_i2f()
float __aeabi_i2f(int val)
{
return __rtl_itof_v1_00(val);
}
//----- __aeabi_i2d()
int __aeabi_i2d(int val)
{
return __rtl_itod_v1_00(val);
}
//----- __aeabi_ui2f()
float __aeabi_ui2f(unsigned int val)
{
return __rtl_uitof_v1_00(val);
}
//----- __aeabi_ui2d()
int __aeabi_ui2d(unsigned int val)
{
return __rtl_uitod_v1_00(val);
}
//----- __aeabi_itoa()
char * __aeabi_itoa(int value, char *string, int radix)
{
return (char *)__rtl_ltoa_v1_00(value, string, radix);
}
//----- __aeabi_ltoa()
char * __aeabi_ltoa(int value, char *string, int radix)
{
return (char *)__rtl_ltoa_v1_00(value, string, radix);
}
//----- __aeabi_utoa()
char * __aeabi_utoa(unsigned int value, char *string, int radix)
{
return (char *)__rtl_ultoa_v1_00(value, string, radix);
}
//----- __aeabi_ultoa()
char * __aeabi_ultoa(unsigned int value, char *string, int radix)
{
return (char *)__rtl_ultoa_v1_00(value, string, radix);
}
//----- __aeabi_ftol()
int __aeabi_ftol(float f)
{
return __rtl_ftol_v1_00(f);
}
//----- __aeabi_ftod()
int __aeabi_ftod(float f)
{
return __rtl_ftod_v1_00(f);
}
//----- __aeabi_dtof()
float __aeabi_dtof(double d)
{
return __rtl_dtof_v1_00(d);
}
//----- __aeabi_fadd()
float __aeabi_fadd(float a, float b)
{
return __rtl_fadd_v1_00(a, b);
}
//----- __aeabi_fsub()
float __aeabi_fsub(float a, float b)
{
return __rtl_fsub_v1_00(a, b);
}
//----- __aeabi_fmul()
float __aeabi_fmul(float a, float b)
{
return __rtl_fmul_v1_00(a, b);
}
//----- __aeabi_fdiv()
float __aeabi_fdiv(float a, float b)
{
return __rtl_fdiv_v1_00(a, b);
}
//----- __aeabi_dadd()
int __aeabi_dadd(double a, double b)
{
return __rtl_dadd_v1_00(a, b);
}
//----- __aeabi_dsub()
int __aeabi_dsub(double a, double b)
{
return __rtl_dsub_v1_00(a, b);
}
//----- __aeabi_dmul()
int __aeabi_dmul(double a, double b)
{
return __rtl_dmul_v1_00(a, b);
}
//----- __aeabi_ddiv()
int __aeabi_ddiv(double a, double b)
{
return __rtl_ddiv_v1_00(a, b);
}
//----- __aeabi_dcmpeq()
int __aeabi_dcmpeq(double a, double b)
{
return __rtl_dcmpeq_v1_00(a, b);
}
//----- __aeabi_dcmplt()
int __aeabi_dcmplt(double a, double b)
{
return __rtl_dcmplt_v1_00(a, b);
}
//----- __aeabi_dcmple()
int __aeabi_dcmple(double a, double b)
{
return __rtl_dcmple_v1_00(a, b);
}
//----- __aeabi_dcmpgt()
int __aeabi_dcmpgt(double a, double b)
{
return __rtl_dcmpgt_v1_00(a, b);
}
//----- __aeabi_fcmplt()
int __aeabi_fcmplt(float a, float b)
{
return __rtl_fcmplt_v1_00(a, b);
}
//----- __aeabi_fcmpgt()
int __aeabi_fcmpgt(float a, float b)
{
return __rtl_fcmpgt_v1_00(a, b);
}

View file

@ -0,0 +1,228 @@
/*
* rtl_eabi_cast_ram.o
* pvvx 2016
*/
#include "basic_types.h"
//-------------------------------------------------------------------------
// Function declarations
int rtl_dtoi(double d);
int rtl_dtoui(double d);
float rtl_i2f(int val);
int rtl_i2d(int val);
float rtl_ui2f(unsigned int val);
int rtl_ui2d(unsigned int val);
char *rtl_itoa(int value, char *string, int radix);
char *rtl_ltoa(int value, char *string, int radix);
char *rtl_utoa(unsigned int value, char *string, int radix);
char *rtl_ultoa(unsigned int value, char *string, int radix);
int rtl_ftol(float f);
int rtl_ftod(float f);
float rtl_dtof(double d);
float rtl_fadd(float a, float b);
float rtl_fsub(float a, float b);
float rtl_fmul(float a, float b);
float rtl_fdiv(float a, float b);
int rtl_dadd(double a, double b);
int rtl_dsub(double a, double b);
int rtl_dmul(double a, double b);
int rtl_ddiv(double a, double b);
int rtl_dcmpeq(double a, double b);
int rtl_dcmplt(double a, double b);
int rtl_dcmple(double a, double b);
int rtl_dcmpgt(double a, double b);
int rtl_fcmplt(float a, float b);
int rtl_fcmpgt(float a, float b);
// Extern Calls:
// int __rtl_dtoi_v1_00();
// int __rtl_dtoui_v1_00();
// int __rtl_itof_v1_00();
// int __rtl_itod_v1_00();
// int __rtl_uitof_v1_00();
// int __rtl_uitod_v1_00();
// int __rtl_ltoa_v1_00();
// int __rtl_ultoa_v1_00();
// int __rtl_ftol_v1_00();
// int __rtl_ftod_v1_00();
// int __rtl_dtof_v1_00();
// int __rtl_fadd_v1_00();
// int __rtl_fsub_v1_00();
// int __rtl_fmul_v1_00();
// int __rtl_fdiv_v1_00();
// int __rtl_dadd_v1_00();
// int __rtl_dsub_v1_00();
// int __rtl_dmul_v1_00();
// int __rtl_ddiv_v1_00();
// int __rtl_dcmpeq_v1_00();
// int __rtl_dcmplt_v1_00();
// int __rtl_dcmple_v1_00();
// int __rtl_dcmpgt_v1_00();
// int __rtl_fcmplt_v1_00();
// int __rtl_fcmpgt_v1_00();
//----- rtl_dtoi()
int rtl_dtoi(double d)
{
return __rtl_dtoi_v1_00(d);
}
//----- rtl_dtoui()
int rtl_dtoui(double d)
{
return __rtl_dtoui_v1_00(d);
}
//----- rtl_i2f()
float rtl_i2f(int val)
{
return __rtl_itof_v1_00(val);
}
//----- rtl_i2d()
int rtl_i2d(int val)
{
return __rtl_itod_v1_00(val);
}
//----- rtl_ui2f()
float rtl_ui2f(unsigned int val)
{
return __rtl_uitof_v1_00(val);
}
//----- rtl_ui2d()
int rtl_ui2d(unsigned int val)
{
return __rtl_uitod_v1_00(val);
}
//----- rtl_itoa()
char *rtl_itoa(int value, char *string, int radix)
{
return (char *)__rtl_ltoa_v1_00(value, string, radix);
}
//----- rtl_ltoa()
char *rtl_ltoa(int value, char *string, int radix)
{
return (char *)__rtl_ltoa_v1_00(value, string, radix);
}
//----- rtl_utoa()
char *rtl_utoa(unsigned int value, char *string, int radix)
{
return (char *)__rtl_ultoa_v1_00(value, string, radix);
}
//----- rtl_ultoa()
char *rtl_ultoa(unsigned int value, char *string, int radix)
{
return (char *)__rtl_ultoa_v1_00(value, string, radix);
}
//----- rtl_ftol()
int rtl_ftol(float f)
{
return __rtl_ftol_v1_00(f);
}
//----- rtl_ftod()
int rtl_ftod(float f)
{
return __rtl_ftod_v1_00(f);
}
//----- rtl_dtof()
float rtl_dtof(double d)
{
return __rtl_dtof_v1_00(d);
}
//----- rtl_fadd()
float rtl_fadd(float a, float b)
{
return __rtl_fadd_v1_00(a, b);
}
//----- rtl_fsub()
float rtl_fsub(float a, float b)
{
return __rtl_fsub_v1_00(a, b);
}
//----- rtl_fmul()
float rtl_fmul(float a, float b)
{
return __rtl_fmul_v1_00(a, b);
}
//----- rtl_fdiv()
float rtl_fdiv(float a, float b)
{
return __rtl_fdiv_v1_00(a, b);
}
//----- rtl_dadd()
int rtl_dadd(double a, double b)
{
return __rtl_dadd_v1_00(a, b);
}
//----- rtl_dsub()
int rtl_dsub(double a, double b)
{
return __rtl_dsub_v1_00(a, b);
}
//----- rtl_dmul()
int rtl_dmul(double a, double b)
{
return __rtl_dmul_v1_00(a, b);
}
//----- rtl_ddiv()
int rtl_ddiv(double a, double b)
{
return __rtl_ddiv_v1_00(a, b);
}
//----- rtl_dcmpeq()
int rtl_dcmpeq(double a, double b)
{
return __rtl_dcmpeq_v1_00(a, b);
}
//----- rtl_dcmplt()
int rtl_dcmplt(double a, double b)
{
return __rtl_dcmplt_v1_00(a, b);
}
//----- rtl_dcmple()
int rtl_dcmple(double a, double b)
{
return __rtl_dcmple_v1_00(a, b);
}
//----- rtl_dcmpgt()
int rtl_dcmpgt(double a, double b)
{
return __rtl_dcmpgt_v1_00(a, b);
}
//----- rtl_fcmplt()
int rtl_fcmplt(float a, float b)
{
return __rtl_fcmplt_v1_00(a, b);
}
//----- rtl_fcmpgt()
int rtl_fcmpgt(float a, float b)
{
return __rtl_fcmpgt_v1_00(a, b);
}

View file

@ -0,0 +1,46 @@
/*
* rtl_math_ram..o
* pvvx 2016
*/
#include "basic_types.h"
//-------------------------------------------------------------------------
// Function declarations
float rtl_fabsf(float a);
int rtl_fabs(double a);
float rtl_cos_f32(float a);
float rtl_sin_f32(float a);
// Extern Calls:
// int __rtl_fabsf_v1_00();
// int __rtl_fabs_v1_00();
// int __rtl_cos_f32_v1_00();
// int __rtl_sin_f32_v1_00();
//----- rtl_fabsf()
float rtl_fabsf(float a)
{
return __rtl_fabsf_v1_00(a);
}
//----- rtl_fabs()
int rtl_fabs(double a)
{
return __rtl_fabs_v1_00(a);
}
//----- rtl_cos_f32()
float rtl_cos_f32(float a)
{
return __rtl_cos_f32_v1_00(a);
}
//----- rtl_sin_f32()
float rtl_sin_f32(float a)
{
return __rtl_sin_f32_v1_00(a);
}

View file

@ -0,0 +1,49 @@
/*
* rom_libc_string.h
*
* Definitions for standard library - libc functions.
*/
#ifndef _ROM_LIBC_STRING_H_
#define _ROM_LIBC_STRING_H_
#include <basic_types.h>
#define __rtl_memchr __rtl_memchr_v1_00
#define __rtl_memcmp __rtl_memcmp_v1_00
#define __rtl_memcpy __rtl_memcpy_v1_00
#define __rtl_memmove __rtl_memmove_v1_00
#define __rtl_memset __rtl_memset_v1_00
#define __rtl_strcat __rtl_strcat_v1_00
#define __rtl_strchr __rtl_strchr_v1_00
#define __rtl_strcmp __rtl_strcmp_v1_00
#define __rtl_strcpy __rtl_strcpy_v1_00
#define __rtl_strlen __rtl_strlen_v1_00
#define __rtl_strncat __rtl_strncat_v1_00
#define __rtl_strncmp __rtl_strncmp_v1_00
#define __rtl_strncpy __rtl_strncpy_v1_00
#define __rtl_strstr __rtl_strstr_v1_00
#define __rtl_strsep __rtl_strsep_v1_00
#define __rtl_strtok __rtl_strtok_v1_00
#define __rtl_critical_factorization __rtl_critical_factorization_v1_00
#define __rtl_two_way_short_needle __rtl_two_way_short_needle_v1_00
#define __rtl_two_way_long_needle __rtl_two_way_long_needle_v1_00
extern _LONG_CALL_ void * __rtl_memchr_v1_00(const void * src_void , int c , size_t length);
extern _LONG_CALL_ int __rtl_memcmp_v1_00(const void * m1 , const void * m2 , size_t n);
extern _LONG_CALL_ void * __rtl_memcpy_v1_00(void * __restrict dst0 , const void * __restrict src0 , size_t len0);
extern _LONG_CALL_ void * __rtl_memmove_v1_00( void * dst_void , const void * src_void , size_t length);
extern _LONG_CALL_ void * __rtl_memset_v1_00(void * m , int c , size_t n);
extern _LONG_CALL_ char * __rtl_strcat_v1_00(char *__restrict s1 , const char *__restrict s2);
extern _LONG_CALL_ char * __rtl_strchr_v1_00(const char *s1 , int i);
extern _LONG_CALL_ int __rtl_strcmp_v1_00(const char *s1 , const char *s2);
extern _LONG_CALL_ char* __rtl_strcpy_v1_00(char *dst0 , const char *src0);
extern _LONG_CALL_ size_t __rtl_strlen_v1_00(const char *str);
extern _LONG_CALL_ char * __rtl_strncat_v1_00(char *__restrict s1 , const char *__restrict s2 , size_t n);
extern _LONG_CALL_ int __rtl_strncmp_v1_00(const char *s1 , const char *s2 , size_t n);
extern _LONG_CALL_ char * __rtl_strncpy_v1_00(char *__restrict dst0 , const char *__restrict src0 , size_t count);
extern _LONG_CALL_ char * __rtl_strstr_v1_00(const char *searchee , const char *lookfor);
extern _LONG_CALL_ char * __rtl_strsep_v1_00(register char **source_ptr , register const char *delim);
extern _LONG_CALL_ char * __rtl_strtok_v1_00(register char *__restrict s , register const char *__restrict delim);
#endif /* _ROM_LIBC_STRING_H_ */

View file

@ -0,0 +1,37 @@
#ifndef ROM_LIBGLOSS_RETARGET_H
#define ROM_LIBGLOSS_RETARGET_H
#include <sys/stat.h>
#include <basic_types.h>
#define __rtl_close __rtl_close_v1_00
#define __rtl_fstat __rtl_fstat_v1_00
#define __rtl_isatty __rtl_isatty_v1_00
#define __rtl_lseek __rtl_lseek_v1_00
#define __rtl_open __rtl_open_v1_00
#define __rtl_read __rtl_read_v1_00
#define __rtl_write __rtl_write_v1_00
#define __rtl_sbrk __rtl_sbrk_v1_00
extern _LONG_CALL_ int __rtl_close_v1_00(int fildes);
extern _LONG_CALL_ int __rtl_fstat_v1_00(int fildes , struct stat *st);
extern _LONG_CALL_ int __rtl_isatty_v1_00(int file);
extern _LONG_CALL_ int __rtl_lseek_v1_00(int file , int ptr , int dir);
extern _LONG_CALL_ int __rtl_open_v1_00(char *file , int flags , int mode);
extern _LONG_CALL_ int __rtl_read_v1_00(int file , char *ptr , int len);
extern _LONG_CALL_ int __rtl_write_v1_00(int file , const char *ptr , int len);
extern _LONG_CALL_ void* __rtl_sbrk_v1_00(int incr);
struct _rom_libgloss_ram_map {
int (*libgloss_close)(int fildes);
int (*libgloss_fstat)(int fildes , struct stat *st);
int (*libgloss_isatty)(int file);
int (*libgloss_lseek)(int file , int ptr , int dir);
int (*libgloss_open)(char *file , int flags , int mode);
int (*libgloss_read)(int file , char *ptr , int len);
int (*libgloss_write)(int file , const char *ptr , int len);
void* (*libgloss_sbrk)(int incr);
};
#endif /* ROM_LIBGLOSS_RETARGET_H */