mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-31 06:15:24 +00:00
arm: parasite: implement arch_get_tls() in C
This patch should simplify the routine interface change in the following patch. Signed-off-by: Alexander Kartashov <alekskartashov@parallels.com> Reviewed-by: Christopher Covington <cov@codeaurora.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
a247426ca1
commit
16ebfa1656
@@ -1,28 +1,9 @@
|
|||||||
#ifndef __ASM_PARASITE_H__
|
#ifndef __ASM_PARASITE_H__
|
||||||
#define __ASM_PARASITE_H__
|
#define __ASM_PARASITE_H__
|
||||||
|
|
||||||
static inline u32 arch_get_tls(void) {
|
static inline u32 arch_get_tls(void)
|
||||||
u32 res;
|
{
|
||||||
|
return ((u32 (*)())0xffff0fe0)();
|
||||||
asm (
|
|
||||||
"adr %%r1, 1f \n"
|
|
||||||
"ldr %%r1, [%%r1] \n"
|
|
||||||
"push { %%r7, %%lr } \n"
|
|
||||||
"blx %%r1 \n"
|
|
||||||
"pop { %%r7, %%lr } \n"
|
|
||||||
"mov %0, %%r0 \n"
|
|
||||||
"b 2f \n"
|
|
||||||
|
|
||||||
"1: \n"
|
|
||||||
".word 0xffff0fe0 \n"
|
|
||||||
|
|
||||||
"2: \n"
|
|
||||||
:"=r"(res)
|
|
||||||
:
|
|
||||||
: "r0", "r1", "memory"
|
|
||||||
);
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user