[aarch64-port-dev ] Question about ISB usage in the aarch64 port
Yangfei (Felix)
felix.yang at huawei.com
Tue Nov 12 07:36:57 UTC 2019
Hi,
I am witnessing some SIGILL jvm crashes on my aarch64 platform.
I looked at the ISB usage, especially this one: https://mail.openjdk.java.net/pipermail/aarch64-port-dev/2014-September/001376.html
One of changes is adding one ISB after the native call returns:
1100 static void rt_call(MacroAssembler* masm, address dest, int gpargs, int fpargs, int type) {
1101 CodeBlob *cb = CodeCache::find_blob(dest);
1102 if (cb) {
1103 __ far_call(RuntimeAddress(dest));
1104 } else {
1105 assert((unsigned)gpargs < 256, "eek!");
1106 assert((unsigned)fpargs < 32, "eek!");
1107 __ lea(rscratch1, RuntimeAddress(dest));
1108 __ blr(rscratch1);
1109 __ maybe_isb(); < ========
1110 }
1111 }
The rt_call function is used in generate_native_wrapper to make the JNI call.
As I didn’t see the barrier for the ppc or arm port. I would like to know more details here. Does anyone still remember?
Also the ISB is planted only in the else block. I assume this is also necessary for the if block. Correct?
Thanks for your help,
Felix
More information about the aarch64-port-dev
mailing list