WÁNG Xuěruì

Results 280 comments of WÁNG Xuěruì

> 目前 LoongArch 的系统调用寄存器约定和普通的函数调用一样。 不一样,Linux/LoongArch 系统调用确保除了九个临时寄存器之外其他寄存器不被 clobber。正常寄存器约定里 `a1-a7` 也会给 clobber 掉。

AFAIK the Volumes 2 and 3 haven't been cleared by their legal dept for release yet, even the Chinese version is unavailable which developers from China have been eagerly expecting...

其实这部分内容写到 Linux 的文档里会更好,一定要写这边的话,建议新起一篇文档(这些内容与 ELF psABI委实没有太大关系)。 另外写出每个系统调用号可能冗长了,是不是可以只提到 LA 采用 asm-generic 系统调用,只把那几个值得详细描述的地方(stat、clone之类一些)详细描述?这样也省得每次Linux加系统调用这边也要跟着更新。(可以提及新增的系统调用总以Linux上游为准。)

> 有没有想过你们也提供这个? https://github.com/trcrsired/windows-hosted-loongarch64-linux-gnu-gcc-cross-comiler 龙芯的人评估一下? > 还有loongarch这个体系结构支持addcarry么?令人很不爽的关于riscv就是没有任何办法处理addcarry和subborrow. > > 加上herb sutter的P0709的Herbceptions需要额外的标志位表示函数是否出错,x86和arm上是用的carry位。但看loongarch似乎也没有标志位是么?有没有什么替代方案? LBT 扩展有 carry 位,有 adc 指令,可用(不知道有没有向量版) 基础指令集肯定是没有的,carry 位是个额外状态,想想也没地方存

> https://github.com/cppfastio/fast_io/blob/master/include/fast_io_hosted/platforms/linux/loongarch64.h 还有能帮我看下这个系统调用的实现对么?我是从loongarch克隆的libc查的。传参的寄存器和riscv64一样的 Linux/LoongArch 系统调用传参、返回姿势和 RV 一样的,指令名无所谓(其实是跟 MIPS 一样,MIPS 跟 amd64 一样而已),写得没问题

> 还有类似arm memory tagging extension有考虑扩展一下么?内存标记是目前最有效的保护内存安全问题的解决方案。 这个得有请龙芯人士回答咯

FYI: RISC-V 最早是定义 `__riscv__` 和 `__riscv32` `__riscv64` `__riscv_hard_float` 这样的,但后来他们基于类似的考虑,把 `__riscv__` 后边的两个下划线去掉了(所有 RV 预定义宏就都是 `__riscv_xxx` 形状),把 32/64 也去掉了(他们的姿势是 `#if defined(__riscv) && __riscv_xlen = 32` 这样)。 按说我们现在还有机会改掉。我在 #28 写了一些别的,也要改掉最好。

工具链应该是服务开发者的,而不要成为开发者生产力的掣肘,例如 AMD64 就带不带 `__` 后缀的符号都提供。 ``` $ gcc -dM -E - < /dev/null | grep -i 'x86\|amd' #define __amd64 1 #define __x86_64 1 #define __x86_64__ 1 #define __amd64__ 1 ```...

> 这个看起来比较实用。 可否将卷一涉及的指令都按此规范列出来?谢谢。 Done