更新日志
ICS2024
NEMU
- 特性
- 性能
- 修复
- 重构
- 构建
- 文档
Abstract-Machine
- 特性
- 修复
- 重构
- 构建
- 去除
Makefile
的image-dep
规则中的冗余依赖 (补丁在新窗口中打开) - 避免Linux上的其他动态库链接到ELF中的符号 (补丁在新窗口中打开)
- 重构依赖规则
native
的IOE通过sdl2-config
找到SDL.h
(补丁在新窗口中打开)- 修复
x86-qemu
中array subscript 0 is outside array bounds
的警告 (补丁在新窗口中打开)
am-kernels
- 特性
- 性能
- 修复
- 重构
- 构建
- 文档
Navy-apps
- 修复
- 构建
- 文档
ICS2023
NEMU
- 特性
- 修复
- 修复译码非法指令时的未定义行为 (补丁在新窗口中打开)
- 更新spike版本, 修复macOS上因llvm版本较新导致的spike编译错误 (补丁在新窗口中打开)
- 修复
gen-expr
中fscanf()
未检查返回值导致的编译报错 (补丁在新窗口中打开) - 修复
nemu/src/device/keyboard.c
中宏可能与库的头文件中定义重名的问题 - 修复SDL在Wayland环境下窗口不弹出的问题 (补丁在新窗口中打开)
- 重构
- 构建
- 文档
Abstract-Machine
- 特性
- 修复
- 在mips32的
start.S
中为异常入口0x80000180
预留若干位置, 用于设置异常入口处的执行 (补丁在新窗口中打开) - 修复sdl2-2.0.22-1后窗口有概率不显示的问题 (补丁在新窗口中打开)
- 修复native的
platform.c
链接到RT-Thread中ftruncate()
的问题 (补丁在新窗口中打开) - 修复
riscv.h
中通用寄存器数量在rve中不正确的问题 (补丁在新窗口中打开) - 修复
riscv32-nemu
中错误采用rve ABI的问题 (补丁在新窗口中打开)
- 重构
- 将
scripts/isa/
目录下RISC-V相关的.mk
文件合并成riscv.mk
(补丁在新窗口中打开) - 将
am/include/arch/
目录下RISC-V相关的.h
文件合并成riscv.h
(补丁在新窗口中打开)
- 构建
am-kernels
- 特性
- 新增ALU test, bf等应用, 移植自movfuscator项目在新窗口中打开 (补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开, 补丁在新窗口中打开)
- 修复
- 修复native在glibc 2.39上运行thread-os时发生栈溢出的问题 (补丁在新窗口中打开)
- 重构
Navy-Apps
- 特性
- 修复
- 重构
- 将CRT中
_start
的定义集中在一个文件中, 方便使用__riscv
宏进行判断 (补丁在新窗口中打开)
- 构建
- 文档
ICS2022
NEMU
- 特性
- 修复
- 重构
- 构建
- 文档
Abstract-Machine
- 特性
- 修复
- 构建
- 默认使用通常模式(而不是批处理模式)来运行NEMU (补丁在新窗口中打开)
- 修复ubuntu 21.10下因glibc中的
SIGSTKSZ
展开为函数调用而导致native编译出错的问题 (补丁在新窗口中打开)
am-kernels
- 构建
Nanos-lite
- 修复
- 修复
sizeof(struct timeval)
在glibc和newlib中不一致的问题 (补丁在新窗口中打开)
Navy-apps
- 构建
ICS2021
NEMU
- 特性
- 为VGA添加sync寄存器 (补丁在新窗口中打开)
- 添加riscv64 (补丁在新窗口中打开)
- 引入"抄手册宏", 简化操作码译码的实现 (补丁在新窗口中打开)
- 添加spike作为RISC-V DiffTest的REF
- 暂时移除x86和mips
- 移除
cpu-tests
的一键运行脚本, 将其合并到cpu-tests
中 - 添加各种对宏进行相关测试的宏定义
- 添加一些将来可能会使用的资源, 包括启动Debian的说明, SD卡内核驱动等
- 在
cpu_exec()
中调用device_update()
(补丁在新窗口中打开)
- 修复
- 重构
- 去除
gen-expr
中的无用代码 (补丁在新窗口中打开) - 将简易调试器命名为
sdb
- 添加
hostcall()
来封装计算指令以外的操作 - 用
host_read()
/host_write()
实现pmem_read()
和pmem_write()
- 添加
mmio_read()
/mmio_write()
- 将部分功能实现放到
utils/
目录下 - 重构
qemu-diff
中ISA相关的代码 - 将
load_val
重命名为is_write
(补丁在新窗口中打开) - 用
dnpc
更新pc
(补丁在新窗口中打开) - 将移位指令的命名修改成RISC-V风格 (补丁在新窗口中打开)
- 去除无用的
isa_mmu_state()
(补丁在新窗口中打开) - 去除无用的
isa_hostcall()
(补丁在新窗口中打开)
- 构建
- 添加
Kconfig
和menuconfig
维护宏定义 - 将
Makefile
拆成build.mk
和native.mk
, 前者用于在构建tools/
目录下的工具时复用 - 在
Makefile
中采用filelist维护需要编译的源文件 - 支持将NEMU编译到AM
- 去除
build.mk
中无用的SO_CFLAGS
(补丁在新窗口中打开)
- 文档
Abstract-Machine
- 特性
- 性能
- 移除
native
在物理内存上的保护功能, 减少系统调用以提升性能 (补丁在新窗口中打开) - 用哈希表实现
native
的map()
中的虚地址查找
- 修复
- 修复Linux 4.19内核中因恢复FPU上下文时
fxrstor64
指令触发缺页而发送SIGSEGV
的问题 (补丁在新窗口中打开) - 修复
native
在信号处理函数中调用非信号安全函数printf()
的问题 - 修复
amdev.h
被多次包含造成的问题 - 修复在
native
上运行仙剑时遇到的SIGFPE
问题, 需要在调用SDL_BlitSurface
前清除等待中的FPU异常 - 修复
riscv64-mycpu
模拟除法时的死递归问题 (补丁在新窗口中打开) - 修复静态库的循环依赖问题 (补丁在新窗口中打开)
- 重构
- 移除
x86-nemu
中无用的usp
(补丁在新窗口中打开) - 在
native
中使用SIGUSR2
实现yield()
, 提升代码的可移植性 - 在
native
中使用函数调用从irq_handle()
返回, 提升代码的可移植性 - 用surface相关API实现
native
的SDL渲染 - 将
native
平台相关的代码移动到platform.c
中 - 用管道实现
native
声卡中的数据同步 - 去除
boot
目录 - 将
__amkcontext_start
重命名为__am_kcontext_start
- klib中的函数默认调用
panic()
- 重构目录, 合并riscv32和riscv64 (补丁在新窗口中打开)
- 构建
- 清理NEMU客户程序中未使用的代码和数据 (补丁在新窗口中打开)
- 去除Ubuntu 20.04中在Comet Lake以上版本的CPU中编译出的
endbr32
指令 (补丁在新窗口中打开) - 待构建源文件列表为空时提示错误信息
- 若交叉编译器不存在, 则使用本地编译器
- 不同的架构复用相同的链接脚本
- 在mk文件中指定AM相关的源文件 (补丁在新窗口中打开)
- 在Ubuntu中禁用栈保护 (补丁在新窗口中打开)
- 文档
am-kernels
- 特性
- 修复
- 重构
- 在
microbench
中显式使用uint32_t
和uint64_t
(补丁在新窗口中打开) - 由
microbench
自行对us
部分进行输出格式化, 避免对%03d
的依赖 (补丁在新窗口中打开) - 将
am-tests
中intr-test
的pirntf()
换成putch()
, 降低对klib的依赖 (补丁在新窗口中打开)
- 构建
Nanos-lite
- 修复
Navy-apps
- 特性
- 修复
- 修复NWM在退出时子进程仍然运行的问题 (补丁在新窗口中打开)
- 修复
libbdf
和libbmp
调用SDL_CreateRGBSurfaceFrom
后的内存泄漏问题 (补丁在新窗口中打开)
- 重构
libminiSDL
将fp
从SDL_RWops
的union
成员中取出, 从而允许通过fmemopen
实现内存文件 (补丁在新窗口中打开)libSDL_image
中要求IMG_Load_RW()
的freesrc
参数为0
(补丁在新窗口中打开)
- 构建
- 文档