Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

移植过程中的一些零碎的备忘 #21

Open
shining1984 opened this issue Mar 20, 2021 · 24 comments
Open

移植过程中的一些零碎的备忘 #21

shining1984 opened this issue Mar 20, 2021 · 24 comments

Comments

@shining1984
Copy link

移植过程中的一些零碎的备忘,先在这里做个记录,后续积累到一定程度之后,统一整理成为文档。

@shining1984
Copy link
Author

版权声明:* Copyright (c) 2021, Institute of Software, Chinese Academy of Sciences. All rights reserved.

@shining1984
Copy link
Author

issue #15 , PR #24 中涉及到的os_linux_riscv32.cpp中还有注释掉的函数体,需要后续解决。

提交结点为:6e8391a630b5f6af59dc7756cf86e65f9de4d6ba

函数名称为:atomic_load_long_bootstrap, atomic_store_long_bootstrap.

@DingliZhang
Copy link

issue #38 , PR #40 中涉及到的interp_masm_riscv32.cpp中78行注释后续可能需要修改

提交结点为:e317b08156898cc32741d9f094a016d57bd51056

注释为:// turncate upper 48 bits

@shining1984
Copy link
Author

shining1984 commented Apr 1, 2021

issue #54 ,PR #58 中还有注释掉的一些关于64位的函数,需要验证是否保留。

@shining1984
Copy link
Author

issue #59 , PR #60 中,

bytes_riscv32.hpp中有涉及u8的操作,主要是和long、double相关的内容,需要等后续可以调试的时候然后验证下代码。
get_native_u8()
put_native_u8()

@DingliZhang
Copy link

DingliZhang commented Apr 9, 2021

issue #67 , PR #72 中,

assembler_riscv32.cpp 中的Assembler::movptr_with_offset有涉及64位立即数的操作,需要等后续可以调试的时候进行修改,然后验证下代码。
assembler_riscv32.cpp以及assembler_riscv32.hpp中的negw指令需要删除,在下个patch中体现。

@shining1984
Copy link
Author

反汇编器是以插件的形式存在,具体的内容见 #71

@shining1984
Copy link
Author

riscv32-asmtest.py 脚本的使用说明见 #75 .

@DingliZhang
Copy link

DingliZhang commented Apr 15, 2021

issue #86 的commit 46ed00c((uintptr_t)addr >> 32) == 0 在rv32中恒成立,后续可能需要优化

@shining1984
Copy link
Author

issue #86 的commit 46ed00c((uintptr_t)addr >> 32) == 0 在rv32中恒成立,后续可能需要优化

已经在 issue #89 PR #91 中解决。

@DingliZhang
Copy link

issue #101 添加copyright的问题

@DingliZhang
Copy link

PR #105 src/hotspot/share/runtime/vm_version.cpp 中RISCV32_ONLY("riscv32")的缩进格式需要调整

@shining1984
Copy link
Author

PR #105 src/hotspot/share/runtime/vm_version.cpp 中RISCV32_ONLY("riscv32")的缩进格式需要调整

已经在PR #114中修复。

@shining1984
Copy link
Author

issue #111 和PR #130中有注释掉的代码,需要后续决定是否优化。

@shining1984
Copy link
Author

shining1984 commented May 7, 2021

issue #111 和PR #130中有注释掉的代码,需要后续决定是否优化。

已经在pr #132 中解决。

issue #67 , PR #72 中,

assembler_riscv32.cpp 中的Assembler::movptr_with_offset有涉及64位立即数的操作,需要等后续可以调试的时>候进行修改,然后验证下代码。

已经在pr #132 中解决。

@shining1984
Copy link
Author

issue #15 , PR #24 中涉及到的os_linux_riscv32.cpp中还有注释掉的函数体,需要后续解决。

提交结点为:6e8391a630b5f6af59dc7756cf86e65f9de4d6ba

函数名称为:atomic_load_long_bootstrap, atomic_store_long_bootstrap.

已经在issue #117 pr #124 中解决。

@shining1984
Copy link
Author

PR #105 src/hotspot/share/runtime/vm_version.cpp 中RISCV32_ONLY("riscv32")的缩进格式需要调整

已经解决。

@DingliZhang
Copy link

src/hotspot/cpu/riscv32/globalDefinitions_riscv32.hpp中的line30中的StackAlignmentInBytes变量用来设置栈对齐的字节数,在arm中8字节堆栈对齐是过程调用标准的要求,而aarch64则为16字节对齐。
而在riscv中,查看riscv-elf-psabi
微信图片_20210512152040
可知,所以这里rv64和rv32应该都是128位16字节。

@DingliZhang
Copy link

issue #148 中riscv32.ad文件中sd以及ld指令暂时未作修改,并且为JIT优化时使用的文件因此具体的函数实现可能还需要变动。

@axiangyushanhaijing
Copy link

issue #170 中注释了src/hotspot/os_cpu/linux_riscv32/atomic_linux_riscv32.hpp 中load/store的两个空模板声明以及在src/hotspot/share/runtime/atomic.hpp中关于注释掉两个wide 原子指令操作。
具体原因见知乎文章:原因分析

@DingliZhang
Copy link

#342 (comment) 这里的 '_NON_ALLOCATABLE_REG_mask' 的移除是暂时的。

@shining1984
Copy link
Author

shining1984 commented Mar 2, 2022

#342 中涉及的 d84914f 中关于kill 操作的移除是暂时的,后续可能有更好的替代方法。

@shining1984
Copy link
Author

#342 (comment) 修改了patch_addr_in_movptr之后,发现movptr和li现在已经越来越雷同了,后续可以考虑是否移除或者合并。

@shining1984
Copy link
Author

#342 中涉及的 d84914f 中关于kill 操作的移除是暂时的,后续可能有更好的替代方法。

已经在 #361 中彻底解决了这个问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants