>From: Felipe Contreras [mailto:felipe.contreras@xxxxxxxxx] >Sent: Tuesday, December 15, 2009 12:25 PM > >On Tue, Dec 15, 2009 at 8:19 AM, Omar Ramirez Luna <omar.ramirez@xxxxxx> wrote: >> From: Fernando Guzman Lugo <x0095840@xxxxxx> >> >> Implemented on dynamic loader automatic generation of >> trampolines when near calls are made to outside of signed >> 21-bit offset available in the C64X+ DSP. > >The commit message is not clear: Why do we want this? What problem is >fixed? Is old behavior changed, or is it an independent feature? > New commit message: "Trampolines" utilize memory space containing a local jump table to hit external locations. Instead of the "near" function call directly calling the external location it "calls" a trampoline entry. A "near" function call requires the target to be within a signed, 21-bit offset from the current PC so all calls have to be within 4MB of the current execution point. The trampoline entry (location in memory) contains an unconditional long branch to the external address to be called. When the called function returns, the PC is returned to the original calling location since that is where the link register points, as the trampoline utilizes a branch instruction. Utilizing this method removes the 4MB location restriction as well since the long branch can be done within all of DSP addressable space. This doesn't require any change on the dsp side, it is an enhancement for newer DSP side binaries. - omar -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html