-
2a54e2bafb
清理了 t.CVoid
main
TermiNexus
2026-09-16 16:07:04 +08:00
-
6a54373c26
fix(vkernel): 补 ISR/调度 call 的 rsi/rdi clobber、rep stosb 内存 clobber,修 mm 别名笔误
TermiNexus
2026-09-11 17:40:21 +08:00
-
c1dd55d606
fix(vkernel): 修 _tss.reserved0 位宽与 AP trampoline LME 指令编码
TermiNexus
2026-09-11 15:50:14 +08:00
-
a518f75b24
chore(vkernel): 重置基线 — 纳入 TPV codegen 修复配合的内核侧调整与既有工作区内容
TermiNexus
2026-09-11 14:27:01 +08:00
-
cd1cc915c5
修正了build.py,重置基线
TermiNexus
2026-09-11 10:34:34 +08:00
-
c6a4063015
revert: devfs find 恢复 for i in result(编译器已实现 NULL 终止遍历语义)
TermiNexus
2026-08-30 08:37:39 +08:00
-
3b522927bb
fix(kernel): devfs find 改 range(token) 遍历,修复全量遍历未初始化栈数组致 strcmp NULL 崩溃
TermiNexus
2026-08-30 08:30:30 +08:00
-
463a20017f
fix(kernel): save_pt_range 的 c.Set 改 c.Set(c.Deref(save_count)) 写所指地址而非指针变量
TermiNexus
2026-08-30 07:44:40 +08:00
-
333adb090f
fix(kernel): devfs last_slash/file_name 改用裸 str,修复 i8* 赋给 i8** 导致设备注册空名
TermiNexus
2026-08-30 07:43:55 +08:00
-
2a03330a9d
fix(kernel): 分裂 2MB 大页使 .rodata 真正只读,加页表与格式串校验诊断并禁用 App 自动启动
TermiNexus
2026-08-30 07:27:45 +08:00
-
efa99a8c4b
fix(kernel): [STK] 用户态 rbp 跳过链回溯(防嵌套 #PF 死循环)
TermiNexus
2026-08-29 18:14:48 +08:00
-
3a3d026f95
fix(debug): _fault_rax 改为 ISR 入口最早保存(避免被读 CS 覆盖)
TermiNexus
2026-08-29 18:06:03 +08:00
-
25af08ecf4
debug(kernel): 保存并打印崩溃时 RAX(验证 cr2=rax-偏移 关系)
TermiNexus
2026-08-29 18:00:13 +08:00
-
084061f97e
debug(kernel): [STK] rbp 链回溯扩展到所有异常(含 #UD int 6)
TermiNexus
2026-08-29 17:53:40 +08:00
-
a85f826adf
debug(kernel): #PF 打印 rbp 链回溯(崩溃帧 + 4 级返回地址)
TermiNexus
2026-08-29 17:50:32 +08:00
-
b1956ea722
fix(kernel): paging.init 先清 WP 再 MakePTWritable 再置 WP(bootloader 已设 WP=1)
TermiNexus
2026-08-29 17:42:34 +08:00
-
56e38c43ea
fix(kernel): MakePTWritable 移到 WP=0 阶段执行,破除页表页递归只读死锁
TermiNexus
2026-08-29 17:41:03 +08:00
-
4f729b20a3
fix(kernel): _set_page_writable 支持 2MB 大页(PD 条目直接置 W)
TermiNexus
2026-08-29 17:39:25 +08:00
-
a92073851e
fix(kernel): 保护 .rodata 前先放开页表页可写(WP=1 暴露写页表 #PF)
TermiNexus
2026-08-29 17:37:29 +08:00
-
04ca2d4c5b
fix(kernel): .rodata 映射只读 + CR0.WP=1,越界写立即 #PF 暴露写源
TermiNexus
2026-08-29 17:34:41 +08:00
-
b887d3d9c2
更新,部分功能可用
TermiNexus
2026-08-27 09:47:47 +08:00
-
4296d2a19e
fix(asm-inline): cmos_read 裸 in/out al 补 CLOBBER_RAX + 显式 mov;rdmsr out 绑定与 clobber 冲突(lo/hi 读不到 EAX/EDX)改显式 mov——同类 EAX 破坏根因,残留间歇性数据损坏源
TermiNexus
2026-08-27 01:33:19 +08:00
-
f963fb16ad
debug(fat32): sfn_from_lfn 打印 dot_pos/i/ext_i 与生成的 sfn——Hello 生成 HELLO 空格(缺扩展名),定位 for-in 遍历/扩展名写入间歇性失败
TermiNexus
2026-08-27 01:30:02 +08:00
-
e49c74fb12
debug(fat32): handle_alloc 表满诊断加 handle_table 地址——定位 BSS 相邻越界写源
TermiNexus
2026-08-27 01:27:38 +08:00
-
8f15455784
debug(fat32): handle_alloc 表满时打印 handles_initialized 与前 4 个 handle 的 is_open——spawn scan open failed err=18(FR_TOO_MANY_OPEN_FILES)
TermiNexus
2026-08-27 01:26:12 +08:00
-
2b0d68d3fe
debug(elf): read_len 后加 RAX 快照——fat32.read 打印 br=64 但 load_elf 收到 rl=0,区分 call 返回错 vs store 后被覆盖
TermiNexus
2026-08-27 01:24:26 +08:00
-
f6154bfed3
debug(fat32): dir_find 打印 sfn_from_lfn 生成的 11 字节 hex——hello.elf 的 sfn 显示为 H(sfn[1]=0x00),定位 sfn 生成被破坏
TermiNexus
2026-08-27 01:21:15 +08:00
-
f8ad5b7176
debug(paging): init_pool 打印 pt_pool_raw/pt_pool_start——clone 时 raw=0x0,区分 init 收到 0 还是 init 后被覆盖
TermiNexus
2026-08-27 01:19:04 +08:00
-
364daa111b
debug(fat32,elf): win_read 打印 abs_sector/hidden_sectors/win 前4字节(win[0..1] 被清零);not x86_64 分支 dump ehdr 前20字节(read_len=64 但内容错)
TermiNexus
2026-08-27 01:11:05 +08:00
-
d0b512f159
debug(elf,main): 打印 read_len 与 spawn_elf 返回 pid 实际值——fat32.read 内部 br=64 但 load_elf 收到 <64、spawn ret pid=1 但 main 收到 0,定位跨模块返回值间歇性丢失
TermiNexus
2026-08-27 01:08:37 +08:00
-
a621b0d264
debug(paging,process,fat32): 定位 BSS 全局内存破坏——clone AllocPage 失败打印 pt_pool_raw/pt_pool_used,create_process malloc 返回实际值(mm 成功但调用方收 None),dir_find 失败 dump win 缓冲内容
TermiNexus
2026-08-27 01:02:39 +08:00
-
42312a39b1
fix(desktop): mm.malloc 显式 CUInt64T 参数规避裸名回退 i32 参数(bg_row_buf 收到 0x0);fat32 dir_get_entry_info 加 win 缓冲内容诊断(根目录显示 (None) size=523360、dir_find offset=0 失败疑似 win 污染)
TermiNexus
2026-08-27 00:55:54 +08:00
-
038b0a428e
fix(ide,elf): 移除每次读扇区前的 0x3F6 SRST 软复位写(Gargantua 大数据段读取中途 waitDataReady 失败根因);spawn_elf 用指针算术替代 path[name_start:] 切片传参并加 entry/pid 运行时诊断
TermiNexus
2026-08-27 00:45:23 +08:00
-
25d2628cd4
fix(fat32,devfs): c.Set 坏模式静默不写——lfn_extract/lfn_set_char 从未写入 LFN 缓冲,dir_find 长文件名匹配永远失败;devfs 键盘/鼠标 buffer 未写入;改 c.Set(c.Deref(ptr),val) 与下标赋值,并补 sfn 超 8 字符生成 ~1 短名;elf bad magic 加 hex dump 诊断
TermiNexus
2026-08-27 00:32:54 +08:00
-
3418bc6a59
fix(fat32): c.Set 写指针误用值赋值,改为 c.Set(c.Deref(ptr),val)——read/write 的 br/bw、dir_sector_out、ioctl 扇区参数从未写入导致 ehdr 读取返回0
TermiNexus
2026-08-27 00:20:27 +08:00
-
c0685fe6bd
debug(fat32): read 包装打印 br 实际值,确认 c.Set 是否写入(types 内 total_read=64 但 read_len<64)
TermiNexus
2026-08-27 00:12:46 +08:00
-
51c7475031
debug(fat32): read 打印文件状态(size/first_cluster/pos)与实际读取字节数,定位 ehdr 读取失败根因
TermiNexus
2026-08-27 00:08:52 +08:00
-
a8f7c0b0b3
debug(sched): create_thread 打印 tid/func/stack 实际值,定位线程首次调度跳栈 #UD(rip 在栈区域)根因
TermiNexus
2026-08-26 23:30:28 +08:00
-
4c25e0e35c
debug(desktop,uhci): malloc 判空失败处打印实际返回值,定位 mm.malloc 返回值与调用方接收不一致
TermiNexus
2026-08-26 23:25:15 +08:00
-
cdee5e0e87
debug(idt): 非 #GP/#PF 异常打印 rip/rsp,定位 tid=1 #UD 执行位置
TermiNexus
2026-08-26 22:22:56 +08:00
-
61208676c6
fix(main): _start 加 stackrealign,修复变参函数 movaps #GP
TermiNexus
2026-08-26 20:18:09 +08:00
-
ff802c2eed
debug(intr): #GP 打印 CR0/CR4
TermiNexus
2026-08-26 19:40:13 +08:00
-
7b084803f5
fix(cpu): 启动早期启用 SSE/FPU,修复 movaps #GP
TermiNexus
2026-08-26 19:36:50 +08:00
-
4ff48efde9
debug(intr): #GP/#PF 打印 faulting RSP
TermiNexus
2026-08-26 19:34:01 +08:00
-
530c85d6a4
fix(main): 移除 BootInfo 局部重声明,修复 memmap 全 0
TermiNexus
2026-08-26 19:26:50 +08:00
-
87d4e359d8
debug(main): 转储 BootInfo 地址处原始 88 字节
TermiNexus
2026-08-26 19:23:30 +08:00
-
963e0ed53f
debug(main): 打印 BootInfo 指针与 memmap 原始字段
TermiNexus
2026-08-26 19:17:58 +08:00
-
d4200f1129
debug(mm): 无条件打印 memmap 三参数 + fallback CMOS 原始值
TermiNexus
2026-08-26 19:11:22 +08:00
-
1043343b9d
fix(mm): get_block_size 移位改 64 位,修复伙伴初始化无限循环
TermiNexus
2026-08-26 19:04:55 +08:00
-
f9ec205816
debug(mm): 转储 memmap 描述符 + buddy 初始化循环进度
TermiNexus
2026-08-26 19:02:40 +08:00
-
3995cb9545
debug(timer): 门32读回+软int0x20+PIC ISR,一次性区分中断分发路径
TermiNexus
2026-08-26 18:42:58 +08:00
-
ee329c313f
fix(apic): early_init 改用 IA32_APIC_BASE EN 位判断,避免 cpuid 误判跳过 init
TermiNexus
2026-08-26 18:39:07 +08:00
-
9ff53aa1fa
debug(apic): 读回 LINT0 与 APIC BASE MSR,验证 EXTINT 配置是否生效
TermiNexus
2026-08-26 18:32:21 +08:00
-
471cfa16bf
debug(timer): timer_init 读 PIT 计数器,验证 PIT 是否在走
TermiNexus
2026-08-26 18:29:20 +08:00
-
57c4092d19
debug(timer): timer_handler 一次性 H + msleep 自旋 s,判定 ISR 是否被调用
TermiNexus
2026-08-26 18:26:34 +08:00
-
9082056fe0
fix(timer): timer_handler 补 LAPIC EOI,修复 APIC 启用后定时中断被屏蔽
TermiNexus
2026-08-26 18:23:16 +08:00
-
f675540c64
chore(boot): 移除全部中断排查诊断(int20 测试 + T/[T]/D 打印)
TermiNexus
2026-08-26 18:19:41 +08:00
-
3c163a5936
debug(boot): sti 后软件触发 int 0x20,二分定位中断不送达
TermiNexus
2026-08-26 18:16:09 +08:00
-
9ec3627a5a
fix(boot): 启用 apic.early_init,配置 LINT0=EXTINT 恢复 PIC 定时中断
TermiNexus
2026-08-26 18:14:29 +08:00
-
10857e58ed
debug(intr): isr32_handler 入口打印 T + isr_default 打印 D,定位定时中断丢失
TermiNexus
2026-08-26 18:11:47 +08:00
-
7336ddff48
debug(timer): timer_handler 每 250 拍打印 [T],验证定时器中断触发
TermiNexus
2026-08-26 18:07:47 +08:00
-
8b40203b63
提交新的建议忽略
TermiNexus
2026-08-06 18:08:50 +08:00
-
be92f671d0
根据静态注解修正了部分的 global 修正(遍历截止fat32 fileio.vp)
TermiNexus
2026-07-31 13:36:26 +08:00
-
9d786dd5b1
self 传参的相关修复
TermiNexus
2026-07-30 17:30:47 +08:00
-
49d074e487
通过插件的静态推导修复了一些错误
TermiNexus
2026-07-30 17:28:27 +08:00
-
065fcbdf43
调整了 VKernel 的版本
TermiNexus
2026-07-30 17:26:17 +08:00
-
56d127cb88
将 project.json 改为了 project.vpj,初步尝试了使用 Viper 插件高亮
TermiNexus
2026-07-30 17:24:35 +08:00
-
20e7289c61
将 .py 和 .pyi 后缀名改为了 .vp 和 .vpi 后缀名
TermiNexus
2026-07-30 16:34:26 +08:00
-
10cefa51ad
Add MIT LICENSE
Viper
2026-07-19 14:39:40 +08:00
-
a1234d5382
Add bilingual README
Viper
2026-07-19 12:42:11 +08:00
-
6813947181
Initial import of ViperOS
Viper
2026-07-19 12:38:20 +08:00