龙芯内核的binutil补丁

编译内核需要用这个特殊的binutil 补丁 这个补丁是基于2.16.x的, 等一会儿把它移植到 2.18.50

补丁对binutils增加了一个参数-mfix-gs2f-kernel 

在内核源码的menuconfig中打开 [Machine selection/ fix random instruction fetch's side effect to device for loongson cpu(special compiler)]

 在编译内核时就会启用这个参数

只有打过这个补丁, 才可以使用 -mfix-gs2f-kernel 参数编译内核.这个访问地址不会在一般软件中出现, 只会在内核中出现..

原因应该在于loongson的分支预测.跟amd5536之间

   张福新老师是这么解释的

   "通过修改binutils在jr/jalr前把指令地址限制到

一定范围(&=
   0xffffffffcfffffff,保证一定不会出现 bfd0xxxx从而避免发出非预期IO
   南桥挂掉)" 

只有在压力测试下,才会暴露这个bug, 

附件1是对binutil-2.16.x的补丁,

附件2是debian下的binutil-2.18.50-20080530+的dpatch补丁。

放在binutils-2.18.50-20080530/debian/patches下,并修改此目录下的索引文件。

 

附件大小
binutils-2.16.jr.jalr.patch.tgz2.05 千字节
999_loongson2f_amd5536_jr_jalr.dpatch.gz2.62 千字节