/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" ); |
} |