最后更新2021/12/30
终于走到ppc代码call out的位置。如果是同架构cpu,glue代码做转换还相对容易一些,直接可以跳转过去,而且代码是统一的,相对简单一些。如果不同架构CPU,ABI不同,指令代码不同,这个glue code需要好好研究一下。看来未来一段时间,都要搞这个东西了。
忽然想到了一个”捷径“,可以用原有写好的ppc (同架构)glue代码做桥接。具体来说,就是把ppc glue code作为guest代码load进来,类似库函数实现。而ppc glue code里面具体调用syscall的时候,用qemu linux-user标准的sc方案,这样就自动转为qemu原有模式,这段代码已经是OK的。
那么,试一试?
继续分析linux-user,不分析清楚不会编啊!
========================================
- 为了找到地址所在的tb,用了hash方案。首先通过当前执行指令地址(pc)获得hash:tb_jmp_cache_hash_func(*pc),然后根据hash查表获得tb:atomic_rcu_read(&cpu->tb_jmp_cache[hash])。如果没有cache,那会自动读入么?
- atomic_rcu_read, write…找到出处了,