diff --git a/programs/develop/libraries/newlib/crt/emutls.c b/programs/develop/libraries/newlib/crt/emutls.c index 77485e1422..cb341e4f73 100644 --- a/programs/develop/libraries/newlib/crt/emutls.c +++ b/programs/develop/libraries/newlib/crt/emutls.c @@ -26,6 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include #include +#include #include #include diff --git a/programs/develop/libraries/newlib/include/machine/setjmp.h b/programs/develop/libraries/newlib/include/machine/setjmp.h index 3a3e0cda0f..5ee1eac03f 100644 --- a/programs/develop/libraries/newlib/include/machine/setjmp.h +++ b/programs/develop/libraries/newlib/include/machine/setjmp.h @@ -1,362 +1,8 @@ _BEGIN_STD_C -#if defined(__arm__) || defined(__thumb__) -/* - * All callee preserved registers: - * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7 - */ -#define _JBLEN 23 -#endif - -#if defined(__AVR__) -#define _JBLEN 24 -#endif - -#ifdef __sparc__ -/* - * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext). - * All else recovered by under/over(flow) handling. - */ -#define _JBLEN 13 -#endif - -#ifdef __BFIN__ -#define _JBLEN 40 -#endif - -/* necv70 was 9 as well. */ - -#if defined(__m68k__) || defined(__mc68000__) -/* - * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, - * fp2-fp7 for 68881. - * All else recovered by under/over(flow) handling. - */ -#define _JBLEN 34 -#endif - -#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) -/* - * D, X, Y are not saved. - * Only take into account the pseudo soft registers (max 32). - */ -#define _JBLEN 32 -#endif - -#if defined(__Z8001__) || defined(__Z8002__) -/* 16 regs + pc */ -#define _JBLEN 20 -#endif - -#ifdef _AM29K -/* - * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext). - * All else recovered by under/over(flow) handling. - */ -#define _JBLEN 9 -#endif - -#if defined(__CYGWIN__) && !defined (_JBLEN) -#define _JBLEN (13 * 4) -#elif defined (__i386__) -#if defined(__unix__) || defined(__rtems__) -# define _JBLEN 9 -#else #include "setjmp-dj.h" -#endif -#endif - -#ifdef __x86_64__ -#define _JBTYPE long long -#define _JBLEN 8 -#endif - -#ifdef __i960__ -#define _JBLEN 35 -#endif - -#ifdef __M32R__ -/* Only 8 words are currently needed. 10 gives us some slop if we need - to expand. */ -#define _JBLEN 10 -#endif - -#ifdef __mips__ -#ifdef __mips64 -#define _JBTYPE long long -#endif -#ifdef __mips_soft_float -#define _JBLEN 11 -#else -#define _JBLEN 23 -#endif -#endif - -#ifdef __m88000__ -#define _JBLEN 21 -#endif - -#ifdef __H8300__ -#define _JBLEN 5 -#define _JBTYPE int -#endif - -#ifdef __H8300H__ -/* same as H8/300 but registers are twice as big */ -#define _JBLEN 5 -#define _JBTYPE long -#endif - -#if defined (__H8300S__) || defined (__H8300SX__) -/* same as H8/300 but registers are twice as big */ -#define _JBLEN 5 -#define _JBTYPE long -#endif - -#ifdef __H8500__ -#define _JBLEN 4 -#endif - -#ifdef __sh__ -#if __SH5__ -#define _JBLEN 50 -#define _JBTYPE long long -#else -#define _JBLEN 20 -#endif /* __SH5__ */ -#endif - -#ifdef __v800 -#define _JBLEN 28 -#endif - -#ifdef __PPC__ -#ifdef __ALTIVEC__ -#define _JBLEN 64 -#else -#define _JBLEN 32 -#endif -#define _JBTYPE double -#endif - -#ifdef __MICROBLAZE__ -#define _JBLEN 20 -#define _JBTYPE unsigned int -#endif - -#ifdef __hppa__ -/* %r30, %r2-%r18, %r27, pad, %fr12-%fr15. - Note space exists for the FP registers, but they are not - saved. */ -#define _JBLEN 28 -#endif - -#if defined(__mn10300__) || defined(__mn10200__) -#ifdef __AM33_2__ -#define _JBLEN 26 -#else -/* A guess */ -#define _JBLEN 10 -#endif -#endif - -#ifdef __v850 -/* I think our setjmp is saving 15 regs at the moment. Gives us one word - slop if we need to expand. */ -#define _JBLEN 16 -#endif - -#if defined(_C4x) -#define _JBLEN 10 -#endif -#if defined(_C3x) -#define _JBLEN 9 -#endif - -#ifdef __TMS320C6X__ -#define _JBLEN 13 -#endif - -#ifdef __TIC80__ -#define _JBLEN 13 -#endif - -#ifdef __D10V__ -#define _JBLEN 8 -#endif - -#ifdef __D30V__ -#define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2) -#define _JBTYPE double -#endif - -#ifdef __frv__ -#define _JBLEN (68/2) /* room for 68 32-bit regs */ -#define _JBTYPE double -#endif - -#ifdef __moxie__ -#define _JBLEN 16 -#endif - -#ifdef __CRX__ -#define _JBLEN 9 -#endif - -#if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__)) -/* r6, r7, r8, r9, r10, r11, r12 (r12L, r12H), - * r13 (r13L, r13H), ra(raL, raH), sp(spL, spH) */ -#define _JBLEN 14 -#define _JBTYPE unsigned short -#endif - -#ifdef __fr30__ -#define _JBLEN 10 -#endif - -#ifdef __iq2000__ -#define _JBLEN 32 -#endif - -#ifdef __mcore__ -#define _JBLEN 16 -#endif - -#ifdef __MMIX__ -/* Using a layout compatible with GCC's built-in. */ -#define _JBLEN 5 -#define _JBTYPE unsigned long -#endif - -#ifdef __mt__ -#define _JBLEN 16 -#endif - -#ifdef __SPU__ -#define _JBLEN 50 -#define _JBTYPE __vector signed int -#endif - -#ifdef __xstormy16__ -/* 4 GPRs plus SP plus PC. */ -#define _JBLEN 8 -#endif - -#ifdef __mep__ -/* 16 GPRs, pc, hi, lo */ -#define _JBLEN 19 -#endif - -#ifdef __CRIS__ -#define _JBLEN 18 -#endif - -#ifdef __lm32__ -#define _JBLEN 19 -#endif - -#ifdef __m32c__ -#if defined(__r8c_cpu__) || defined(__m16c_cpu__) -#define _JBLEN (22/2) -#else -#define _JBLEN (34/2) -#endif -#define _JBTYPE unsigned short -#endif /* __m32c__ */ - -#ifdef __RL78__ -/* Three banks of registers, SP, CS, ES, PC */ -#define _JBLEN (8*3+8) -#define _JBTYPE unsigned char -#endif - -#ifdef __RX__ -#define _JBLEN 0x44 -#endif - -#ifdef _JBLEN -#ifdef _JBTYPE -typedef _JBTYPE jmp_buf[_JBLEN]; -#else -typedef int jmp_buf[_JBLEN]; -#endif -#endif _END_STD_C -#if defined(__CYGWIN__) || defined(__rtems__) -#include -#ifdef __cplusplus -extern "C" { -#endif - -/* POSIX sigsetjmp/siglongjmp macros */ -#ifdef _JBTYPE -typedef _JBTYPE sigjmp_buf[_JBLEN+1+(sizeof (sigset_t)/sizeof (_JBTYPE))]; -#else -typedef int sigjmp_buf[_JBLEN+1+(sizeof (sigset_t)/sizeof (int))]; -#endif - -#define _SAVEMASK _JBLEN -#define _SIGMASK (_JBLEN+1) - -#ifdef __CYGWIN__ -# define _CYGWIN_WORKING_SIGSETJMP -#endif - -#ifdef _POSIX_THREADS -#define __SIGMASK_FUNC pthread_sigmask -#else -#define __SIGMASK_FUNC sigprocmask -#endif - -#if defined(__GNUC__) - -#define sigsetjmp(env, savemask) \ - __extension__ \ - ({ \ - sigjmp_buf *_sjbuf = &(env); \ - ((*_sjbuf)[_SAVEMASK] = savemask,\ - __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\ - setjmp (*_sjbuf)); \ - }) - -#define siglongjmp(env, val) \ - __extension__ \ - ({ \ - sigjmp_buf *_sjbuf = &(env); \ - ((((*_sjbuf)[_SAVEMASK]) ? \ - __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\ - : 0), \ - longjmp (*_sjbuf, val)); \ - }) - -#else /* !__GNUC__ */ - -#define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\ - __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\ - setjmp (env)) - -#define siglongjmp(env, val) ((((env)[_SAVEMASK])?\ - __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\ - longjmp (env, val)) - -#endif - -/* POSIX _setjmp/_longjmp, maintained for XSI compatibility. These - are equivalent to sigsetjmp/siglongjmp when not saving the signal mask. - New applications should use sigsetjmp/siglongjmp instead. */ -#ifdef __CYGWIN__ -extern void _longjmp(jmp_buf, int); -extern int _setjmp(jmp_buf); -#else -#define _setjmp(env) sigsetjmp ((env), 0) -#define _longjmp(env, val) siglongjmp ((env), (val)) -#endif - -#ifdef __cplusplus -} -#endif -#endif /* __CYGWIN__ or __rtems__ */ diff --git a/programs/develop/libraries/newlib/include/newlib.h b/programs/develop/libraries/newlib/include/newlib.h index 6da300434e..e6c5ad0130 100644 --- a/programs/develop/libraries/newlib/include/newlib.h +++ b/programs/develop/libraries/newlib/include/newlib.h @@ -15,12 +15,12 @@ /* C99 formats support (such as %a, %zu, ...) in IO functions like * printf/scanf enabled */ -/* #undef _WANT_IO_C99_FORMATS */ +//#define _WANT_IO_C99_FORMATS #define __DYNAMIC_REENT__ /* long long type support in IO functions like printf/scanf enabled */ -/* #undef _WANT_IO_LONG_LONG */ +#define _WANT_IO_LONG_LONG /* Register application finalization function using atexit. */ /* #undef _WANT_REGISTER_FINI */ diff --git a/programs/develop/libraries/newlib/include/pixlib2.h b/programs/develop/libraries/newlib/include/pixlib2.h new file mode 100644 index 0000000000..ececa9d8ab --- /dev/null +++ b/programs/develop/libraries/newlib/include/pixlib2.h @@ -0,0 +1,38 @@ +#ifndef __PIXLIB2_H__ +#define __PIXLIB2_H__ + +#include + +#define HW_BIT_BLIT (1<<0) /* BGRX blitter */ +#define HW_TEX_BLIT (1<<1) /* stretch blit */ +#define HW_VID_BLIT (1<<2) /* planar and packed video */ + +typedef struct +{ + uint32_t handle; + uint8_t *data; + + uint32_t width; + uint32_t height; + uint32_t pitch; + + uint32_t max_width; + uint32_t max_height; + uint32_t flags; +}bitmap_t; + +uint32_t init_pixlib(uint32_t flags); +void done_pixlib(); + +int create_bitmap(bitmap_t *bitmap); +int destroy_bitmap(bitmap_t *bitmap); + +int lock_bitmap(bitmap_t *bitmap); +int resize_bitmap(bitmap_t *bitmap); +int blit_bitmap(bitmap_t *bitmap, int dst_x, int dst_y,int w, int h); + + + + +#endif + diff --git a/programs/develop/libraries/newlib/kos32.x b/programs/develop/libraries/newlib/kos32.x index 100bc1f9ae..8fbca7b0eb 100644 --- a/programs/develop/libraries/newlib/kos32.x +++ b/programs/develop/libraries/newlib/kos32.x @@ -108,4 +108,3 @@ SECTIONS *(.debug_ranges) } } - diff --git a/programs/develop/libraries/newlib/static.lds b/programs/develop/libraries/newlib/static.lds index eb0cce0368..2eb685a05f 100644 --- a/programs/develop/libraries/newlib/static.lds +++ b/programs/develop/libraries/newlib/static.lds @@ -73,14 +73,10 @@ SECTIONS LONG(0); __data_end__ = . ; *(.data_cygwin_nocopy) - } - - .eh_frame ALIGN(16) : - { - *(.eh_frame) ___iend = . ; } + bss ALIGN(16): { *(.bss) @@ -101,6 +97,7 @@ SECTIONS *(.debug$F) *(.drectve) *(.note.GNU-stack) + *(.eh_frame) *(.comment) *(.debug_abbrev) *(.debug_info) diff --git a/programs/develop/libraries/newlib/sys/fload.c b/programs/develop/libraries/newlib/sys/fload.c index 30253cfa65..583047af36 100644 --- a/programs/develop/libraries/newlib/sys/fload.c +++ b/programs/develop/libraries/newlib/sys/fload.c @@ -15,7 +15,7 @@ void *load_file(const char *path, size_t *len) if( !get_fileinfo(path, &info) ) { - file = user_alloc( info.size ); + file = (void*)user_alloc( info.size ); read_file(path, file, 0, info.size, &bytes ); if( bytes == info.size ) { @@ -23,7 +23,7 @@ void *load_file(const char *path, size_t *len) { void *tmp = NULL; info.size = ((size_t*)file)[1]; - tmp = user_alloc(info.size); + tmp = (void*)user_alloc(info.size); unpack(file, tmp); user_free(file); file = tmp;