[jdk11u-dev] RFR: 8248238: Implementation: JEP 388: Windows AArch64 Support [v3]
Vladimir Kempik
vkempik at openjdk.java.net
Thu Sep 2 22:13:26 UTC 2021
On Tue, 31 Aug 2021 13:18:50 GMT, Reka Kovacs <github.com+25946952+rnkovacs at openjdk.org> wrote:
>> Main commit of the Windows/AArch64 port.
>>
>> Also fixes [JDK-8272181](https://bugs.openjdk.java.net/browse/JDK-8272181) by adding [`src/hotspot/os_cpu/windows_aarch64/pauth_windows_aarch64.inline.hpp`](https://github.com/openjdk/jdk11u-dev/pull/301/files#diff-235302dc4618158c4f75771ebbb6f0e4beeee5daf0a537b03ee4253a711268c6), which is needed for a successful Windows-AArch64 build.
>>
>> Depends on #274 and #299.
>
> Reka Kovacs has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains one commit:
>
> Backport 9604ee82690f89320614b37bfef4178abc869777
So it's
void MacroAssembler::stop(const char* msg) {
address ip = pc();
pusha();
movptr(c_rarg0, (uintptr_t)(address)msg);
movptr(c_rarg1, (uintptr_t)(address)ip);
mov(c_rarg2, sp);
mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
blr(c_rarg3);
hlt(0);
}
where pusha is :
void MacroAssembler::pusha() {
push(0x7fffffff, sp);
}
where push is:
// Push lots of registers in the bit set supplied. Don't push sp.
// Return the number of words pushed
int MacroAssembler::push(unsigned int bitset, Register stack) {
int words_pushed = 0;
// Scan bitset to accumulate register pairs
unsigned char regs[32];
int count = 0;
for (int reg = 0; reg <= 30; reg++) {
if (1 & bitset)
regs[count++] = reg;
bitset >>= 1;
}
...
@theRealAph could you please suggest, do we need to change the mask in pusha for win-arm64/mac-arm64 to not save r18 by pusha ?
-------------
PR: https://git.openjdk.java.net/jdk11u-dev/pull/301
More information about the jdk-updates-dev
mailing list