ChangeBigEndian ;//here ENTRY_BUS_WIDTH=16 ;@0x24 [ ENTRY_BUS_WIDTH=32 DCD 0xee110f10 ;0xee110f10 => mrc p15,0,r0,c1,c0,0 DCD 0xe3800080 ;0xe3800080 => orr r0,r0,#0x80; //Big-endian DCD 0xee010f10 ;0xee010f10 => mcr p15,0,r0,c1,c0,0 ;对存储器控制寄存器操作,指定内存模式为Big-endian ;因为刚开始CPU都是按照32位总线的指令格式运行的,如果采用其他的话,CPU别不了,必须转化 ;但当系统初始化好以后,则CPU能自动识别 ] [ ENTRY_BUS_WIDTH=16 DCD 0x0f10ee11 DCD 0x0080e380 DCD 0x0f10ee01 ;因为采用Big-endian模式,采用16位总线时,物理地址的高位和数据的地位对应 ;所以指令的机器码也相应的高低对调 ] [ ENTRY_BUS_WIDTH=8 DCD 0x100f11ee DCD 0x800080e3 DCD 0x100f01ee ] DCD 0xffffffff ;swinv 0xffffff is similar with NOP and run well in both endian mode. DCD 0xffffffff DCD 0xffffffff DCD 0xffffffff DCD 0xffffffff b ResetHandler
这段DCD就可以实现ChangeBigEndian了吗,具体怎么实现的,高手请赐教. |