Remove Device functions from ICD Dispatch table
There are numerous terminators to device level functions that the loader must
insert in the call chain. However, the Device Dispatch Tables contain pointers
to these terminators rather than the driver's function. This was worked around
by storing the driver's functions in the ICD dispatch table and calling those.
This leads to rather confusing code where the application is querying for the
ICD dispatch table inside a device level function.
The solution is to create a bespoke dispatch table for device level functions
that require a terminator, and use that table when required.
15 files changed: