From: Peter Maydell Date: Mon, 7 Sep 2015 09:39:28 +0000 (+0100) Subject: target-arm/arm-semi.c: Implement A64 specific SyncCacheRange call X-Git-Tag: TizenStudio_2.0_p2.3.2~120^2~1^2~215^2~19 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e9ebfbfcf31c11fb3bd2fc436fa17ce45a4e7086;p=sdk%2Femulator%2Fqemu.git target-arm/arm-semi.c: Implement A64 specific SyncCacheRange call The A64 semihosting ABI defines a new call SyncCacheRange for doing a 'clean D-cache and invalidate I-cache' sequence. Since QEMU doesn't implement caches, we can implement this as a nop. Signed-off-by: Peter Maydell Reviewed-by: Christopher Covington Tested-by: Christopher Covington Message-id: 1439483745-28752-8-git-send-email-peter.maydell@linaro.org --- diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c index 1d4cc59..1d0d7aa 100644 --- a/target-arm/arm-semi.c +++ b/target-arm/arm-semi.c @@ -58,6 +58,7 @@ #define TARGET_SYS_GET_CMDLINE 0x15 #define TARGET_SYS_HEAPINFO 0x16 #define TARGET_SYS_EXIT 0x18 +#define TARGET_SYS_SYNCCACHE 0x19 /* ADP_Stopped_ApplicationExit is used for exit(0), * anything else is implemented as exit(1) */ @@ -623,6 +624,15 @@ target_ulong do_arm_semihosting(CPUARMState *env) ret = (args == ADP_Stopped_ApplicationExit) ? 0 : 1; gdb_exit(env, ret); exit(ret); + case TARGET_SYS_SYNCCACHE: + /* Clean the D-cache and invalidate the I-cache for the specified + * virtual address range. This is a nop for us since we don't + * implement caches. This is only present on A64. + */ + if (is_a64(env)) { + return 0; + } + /* fall through -- invalid for A32/T32 */ default: fprintf(stderr, "qemu: Unsupported SemiHosting SWI 0x%02x\n", nr); cpu_dump_state(cs, stderr, fprintf, 0);