diff options
| author | Edmund Grimley Evans <Edmund.Grimley.Evans@gmail.com> | 2015-02-13 18:58:31 +0000 |
|---|---|---|
| committer | Edmund Grimley Evans <Edmund.Grimley.Evans@gmail.com> | 2015-02-23 22:51:03 +0000 |
| commit | b14ef0e24bcb70d70360690130b2bf2a0c8f8d33 (patch) | |
| tree | 11faa1933ceaaba6ffd6975d57eec9d58f4a7cb1 /tccrun.c | |
| parent | 738606dbd5608cb2ed6789beecea40712809c397 (diff) | |
| download | tinycc-b14ef0e24bcb70d70360690130b2bf2a0c8f8d33.tar.gz tinycc-b14ef0e24bcb70d70360690130b2bf2a0c8f8d33.tar.bz2 | |
Add arm64 (AArch64) as a target architecture.
Diffstat (limited to 'tccrun.c')
| -rw-r--r-- | tccrun.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -605,6 +605,27 @@ static int rt_get_caller_pc(addr_t *paddr, ucontext_t *uc, int level) } /* ------------------------------------------------------------- */ +#elif defined(__aarch64__) + +static int rt_get_caller_pc(addr_t *paddr, ucontext_t *uc, int level) +{ + if (level < 0) + return -1; + else if (level == 0) { + *paddr = uc->uc_mcontext.pc; + return 0; + } + else { + addr_t *fp = (addr_t *)uc->uc_mcontext.regs[29]; + int i; + for (i = 1; i < level; i++) + fp = (addr_t *)fp[0]; + *paddr = fp[1]; + return 0; + } +} + +/* ------------------------------------------------------------- */ #else #warning add arch specific rt_get_caller_pc() |
