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