* commit '71e0b240ed980e77f736be2a27d255d64747b388': x86_64: Fix get_tls and statvfs
This commit is contained in:
commit
9d3b4b48d8
2 changed files with 14 additions and 1 deletions
|
@ -18,8 +18,15 @@
|
|||
|
||||
#include <sys/statfs.h>
|
||||
|
||||
extern "C" int __statfs64(const char*, size_t, struct statfs*);
|
||||
// Paper over the fact that 32-bit kernels use fstatfs64/statfs64 with an extra argument,
|
||||
// but 64-bit kernels don't have the "64" bit suffix or the extra size_t argument.
|
||||
#if __LP64__
|
||||
# define __fstatfs64(fd,size,buf) fstatfs(fd,buf)
|
||||
# define __statfs64(path,size,buf) statfs(path,buf)
|
||||
#else
|
||||
extern "C" int __fstatfs64(int, size_t, struct statfs*);
|
||||
extern "C" int __statfs64(const char*, size_t, struct statfs*);
|
||||
#endif
|
||||
|
||||
#define ST_VALID 0x0020
|
||||
|
||||
|
|
|
@ -106,6 +106,12 @@ extern int __set_tls(void* ptr);
|
|||
({ register void* __val; \
|
||||
asm ("movl %%gs:0, %0" : "=r"(__val)); \
|
||||
(volatile void*) __val; })
|
||||
|
||||
#elif defined(__x86_64__)
|
||||
# define __get_tls() \
|
||||
({ register void* __val; \
|
||||
asm ("mov %%fs:0, %0" : "=r"(__val)); \
|
||||
(volatile void*) __val; })
|
||||
#else
|
||||
#error unsupported architecture
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue