Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 3592 → Rev 3593

/programs/develop/libraries/newlib/Makefile
24,6 → 24,7
STATIC_SRCS:= \
crt/start.S \
crt/crt1.c \
crt/crt2.c \
crt/chkstk.S \
crt/exit.S \
crt/setjmp.S
81,7 → 82,9
locale/locale.c \
locale/lctype.c \
reent/impure.c \
reent/init_reent.c \
reent/getreent.c \
reent/mutex.c \
reent/gettimeofdayr.c \
reent/hdlman.c \
reent/isattyr.c \
/programs/develop/libraries/newlib/crt/crt1.c
54,26 → 54,7
}
 
void __main (){};
void init_reent();
 
void __attribute__((noreturn))
__thread_startup (int (*entry)(void*), void *param,
void *stacklow, void *stackhigh)
{
int retval;
 
__asm__ __volatile__( // save stack limits
"movl %0, %%fs:4 \n\t" // use TLS
"movl %1, %%fs:8 \n\t"
::"r"(stacklow), "r"(stackhigh));
 
init_reent(); // initialize thread reentry structure
 
retval = entry(param); // call user thread function
 
_exit(retval);
};
 
struct app_hdr
{
char banner[8];
86,6 → 67,19
char *path;
};
 
typedef void (*ctp)();
static void __do_global_ctors ()
{
extern int __CTOR_LIST__;
int *c = &__CTOR_LIST__;
c++;
while (*c)
{
ctp d = (ctp)*c;
(d)();
c++;
}
}
 
void __attribute__((noreturn))
__crt_startup (void)
102,7 → 96,7
__cpu_features_init (); /* Do we have SSE, etc.*/
// _fpreset (); /* Supplied by the runtime library. */
 
__initPOSIXHandles();
__do_global_ctors();
 
__appcwdlen = strrchr(&__pgmname, '/') - &__pgmname + 1;
__appcwdlen = __appcwdlen > 1023 ? 1023 : __appcwdlen;
/programs/develop/libraries/newlib/crt/crt2.c
0,0 → 1,22
#include <newlib.h>
 
void init_reent();
 
void __attribute__((noreturn))
__thread_startup (int (*entry)(void*), void *param,
void *stacklow, void *stackhigh)
{
int retval;
 
__asm__ __volatile__( // save stack limits
"movl %0, %%fs:4 \n\t" // use TLS
"movl %1, %%fs:8 \n\t"
::"r"(stacklow), "r"(stackhigh));
 
init_reent(); // initialize thread reentry structure
 
retval = entry(param); // call user thread function
 
_exit(retval);
};
 
/programs/develop/libraries/newlib/reent/getreent.c
29,40 → 29,6
__sinit(ent);
}
 
void init_global_reent()
{
struct _reent *ent;
 
ent =_GLOBAL_REENT;
 
_REENT_INIT_PTR(ent);
 
__asm__ __volatile__(
"movl %0, %%fs:12"
::"r"(ent));
__sinit(ent);
}
 
 
void __mutex_lock(volatile int *val)
{
int tmp;
 
__asm__ __volatile__ (
"0:\n\t"
"mov %0, %1\n\t"
"testl %1, %1\n\t"
"jz 1f\n\t"
 
"movl $68, %%eax\n\t"
"movl $1, %%ebx\n\t"
"int $0x40\n\t"
"jmp 0b\n\t"
"1:\n\t"
"incl %1\n\t"
"xchgl %0, %1\n\t"
"testl %1, %1\n\t"
"jnz 0b\n"
: "+m" (*val), "=&r"(tmp)
::"eax","ebx" );
}
/programs/develop/libraries/newlib/reent/hdlman.c
54,6 → 54,8
 
void __ChkTTYIOMode( int handle );
 
void __initPOSIXHandles( void ) __attribute__ ((constructor));
 
void __grow_iomode( int num );
int debugwrite(const char *path,const void *buff,
size_t offset, size_t count, size_t *writes);
/programs/develop/libraries/newlib/reent/init_reent.c
0,0 → 1,18
#include <_ansi.h>
#include <string.h>
#include <reent.h>
 
void init_global_reent()
{
struct _reent *ent;
 
ent =_GLOBAL_REENT;
 
_REENT_INIT_PTR(ent);
 
__asm__ __volatile__(
"movl %0, %%fs:12"
::"r"(ent));
// __sinit(ent);
}
 
/programs/develop/libraries/newlib/reent/mutex.c
0,0 → 1,23
void __mutex_lock(volatile int *val)
{
int tmp;
 
__asm__ __volatile__ (
"0:\n\t"
"mov %0, %1\n\t"
"testl %1, %1\n\t"
"jz 1f\n\t"
 
"movl $68, %%eax\n\t"
"movl $1, %%ebx\n\t"
"int $0x40\n\t"
"jmp 0b\n\t"
"1:\n\t"
"incl %1\n\t"
"xchgl %0, %1\n\t"
"testl %1, %1\n\t"
"jnz 0b\n"
: "+m" (*val), "=&r"(tmp)
::"eax","ebx" );
}