Hi, This question is not directly related to linux, but a question on how to execute code from.
My test code is as follows.. void ram(unsigned int cat) __attribute__ ((section(".ram_code"))); void ram1(void) __attribute__ ((section(".ram_code"))); void flash(void) __attribute__ ((section(".text"))); void flash1(unsigned int y) __attribute__ ((section(".text"))); void ram(unsigned int cat) { unsigned int abc; abc += 12; abc += cat; } void ram1(void) { ram(123); } void flash1(unsigned int y) { unsigned int x; x = x + y; } void flash(void) { unsigned int def; def += 12; asm (" bel ram1\n\t"); } I have the section .ram_code mapped into the internal SRAM of the MPC55xx, which starts at 0x40000000. Code in .text are mapped into MPC55xx's internal FLASH, starting at 0x00000000. When I attempt to link the code together, I get the error U:\src\applications\comms/fatdog.c(35,1): relocation truncated to fit: R_PPC_REL24 against symbol `ram1' defined in .ram_code section in U:\src\applications\comms\fatdog.o I googled the error and I think it means that the ram1() is too far away and the branch address has been truncated to fit into the binary. Other than assembler bel instruction, I have also tried bl, b and bea and all of them gave the same link error. I was wondering if anyone can give some insight on how I can get the MPC55xx to branch between FLASH and SRAM? Many thanks, Tehn Yit Chin
_______________________________________________ Linuxppc-embedded mailing list Linuxppc-embedded@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-embedded