RE: [PATCH 02/17] DSPBRIDGE: Implemented Trampoline support for dynamic loader

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux