summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc/gen5200
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-22 15:32:38 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-23 15:18:43 +0200
commita0f04d65dd5eed3453af31eb7893c0b069bfdedd (patch)
treed20db5ba6ce648e57e021e72f618e1f5a1f292f8 /bsps/powerpc/gen5200
parentbsp/atsam: Move libraries to bsps (diff)
downloadrtems-a0f04d65dd5eed3453af31eb7893c0b069bfdedd.tar.bz2
bsp/gen5200: Move bestcomm to bsps
This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'bsps/powerpc/gen5200')
-rw-r--r--bsps/powerpc/gen5200/bestcomm/bestcomm_api.c459
-rw-r--r--bsps/powerpc/gen5200/bestcomm/bestcomm_glue.c262
-rw-r--r--bsps/powerpc/gen5200/bestcomm/dma_image.c624
-rw-r--r--bsps/powerpc/gen5200/bestcomm/dma_image.reloc.c1453
-rw-r--r--bsps/powerpc/gen5200/bestcomm/load_task.c84
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_ata.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_bdtable.c117
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_0.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_1.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_fec_rx_bd.c37
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_fec_tx_bd.c38
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_0.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_1.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_2.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_3.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_0.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_1.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_rx_bd.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_gen_tx_bd.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_lpc.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_pci_rx.c36
-rw-r--r--bsps/powerpc/gen5200/bestcomm/tasksetup_pci_tx.c36
22 files changed, 3578 insertions, 0 deletions
diff --git a/bsps/powerpc/gen5200/bestcomm/bestcomm_api.c b/bsps/powerpc/gen5200/bestcomm/bestcomm_api.c
new file mode 100644
index 0000000000..ead2046275
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/bestcomm_api.c
@@ -0,0 +1,459 @@
+/******************************************************************************
+*
+* Copyright (c) 2004 Freescale Semiconductor, Inc.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+******************************************************************************/
+
+/*!
+ * \mainpage Introduction
+ *
+ * \author Motorola Semiconductor Products Sector
+ * \date 2 Apr 2004
+ */
+
+/*!
+ * \file bestcomm_api.c
+ *
+ * Bestcomm_api.c implements most of the BestComm C API. The
+ * TaskSetup() function is generated by the BestComm Task API tools
+ * in capi/task_api/tasksetup_general.h as configured and included by
+ * code_dma/image_rtos?/task_capi/(*).c. Other functions are defined as
+ * inline in capi/bestcomm_api.h.
+ */
+
+#include <bsp/bestcomm/include/ppctypes.h>
+#include <bsp/bestcomm/bestcomm_api.h>
+#include <bsp/bestcomm/task_api/bestcomm_cntrl.h>
+#include <bsp/bestcomm/task_api/bestcomm_api_mem.h>
+#include <bsp/bestcomm/task_api/tasksetup_bdtable.h>
+
+/***********************************************************************
+ */
+static const char* const TaskVersionString = "BestComm API v2.2 20041209";
+
+/*
+ * Hidden API data per task.
+ */
+
+static BDIdx BDHead[MAX_TASKS];
+static BDIdx BDTail[MAX_TASKS];
+
+/*
+ * Virtual memory location of the MBAR. System registers and SRAM are
+ * offset from this address.
+ */
+uint8 *MBarGlobal;
+
+/*
+ * Offset from MBarGlobal to get the physical memory address of the
+ * MBAR. This will be zero for systems that do not use virtual memory in
+ * their device driver model.
+ */
+sint64 MBarPhysOffsetGlobal;
+
+/*
+ * This flag is false when TaskStart() has not yet been called on a
+ * task newly configured by TaskSetup() or TaskStop() has been called.
+ * Otherwise it is true. It is possible that a task disabled itself
+ * (transfer complete or BD ring empty) which will not show up in this
+ * flag.
+ *
+ * It is really only useful for BD tasks that assign buffers (via
+ * TaskBDAssign()) before TaskStart() or after TaskStop() are called.
+ */
+int TaskRunning[MAX_TASKS];
+
+/*!
+ * \brief Get a string containing API version information.
+ * \returns Pointer to the API version string
+ */
+const char *TaskVersion(void)
+{
+ return TaskVersionString;
+}
+
+/*!
+ * \brief Initialize the API.
+ * \param MBarRef Reference pointer to the device register memory
+ * map.
+ *
+ * \returns TASK_ERR_NO_ERR on successful initialization.
+ * or TASK_ERR_API_ALREADY_INITIALIZED.
+ *
+ * This function is only used with physical addresses.
+ *
+ * This function will also initialize API internal variables. The return
+ * value TASK_ERR_API_ALREADY_INITIALIZED is intended to help determine if
+ * another process has already instantiated a version of the API.
+ */
+int TasksInitAPI(uint8 *MBarRef)
+{
+ /*
+ * Copy pointer of register space to global variable.
+ * for use by other functions.
+ */
+ MBarGlobal = MBarRef;
+
+ /*
+ * The offset is 0 if physical and virtual are the same.
+ */
+ MBarPhysOffsetGlobal = 0;
+
+ /*
+ * IF API has not been initialized yet then...
+ * Make sure all BestComm interrupts are disabled and not pending.
+ * Make sure all tasks are disabled.
+ * This feature can only be put in after a way has been found to
+ * communicaticate with other processes.
+ */
+ return TASK_ERR_NO_ERR;
+}
+
+/*!
+ * \brief Initialize the API when virtual memory is used.
+ * \param MBarRef Reference pointer to the device register memory
+ * map.
+ * \param MBarPhys Actual physical location of MBAR device register
+ * memory map.
+ *
+ * \returns TASK_ERR_NO_ERR on successful initialization.
+ * or TASK_ERR_API_ALREADY_INITIALIZED.
+ *
+ * This function allows using virtual memory addresses as well as physical
+ * addresses. All device registers are offset to the address supplied here,
+ * so the virtual memory space should include enough space for the entire
+ * register set of the device to include the SRAM space.
+ *
+ * This function will also initialize API internal variables. The return
+ * value TASK_ERR_API_ALREADY_INITIALIZED is intended to help determine if
+ * another process has already instantiated a version of the API.
+ */
+int TasksInitAPI_VM(uint8 *MBarRef, uint8 *MBarPhys)
+{
+ /*
+ * Copy pointer of register space to global variable.
+ * for use by other functions.
+ */
+ MBarGlobal = MBarRef;
+ MBarPhysOffsetGlobal = MBarPhys - MBarRef;
+
+ /*
+ * If API has not been initialized yet then...
+ * Make sure all BestComm interrupts are disabled and not pending.
+ * Make sure all tasks are disabled.
+ * This feature can only be put in after a way has been found to
+ * communicaticate with other processes.
+ */
+ return TASK_ERR_NO_ERR;
+}
+
+/*!
+ * \brief \em Deprecated
+ * \param sdma Base address of the BestComm register set
+ *
+ * \returns TASK_ERR_NO_ERR
+ *
+ * Use of this function is no longer necessary. It is retained for
+ * compatibility with previous versions of the API.
+ */
+int TasksAttachImage(sdma_regs *sdma)
+{
+ return TASK_ERR_NO_ERR;
+}
+
+/*!
+ * \brief Start an initialized task running.
+ * \param taskId Task handle passed back from a successful TaskSetup()
+ * \param autoStartEnable Boolean for whether autostart bit is enabled.
+ * If this is set then the parameter autoStartTask
+ * defines the task to auto start.
+ * \param autoStartTask TaskId for task to autostart. If autoStartEnable
+ * is not set then this parameter is a don't care.
+ * \param intrEnable Boolean for interrupt enable for this task.
+ * \returns TASK_ERR_NO_ERR on success or TASK_ERR_INVALID_ARG if taskId
+ * is invalid.
+ */
+int TaskStart(TaskId taskId, uint32 autoStartEnable, TaskId autoStartTask,
+ uint32 intrEnable)
+{
+ if (intrEnable) {
+ SDMA_INT_ENABLE(SDMA_INT_MASK, taskId);
+ } else {
+ SDMA_INT_DISABLE(SDMA_INT_MASK, taskId);
+ }
+ SDMA_TASK_AUTO_START(SDMA_TCR, taskId, autoStartEnable, autoStartTask)
+ SDMA_TASK_ENABLE(SDMA_TCR, taskId);
+
+ TaskRunning[taskId] = 1;
+ return TASK_ERR_NO_ERR;
+}
+
+/*!
+ * \brief Stop a running task.
+ * \param taskId Task handle passed back from a successful TaskSetup()
+ * \returns TASK_ERR_NO_ERR on success or TASK_ERR_INVALID_ARG if taskId
+ * is invalid.
+ *
+ * \em Note: Stopping a polling buffer descriptor task is a catastrophic
+ * operation. It does not merely pause execution. Context is not
+ * saved. The task's pointer into the BD ring is reset back to the
+ * beginning.
+ *
+ * \em Note: This is not the case for the new "fall-through" BD tasks.
+ * They save the BD ring pointer across stop/start boundaries. The
+ * previous polling tasks are considered deprecated.
+ */
+int TaskStop(TaskId taskId)
+{
+ SDMA_INT_DISABLE(SDMA_INT_MASK, taskId);
+ SDMA_TASK_DISABLE(SDMA_TCR, taskId);
+
+ TaskRunning[taskId] = 0;
+ return TASK_ERR_NO_ERR;
+}
+
+/*!
+ * \brief Assign a buffer to a buffer descriptor.
+ * \param taskId Task handle passed back from a successful TaskSetup()
+ * \param buffer0 A buffer to send data from or receive data into a device
+ * \param buffer1 A second buffer to send data from or receive data into
+ * a device for use with double-buffer tasks.
+ * \param size Size of the buffer in bytes.
+ * \param bdFlags Buffer descriptor flags to set. Used by ethernet BD tasks.
+ * \returns Handle to the buffer descriptor used by this DMA transfer.
+ * Error is indicated by a negative return value (see TaskErr_t).
+ *
+ * This function is used for both transmit and receive buffer descriptor
+ * tasks. The buffer may be freed by the TaskBDRelease() function.
+ * In the case of tasks with a buffer descriptor with two buffer pointers
+ * this function uses both buffer0 and buffer1 where buffer0 is a source
+ * and buffer1 is a destination. When the buffer descriptor is a single
+ * pointer type, the buffer0 is the only pointer used and buffer1 is ignored.
+ *
+ * Using this function on non-buffer descriptor tasks will produce
+ * unpredictable results.
+ */
+BDIdx TaskBDAssign(TaskId taskId, void *buffer0, void *buffer1, int size, uint32 bdFlags)
+{
+ BDIdx *bdHead;
+ TaskBD_t *bd;
+ BDIdx r = TASK_ERR_NO_ERR;
+
+ if (TaskBDIdxTable[taskId].currBDInUse == TaskBDIdxTable[taskId].numBD) {
+ /*
+ * The buffer ring is full.
+ */
+ r = TASK_ERR_BD_RING_FULL;
+
+ } else if ( (TaskBDIdxTable[taskId].apiConfig & API_CONFIG_BD_FLAG)
+ && ((uint32)size & (uint32)(~SDMA_DRD_MASK_LENGTH))) {
+ r = TASK_ERR_SIZE_TOO_LARGE;
+
+ } else if ( !(TaskBDIdxTable[taskId].apiConfig & API_CONFIG_BD_FLAG)
+ && ((uint32)size & (uint32)(0xffffffff<<SDMA_BD_BIT_READY))) {
+ r = TASK_ERR_SIZE_TOO_LARGE;
+
+ } else {
+ bdHead = &BDHead[taskId];
+
+ /*
+ * Increase Buffer Descriptor in-use variable.
+ */
+ ++TaskBDIdxTable[taskId].currBDInUse;
+
+ /*
+ * Get a generic TaskBD_t pointer to the BD to be assigned.
+ * Assign the buffer pointers.
+ */
+ bd = TaskBDIdxTable[taskId].BDTablePtr;
+ if (TaskBDIdxTable[taskId].numPtr == 1) {
+ bd = (TaskBD_t *)&(((TaskBD1_t *)bd)[*bdHead]);
+
+ ((TaskBD1_t *)bd)->DataPtr[0] = (uint32)buffer0;
+ } else {
+ bd = (TaskBD_t *)&(((TaskBD2_t *)bd)[*bdHead]);
+
+ ((TaskBD2_t *)bd)->DataPtr[0] = (uint32)buffer0;
+ ((TaskBD2_t *)bd)->DataPtr[1] = (uint32)buffer1;
+ }
+
+
+ if (bd->Status & SDMA_BD_MASK_READY) {
+ /*
+ * This BD is in use.
+ */
+ r = TASK_ERR_BD_BUSY;
+
+ } else {
+
+ /*
+ * Set status bits and length. As soon as Status is written, the
+ * BestComm may perform the transfer.
+ */
+ if (TaskBDIdxTable[taskId].apiConfig & API_CONFIG_BD_FLAG) {
+ bd->Status = ( ((uint32)SDMA_DRD_MASK_FLAGS & bdFlags)
+ | ((uint32)SDMA_DRD_MASK_LENGTH & (uint32)size)
+ | ((uint32)SDMA_BD_MASK_READY));
+ } else {
+ bd->Status = ( ((uint32)SDMA_BD_MASK_SIGN & (uint32)size)
+ | ((uint32)SDMA_BD_MASK_READY));
+ }
+
+ /*
+ * Return the current BD index and increment.
+ */
+ r = *bdHead;
+ *bdHead = (BDIdx)((*bdHead + 1) % (BDIdx)TaskBDIdxTable[taskId].numBD);
+ }
+ }
+
+ /*
+ * Reenable a fall-through BD tasks that might have exited.
+ */
+ if (TaskRunning[taskId]) {
+ SDMA_TASK_ENABLE(SDMA_TCR, taskId);
+ }
+ return r;
+}
+
+/*!
+ * \brief Release last buffer in the buffer descriptor ring.
+ * \param taskId Task handle passed back from a successful TaskSetup()
+ *
+ * \returns Buffer descriptor index of next buffer index that will be released
+ * by another call of this function.
+ * TASK_ERR_BD_RING_EMPTY is returned if the ring is already empty.
+ *
+ * This function allows the system to reallocate the memory used by
+ * the buffer. It also cleans up the structure in the BD ring by
+ * removing the tail buffer in the ring. The buffer descriptor tasks
+ * are designed around this. Non-BD tasks do not use this function.
+ *
+ * Using this function on non-buffer descriptor tasks will produce
+ * unpredictable results.
+ */
+BDIdx TaskBDRelease(TaskId taskId)
+{
+ BDIdx *bdTail;
+ TaskBD_t *bd;
+
+ bdTail = &BDTail[taskId];
+
+ if (TaskBDIdxTable[taskId].currBDInUse == 0) {
+ /*
+ * Buffer Descriptor ring is empty, Can't Release!
+ */
+ return TASK_ERR_BD_RING_EMPTY;
+ }
+
+ /*
+ * Get a generic TaskBD_t pointer to the next BD to be released.
+ */
+ bd = TaskGetBD(taskId, *bdTail);
+
+ /*
+ * Verify the ready bit is clear.
+ */
+ if (bd->Status & SDMA_BD_MASK_READY) {
+ return TASK_ERR_BD_BUSY;
+ }
+
+ /*
+ * Increment the tail pointer around the ring, decrement in-use.
+ */
+ *bdTail = (BDIdx)((*bdTail + 1) % (BDIdx)TaskBDIdxTable[taskId].numBD);
+ --TaskBDIdxTable[taskId].currBDInUse;
+
+ return *bdTail;
+}
+
+
+/*!
+ * \brief Release all buffers.
+ * \param taskId Task handle passed back from a successful TaskSetup()
+ *
+ * \returns Buffer descriptor index of next buffer that will be
+ * assigned by TaskBDAssign() which will also be the first
+ * released by the next call to TaskBDRelease() or
+ * TASK_ERR_TASK_RUNNING if the task has not been stopped.
+ *
+ * This function is similar to TaskBDRelease() except that it releases
+ * all assigned buffers including those not yet processed by the BestComm
+ * task; i.e. SDMA_BD_MASK_READY is set.
+ * Non-BD tasks do not use this
+ * function.
+ *
+ * The task should not be running. Call TaskStop() first.
+ *
+ * \em Note: Partially transmitted buffers are up to the user to handle.
+ *
+ * Using this function on non-buffer descriptor tasks will produce
+ * unpredictable results.
+ */
+BDIdx TaskBDReset(TaskId taskId)
+{
+ BDIdx i;
+ TaskBD_t *bd, *bdTab;
+
+ if (TaskRunning[taskId]) {
+ return TASK_ERR_TASK_RUNNING;
+ }
+
+ bdTab = TaskBDIdxTable[taskId].BDTablePtr;
+
+ for (i = (BDIdx)TaskBDIdxTable[taskId].numBD - 1; i >= 0; --i) {
+
+ if (TaskBDIdxTable[taskId].numPtr == 1) {
+ bd = (TaskBD_t *)&(((TaskBD1_t *)bdTab)[i]);
+ } else {
+ bd = (TaskBD_t *)&(((TaskBD2_t *)bdTab)[i]);
+ }
+
+ bd->Status = 0x0;
+ }
+
+ TaskBDIdxTable[taskId].currBDInUse = 0;
+ *TaskBDIdxTable[taskId].BDStartPtr =
+ (volatile uint32)((volatile uint32)TaskBDIdxTable[taskId].BDTablePtr
+ + MBarPhysOffsetGlobal);
+ return BDHead[taskId] = BDTail[taskId] = 0;
+}
+
+
+/*!
+ * \brief Return BestComm debug information.
+ * \param taskId Task handle passed back from a successful TaskSetup()
+ * \param paramSet TBD
+ * \returns TBD
+ *
+ * The implementation of this function is yet to be determined.
+ */
+int TaskDebug(TaskId taskId, TaskDebugParamSet_t *paramSet)
+{
+ if ((taskId < 0) || (taskId >= MAX_TASKS)) {
+ return TASK_ERR_INVALID_ARG;
+ }
+ if (paramSet == NULL) {
+ return TASK_ERR_INVALID_ARG;
+ }
+
+ return TASK_ERR_NO_ERR;
+}
diff --git a/bsps/powerpc/gen5200/bestcomm/bestcomm_glue.c b/bsps/powerpc/gen5200/bestcomm/bestcomm_glue.c
new file mode 100644
index 0000000000..9e0d946ed0
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/bestcomm_glue.c
@@ -0,0 +1,262 @@
+/*===============================================================*\
+| Project: RTEMS generic MPC5200 BSP |
++-----------------------------------------------------------------+
+| Copyright (c) 2004-2005 |
+| Embedded Brains GmbH |
+| Obere Lagerstr. 30 |
+| D-82178 Puchheim |
+| Germany |
+| rtems@embedded-brains.de |
++-----------------------------------------------------------------+
+| The license and distribution terms for this file may be |
+| found in the file LICENSE in this distribution or at |
+| |
+| http://www.rtems.org/license/LICENSE. |
+| |
++-----------------------------------------------------------------+
+| this file contains glue functions to the Freescale BestComm API |
+\*===============================================================*/
+#include <assert.h>
+#include <rtems.h>
+#include <bsp.h>
+#include <bsp/irq.h>
+#include <bsp/mpc5200.h>
+#include <bsp/bestcomm/include/ppctypes.h> /* uint32, et. al. */
+#include <bsp/bestcomm/dma_image.h>
+#include <bsp/bestcomm/task_api/bestcomm_cntrl.h>
+#include <bsp/bestcomm/bestcomm_api.h>
+#include <bsp/bestcomm/bestcomm_glue.h>
+#include <bsp/bestcomm/include/mgt5200/sdma.h>
+#include <rtems/score/heapimpl.h>
+
+extern const uint32 taskTableBytes;
+
+static Heap_Control bestcomm_heap;
+
+/*=========================================================================*\
+| Function: |
+\*-------------------------------------------------------------------------*/
+void bestcomm_glue_irq_enable
+(
+/*-------------------------------------------------------------------------*\
+| Purpose: |
+| enable interrupt for given task number |
++---------------------------------------------------------------------------+
+| Input Parameters: |
+\*-------------------------------------------------------------------------*/
+ int bestcomm_taskno /* task number to enable */
+)
+/*-------------------------------------------------------------------------*\
+| Return Value: |
+| none |
+\*=========================================================================*/
+{
+ if (0 != ((1UL<<bestcomm_taskno) & SDMA_INT_BIT_IMPL)) {
+ /*
+ * valid task number
+ * enable interrupt in bestcomm mask
+ */
+ SDMA_INT_ENABLE(&mpc5200.sdma.IntMask,bestcomm_taskno);
+ }
+}
+
+/*=========================================================================*\
+| Function: |
+\*-------------------------------------------------------------------------*/
+void bestcomm_glue_irq_disable
+(
+/*-------------------------------------------------------------------------*\
+| Purpose: |
+| disable interrupt for given task number |
++---------------------------------------------------------------------------+
+| Input Parameters: |
+\*-------------------------------------------------------------------------*/
+ int bestcomm_taskno /* task number to disable */
+)
+/*-------------------------------------------------------------------------*\
+| Return Value: |
+| none |
+\*=========================================================================*/
+{
+ if (0 != ((1UL<<bestcomm_taskno) & SDMA_INT_BIT_IMPL)) {
+ /*
+ * valid task number
+ * disable interrupt in bestcomm mask
+ */
+ SDMA_INT_DISABLE(&mpc5200.sdma.IntMask,bestcomm_taskno);
+ }
+}
+
+typedef struct {
+ rtems_interrupt_handler handler;
+ void *arg;
+} bestcomm_glue_irq_handlers_t;
+
+static bestcomm_glue_irq_handlers_t bestcomm_glue_irq_handlers[32];
+
+/*=========================================================================*\
+| Function: |
+\*-------------------------------------------------------------------------*/
+void bestcomm_glue_irq_install
+(
+/*-------------------------------------------------------------------------*\
+| Purpose: |
+| install given function as bestcomm interrupt handler |
++---------------------------------------------------------------------------+
+| Input Parameters: |
+\*-------------------------------------------------------------------------*/
+ int bestcomm_taskno, /* task number for handler */
+ rtems_interrupt_handler handler, /* function to call */
+ void *arg
+)
+/*-------------------------------------------------------------------------*\
+| Return Value: |
+| none |
+\*=========================================================================*/
+{
+ if (0 != ((1UL<<bestcomm_taskno) & SDMA_INT_BIT_IMPL)) {
+ /*
+ * valid task number
+ * install handler
+ */
+ bestcomm_glue_irq_handlers[bestcomm_taskno].handler = handler;
+ bestcomm_glue_irq_handlers[bestcomm_taskno].arg = arg;
+ }
+}
+
+/*=========================================================================*\
+| Function: |
+\*-------------------------------------------------------------------------*/
+static void bestcomm_glue_irq_dispatcher
+(
+/*-------------------------------------------------------------------------*\
+| Purpose: |
+| general bestcomm interrupt handler/dispatcher |
++---------------------------------------------------------------------------+
+| Input Parameters: |
+\*-------------------------------------------------------------------------*/
+ void *arg /* irq specific handle (not used) */
+)
+/*-------------------------------------------------------------------------*\
+| Return Value: |
+| none |
+\*=========================================================================*/
+{
+ uint32_t pending;
+ int curr_taskno;
+
+ pending = mpc5200.sdma.IntPend & ~mpc5200.sdma.IntMask;
+ curr_taskno = 0;
+ while (pending != 0) {
+ if ((pending & (1UL<<curr_taskno)) != 0) {
+ if (bestcomm_glue_irq_handlers[curr_taskno].handler != NULL) {
+ /*
+ * call proper handler
+ */
+ bestcomm_glue_irq_handlers[curr_taskno].handler
+ (bestcomm_glue_irq_handlers[curr_taskno].arg);
+ }
+ else {
+ /*
+ * This should never happen. we have a pending IRQ but no handler
+ * let's clear this pending bit
+ */
+ SDMA_CLEAR_IEVENT(&mpc5200.sdma.IntPend,curr_taskno);
+ }
+ /*
+ * clear this bit in our pending copy
+ * and go to next bit
+ */
+ pending &= ~(1<<curr_taskno);
+ }
+ curr_taskno++;
+ }
+}
+
+static bool bestcomm_glue_is_initialized = false;
+/*=========================================================================*\
+| Function: |
+\*-------------------------------------------------------------------------*/
+void bestcomm_glue_init
+(
+/*-------------------------------------------------------------------------*\
+| Purpose: |
+| initialize the bestcomm module (if not yet done): |
+| - load code |
+| - initialize registers |
+| - initialize bus arbiter |
+| - initialize interrupt control |
++---------------------------------------------------------------------------+
+| Input Parameters: |
+\*-------------------------------------------------------------------------*/
+ void /* none */
+)
+/*-------------------------------------------------------------------------*\
+| Return Value: |
+| none |
+\*=========================================================================*/
+{
+ rtems_status_code sc = RTEMS_SUCCESSFUL;
+ uintptr_t heap_status = 0;
+
+ if (!bestcomm_glue_is_initialized) {
+ bestcomm_glue_is_initialized = true;
+
+ heap_status = _Heap_Initialize(
+ &bestcomm_heap,
+ (char *) &mpc5200.sram [0] + taskTableBytes,
+ sizeof(mpc5200.sram) - taskTableBytes,
+ 4
+ );
+ assert(heap_status != 0);
+
+ /*
+ * Set task bar to begin of sram
+ */
+ mpc5200.sdma.taskBar = (uint32_t)(&(mpc5200.sram[0]));
+
+#if 0
+ /*
+ * Set core and BestComm XLB priority the same.
+ */
+ mpc5200.priority_enable |= 0x5;
+ mpc5200.priority = 0x77777171;
+#endif
+
+ /*
+ * Turn off COMM bus prefetch. This affects all data movements on
+ * the COMM bus. (Yes, _PE -- prefetch enable -- should probably be
+ * named _PD.)
+ */
+ mpc5200.sdma.PtdCntrl |= SDMA_PTDCNTRL_PE;
+
+ TasksInitAPI((uint8*)&mpc5200);
+
+ TasksLoadImage( (void *)&(mpc5200.sdma.taskBar));
+
+ /*
+ * initialize interrupt dispatcher
+ */
+ sc = rtems_interrupt_handler_install(
+ BSP_SIU_IRQ_SMARTCOMM,
+ "BESTCOMM",
+ RTEMS_INTERRUPT_UNIQUE,
+ bestcomm_glue_irq_dispatcher,
+ NULL
+ );
+ assert(sc == RTEMS_SUCCESSFUL);
+ }
+}
+
+void *bestcomm_malloc(size_t size)
+{
+ return _Heap_Allocate(&bestcomm_heap, size);
+}
+
+void bestcomm_free(void *ptr)
+{
+ if (ptr != NULL) {
+ bool ok = _Heap_Free(&bestcomm_heap, ptr);
+ assert(ok);
+ }
+}
diff --git a/bsps/powerpc/gen5200/bestcomm/dma_image.c b/bsps/powerpc/gen5200/bestcomm/dma_image.c
new file mode 100644
index 0000000000..3ca468b800
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/dma_image.c
@@ -0,0 +1,624 @@
+/******************************************************************************
+*
+* Copyright (c) 2004 Freescale Semiconductor, Inc.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+******************************************************************************/
+
+#include <bsp/bestcomm/dma_image.h>
+
+TASK_PCI_TX_api_t TASK_PCI_TX_storage;
+TASK_PCI_TX_api_t *TASK_PCI_TX_api=&TASK_PCI_TX_storage;
+
+TASK_PCI_RX_api_t TASK_PCI_RX_storage;
+TASK_PCI_RX_api_t *TASK_PCI_RX_api=&TASK_PCI_RX_storage;
+
+TASK_FEC_TX_api_t TASK_FEC_TX_storage;
+TASK_FEC_TX_api_t *TASK_FEC_TX_api=&TASK_FEC_TX_storage;
+
+TASK_FEC_RX_api_t TASK_FEC_RX_storage;
+TASK_FEC_RX_api_t *TASK_FEC_RX_api=&TASK_FEC_RX_storage;
+
+TASK_LPC_api_t TASK_LPC_storage;
+TASK_LPC_api_t *TASK_LPC_api=&TASK_LPC_storage;
+
+TASK_ATA_api_t TASK_ATA_storage;
+TASK_ATA_api_t *TASK_ATA_api=&TASK_ATA_storage;
+
+TASK_CRC16_DP_0_api_t TASK_CRC16_DP_0_storage;
+TASK_CRC16_DP_0_api_t *TASK_CRC16_DP_0_api=&TASK_CRC16_DP_0_storage;
+
+TASK_CRC16_DP_1_api_t TASK_CRC16_DP_1_storage;
+TASK_CRC16_DP_1_api_t *TASK_CRC16_DP_1_api=&TASK_CRC16_DP_1_storage;
+
+TASK_GEN_DP_0_api_t TASK_GEN_DP_0_storage;
+TASK_GEN_DP_0_api_t *TASK_GEN_DP_0_api=&TASK_GEN_DP_0_storage;
+
+TASK_GEN_DP_1_api_t TASK_GEN_DP_1_storage;
+TASK_GEN_DP_1_api_t *TASK_GEN_DP_1_api=&TASK_GEN_DP_1_storage;
+
+TASK_GEN_DP_2_api_t TASK_GEN_DP_2_storage;
+TASK_GEN_DP_2_api_t *TASK_GEN_DP_2_api=&TASK_GEN_DP_2_storage;
+
+TASK_GEN_DP_3_api_t TASK_GEN_DP_3_storage;
+TASK_GEN_DP_3_api_t *TASK_GEN_DP_3_api=&TASK_GEN_DP_3_storage;
+
+TASK_GEN_TX_BD_api_t TASK_GEN_TX_BD_storage;
+TASK_GEN_TX_BD_api_t *TASK_GEN_TX_BD_api=&TASK_GEN_TX_BD_storage;
+
+TASK_GEN_RX_BD_api_t TASK_GEN_RX_BD_storage;
+TASK_GEN_RX_BD_api_t *TASK_GEN_RX_BD_api=&TASK_GEN_RX_BD_storage;
+
+TASK_GEN_DP_BD_0_api_t TASK_GEN_DP_BD_0_storage;
+TASK_GEN_DP_BD_0_api_t *TASK_GEN_DP_BD_0_api=&TASK_GEN_DP_BD_0_storage;
+
+TASK_GEN_DP_BD_1_api_t TASK_GEN_DP_BD_1_storage;
+TASK_GEN_DP_BD_1_api_t *TASK_GEN_DP_BD_1_api=&TASK_GEN_DP_BD_1_storage;
+
+
+
+
+void init_dma_image_TASK_PCI_TX(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_PCI_TX_api->TaskNum = 0;
+ TASK_PCI_TX_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0000UL);
+ TASK_PCI_TX_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0004UL);
+ TASK_PCI_TX_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0008UL);
+ TASK_PCI_TX_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x000cUL);
+ TASK_PCI_TX_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0018UL);
+ TASK_PCI_TX_api->TaskPragma = (volatile uint8 *)(TASK_PCI_TX_api->PtrFDT)+3;
+ TASK_PCI_TX_api->NumDRD = 7;
+ TASK_PCI_TX_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x0008UL - vMemOffset);
+ TASK_PCI_TX_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_PCI_TX_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_PCI_TX_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x0020UL - vMemOffset);
+ TASK_PCI_TX_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_PCI_TX_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_PCI_TX_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrStartTDT) + 0x0038UL - vMemOffset);
+ TASK_PCI_TX_api->NumVar = 12;
+ TASK_PCI_TX_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrVarTab) - vMemOffset);
+ TASK_PCI_TX_api->NumInc = 5;
+ TASK_PCI_TX_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_TX_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_PCI_TX_api->AddrDstFIFO = &(TASK_PCI_TX_api->var[0]);
+ TASK_PCI_TX_api->IncrBytes = (volatile sint16 *)&(TASK_PCI_TX_api->inc[0])+1;
+ TASK_PCI_TX_api->AddrPktSizeReg = &(TASK_PCI_TX_api->var[1]);
+ TASK_PCI_TX_api->IncrSrc = (volatile sint16 *)&(TASK_PCI_TX_api->inc[1])+1;
+ TASK_PCI_TX_api->AddrSCStatusReg = &(TASK_PCI_TX_api->var[2]);
+ TASK_PCI_TX_api->Bytes = &(TASK_PCI_TX_api->var[3]);
+ TASK_PCI_TX_api->IterExtra = &(TASK_PCI_TX_api->var[4]);
+ TASK_PCI_TX_api->StartAddrSrc = &(TASK_PCI_TX_api->var[7]);
+}
+
+
+void init_dma_image_TASK_PCI_RX(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_PCI_RX_api->TaskNum = 1;
+ TASK_PCI_RX_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0020UL);
+ TASK_PCI_RX_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0024UL);
+ TASK_PCI_RX_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0028UL);
+ TASK_PCI_RX_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x002cUL);
+ TASK_PCI_RX_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0038UL);
+ TASK_PCI_RX_api->TaskPragma = (volatile uint8 *)(TASK_PCI_RX_api->PtrFDT)+3;
+ TASK_PCI_RX_api->NumDRD = 5;
+ TASK_PCI_RX_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrStartTDT) + 0x0008UL - vMemOffset);
+ TASK_PCI_RX_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_PCI_RX_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_PCI_RX_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrStartTDT) + 0x0020UL - vMemOffset);
+ TASK_PCI_RX_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_PCI_RX_api->NumVar = 9;
+ TASK_PCI_RX_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrVarTab) - vMemOffset);
+ TASK_PCI_RX_api->NumInc = 4;
+ TASK_PCI_RX_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_PCI_RX_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_PCI_RX_api->AddrPktSizeReg = &(TASK_PCI_RX_api->var[0]);
+ TASK_PCI_RX_api->IncrBytes = (volatile sint16 *)&(TASK_PCI_RX_api->inc[0])+1;
+ TASK_PCI_RX_api->AddrSrcFIFO = &(TASK_PCI_RX_api->var[1]);
+ TASK_PCI_RX_api->IncrDst = (volatile sint16 *)&(TASK_PCI_RX_api->inc[1])+1;
+ TASK_PCI_RX_api->Bytes = &(TASK_PCI_RX_api->var[2]);
+ TASK_PCI_RX_api->IterExtra = &(TASK_PCI_RX_api->var[3]);
+ TASK_PCI_RX_api->StartAddrDst = &(TASK_PCI_RX_api->var[6]);
+}
+
+
+void init_dma_image_TASK_FEC_TX(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_FEC_TX_api->TaskNum = 2;
+ TASK_FEC_TX_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0040UL);
+ TASK_FEC_TX_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0044UL);
+ TASK_FEC_TX_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0048UL);
+ TASK_FEC_TX_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x004cUL);
+ TASK_FEC_TX_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0058UL);
+ TASK_FEC_TX_api->TaskPragma = (volatile uint8 *)(TASK_FEC_TX_api->PtrFDT)+3;
+ TASK_FEC_TX_api->NumDRD = 22;
+ TASK_FEC_TX_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0008UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x001cUL - vMemOffset);
+ TASK_FEC_TX_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0020UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_FEC_TX_api->DRD[7] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0030UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[8] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0034UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[9] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0038UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[10] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0044UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[11] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0048UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[12] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x004cUL - vMemOffset);
+ TASK_FEC_TX_api->DRD[13] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0054UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[14] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0060UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[15] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0064UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[16] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0068UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[17] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x006cUL - vMemOffset);
+ TASK_FEC_TX_api->DRD[18] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0074UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[19] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x007cUL - vMemOffset);
+ TASK_FEC_TX_api->DRD[20] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0084UL - vMemOffset);
+ TASK_FEC_TX_api->DRD[21] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrStartTDT) + 0x0088UL - vMemOffset);
+ TASK_FEC_TX_api->NumVar = 20;
+ TASK_FEC_TX_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrVarTab) - vMemOffset);
+ TASK_FEC_TX_api->NumInc = 7;
+ TASK_FEC_TX_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_TX_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_FEC_TX_api->AddrDRD = &(TASK_FEC_TX_api->var[0]);
+ TASK_FEC_TX_api->AddrDRDIdx = 19;
+ *TASK_FEC_TX_api->AddrDRD = (volatile uint32)(TASK_FEC_TX_api->DRD[19]);
+ TASK_FEC_TX_api->IncrBytes = (volatile sint16 *)&(TASK_FEC_TX_api->inc[0])+1;
+ TASK_FEC_TX_api->AddrDstFIFO = &(TASK_FEC_TX_api->var[1]);
+ TASK_FEC_TX_api->IncrSrc = (volatile sint16 *)&(TASK_FEC_TX_api->inc[1])+1;
+ TASK_FEC_TX_api->AddrEnable = &(TASK_FEC_TX_api->var[2]);
+ TASK_FEC_TX_api->IncrSrcMA = (volatile sint16 *)&(TASK_FEC_TX_api->inc[2])+1;
+ TASK_FEC_TX_api->BDTableBase = &(TASK_FEC_TX_api->var[3]);
+ TASK_FEC_TX_api->BDTableLast = &(TASK_FEC_TX_api->var[4]);
+ TASK_FEC_TX_api->BDTableStart = &(TASK_FEC_TX_api->var[5]);
+ TASK_FEC_TX_api->Bytes = &(TASK_FEC_TX_api->var[6]);
+}
+
+
+void init_dma_image_TASK_FEC_RX(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_FEC_RX_api->TaskNum = 3;
+ TASK_FEC_RX_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0060UL);
+ TASK_FEC_RX_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0064UL);
+ TASK_FEC_RX_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0068UL);
+ TASK_FEC_RX_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x006cUL);
+ TASK_FEC_RX_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0078UL);
+ TASK_FEC_RX_api->TaskPragma = (volatile uint8 *)(TASK_FEC_RX_api->PtrFDT)+3;
+ TASK_FEC_RX_api->NumDRD = 13;
+ TASK_FEC_RX_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_FEC_RX_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0020UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_FEC_RX_api->DRD[7] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0038UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[8] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x003cUL - vMemOffset);
+ TASK_FEC_RX_api->DRD[9] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0040UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[10] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0048UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[11] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0050UL - vMemOffset);
+ TASK_FEC_RX_api->DRD[12] = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrStartTDT) + 0x0058UL - vMemOffset);
+ TASK_FEC_RX_api->NumVar = 15;
+ TASK_FEC_RX_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrVarTab) - vMemOffset);
+ TASK_FEC_RX_api->NumInc = 7;
+ TASK_FEC_RX_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_FEC_RX_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_FEC_RX_api->AddrEnable = &(TASK_FEC_RX_api->var[0]);
+ TASK_FEC_RX_api->IncrBytes = (volatile sint16 *)&(TASK_FEC_RX_api->inc[0])+1;
+ TASK_FEC_RX_api->AddrSrcFIFO = &(TASK_FEC_RX_api->var[1]);
+ TASK_FEC_RX_api->IncrDst = (volatile sint16 *)&(TASK_FEC_RX_api->inc[1])+1;
+ TASK_FEC_RX_api->BDTableBase = &(TASK_FEC_RX_api->var[2]);
+ TASK_FEC_RX_api->IncrDstMA = (volatile sint16 *)&(TASK_FEC_RX_api->inc[2])+1;
+ TASK_FEC_RX_api->BDTableLast = &(TASK_FEC_RX_api->var[3]);
+ TASK_FEC_RX_api->BDTableStart = &(TASK_FEC_RX_api->var[4]);
+ TASK_FEC_RX_api->Bytes = &(TASK_FEC_RX_api->var[5]);
+}
+
+
+void init_dma_image_TASK_LPC(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_LPC_api->TaskNum = 4;
+ TASK_LPC_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0080UL);
+ TASK_LPC_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0084UL);
+ TASK_LPC_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0088UL);
+ TASK_LPC_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x008cUL);
+ TASK_LPC_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0098UL);
+ TASK_LPC_api->TaskPragma = (volatile uint8 *)(TASK_LPC_api->PtrFDT)+3;
+ TASK_LPC_api->NumDRD = 4;
+ TASK_LPC_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_LPC_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_LPC_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_LPC_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_LPC_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_LPC_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_LPC_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_LPC_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_LPC_api->NumVar = 9;
+ TASK_LPC_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_LPC_api->PtrVarTab) - vMemOffset);
+ TASK_LPC_api->NumInc = 8;
+ TASK_LPC_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_LPC_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_LPC_api->Bytes = &(TASK_LPC_api->var[0]);
+ TASK_LPC_api->IncrBytes = (volatile sint16 *)&(TASK_LPC_api->inc[0])+1;
+ TASK_LPC_api->IterExtra = &(TASK_LPC_api->var[1]);
+ TASK_LPC_api->IncrDst = (volatile sint16 *)&(TASK_LPC_api->inc[1])+1;
+ TASK_LPC_api->IncrDstMA = (volatile sint16 *)&(TASK_LPC_api->inc[2])+1;
+ TASK_LPC_api->IncrSrc = (volatile sint16 *)&(TASK_LPC_api->inc[3])+1;
+ TASK_LPC_api->StartAddrDst = &(TASK_LPC_api->var[4]);
+ TASK_LPC_api->IncrSrcMA = (volatile sint16 *)&(TASK_LPC_api->inc[4])+1;
+ TASK_LPC_api->StartAddrSrc = &(TASK_LPC_api->var[5]);
+}
+
+
+void init_dma_image_TASK_ATA(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_ATA_api->TaskNum = 5;
+ TASK_ATA_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x00a0UL);
+ TASK_ATA_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x00a4UL);
+ TASK_ATA_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x00a8UL);
+ TASK_ATA_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x00acUL);
+ TASK_ATA_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x00b8UL);
+ TASK_ATA_api->TaskPragma = (volatile uint8 *)(TASK_ATA_api->PtrFDT)+3;
+ TASK_ATA_api->NumDRD = 7;
+ TASK_ATA_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_ATA_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_ATA_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_ATA_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_ATA_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_ATA_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_ATA_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrStartTDT) + 0x0030UL - vMemOffset);
+ TASK_ATA_api->NumVar = 12;
+ TASK_ATA_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrVarTab) - vMemOffset);
+ TASK_ATA_api->NumInc = 6;
+ TASK_ATA_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_ATA_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_ATA_api->AddrEnable = &(TASK_ATA_api->var[0]);
+ TASK_ATA_api->IncrBytes = (volatile sint16 *)&(TASK_ATA_api->inc[0])+1;
+ TASK_ATA_api->BDTableBase = &(TASK_ATA_api->var[1]);
+ TASK_ATA_api->IncrDst = (volatile sint16 *)&(TASK_ATA_api->inc[1])+1;
+ TASK_ATA_api->BDTableLast = &(TASK_ATA_api->var[2]);
+ TASK_ATA_api->IncrSrc = (volatile sint16 *)&(TASK_ATA_api->inc[2])+1;
+ TASK_ATA_api->BDTableStart = &(TASK_ATA_api->var[3]);
+ TASK_ATA_api->Bytes = &(TASK_ATA_api->var[4]);
+}
+
+
+void init_dma_image_TASK_CRC16_DP_0(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_CRC16_DP_0_api->TaskNum = 6;
+ TASK_CRC16_DP_0_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x00c0UL);
+ TASK_CRC16_DP_0_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x00c4UL);
+ TASK_CRC16_DP_0_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x00c8UL);
+ TASK_CRC16_DP_0_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x00ccUL);
+ TASK_CRC16_DP_0_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x00d8UL);
+ TASK_CRC16_DP_0_api->TaskPragma = (volatile uint8 *)(TASK_CRC16_DP_0_api->PtrFDT)+3;
+ TASK_CRC16_DP_0_api->NumDRD = 9;
+ TASK_CRC16_DP_0_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0008UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0028UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0034UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[7] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0038UL - vMemOffset);
+ TASK_CRC16_DP_0_api->DRD[8] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrStartTDT) + 0x0040UL - vMemOffset);
+ TASK_CRC16_DP_0_api->NumVar = 10;
+ TASK_CRC16_DP_0_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrVarTab) - vMemOffset);
+ TASK_CRC16_DP_0_api->NumInc = 8;
+ TASK_CRC16_DP_0_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_0_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_CRC16_DP_0_api->Bytes = &(TASK_CRC16_DP_0_api->var[0]);
+ TASK_CRC16_DP_0_api->IncrBytes = (volatile sint16 *)&(TASK_CRC16_DP_0_api->inc[0])+1;
+ TASK_CRC16_DP_0_api->IterExtra = &(TASK_CRC16_DP_0_api->var[1]);
+ TASK_CRC16_DP_0_api->IncrDst = (volatile sint16 *)&(TASK_CRC16_DP_0_api->inc[1])+1;
+ TASK_CRC16_DP_0_api->IncrDstMA = (volatile sint16 *)&(TASK_CRC16_DP_0_api->inc[2])+1;
+ TASK_CRC16_DP_0_api->IncrSrc = (volatile sint16 *)&(TASK_CRC16_DP_0_api->inc[3])+1;
+ TASK_CRC16_DP_0_api->StartAddrDst = &(TASK_CRC16_DP_0_api->var[4]);
+ TASK_CRC16_DP_0_api->IncrSrcMA = (volatile sint16 *)&(TASK_CRC16_DP_0_api->inc[4])+1;
+ TASK_CRC16_DP_0_api->StartAddrSrc = &(TASK_CRC16_DP_0_api->var[5]);
+}
+
+
+void init_dma_image_TASK_CRC16_DP_1(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_CRC16_DP_1_api->TaskNum = 7;
+ TASK_CRC16_DP_1_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x00e0UL);
+ TASK_CRC16_DP_1_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x00e4UL);
+ TASK_CRC16_DP_1_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x00e8UL);
+ TASK_CRC16_DP_1_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x00ecUL);
+ TASK_CRC16_DP_1_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x00f8UL);
+ TASK_CRC16_DP_1_api->TaskPragma = (volatile uint8 *)(TASK_CRC16_DP_1_api->PtrFDT)+3;
+ TASK_CRC16_DP_1_api->NumDRD = 9;
+ TASK_CRC16_DP_1_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0008UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0028UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0034UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[7] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0038UL - vMemOffset);
+ TASK_CRC16_DP_1_api->DRD[8] = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrStartTDT) + 0x0040UL - vMemOffset);
+ TASK_CRC16_DP_1_api->NumVar = 10;
+ TASK_CRC16_DP_1_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrVarTab) - vMemOffset);
+ TASK_CRC16_DP_1_api->NumInc = 8;
+ TASK_CRC16_DP_1_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_CRC16_DP_1_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_CRC16_DP_1_api->Bytes = &(TASK_CRC16_DP_1_api->var[0]);
+ TASK_CRC16_DP_1_api->IncrBytes = (volatile sint16 *)&(TASK_CRC16_DP_1_api->inc[0])+1;
+ TASK_CRC16_DP_1_api->IterExtra = &(TASK_CRC16_DP_1_api->var[1]);
+ TASK_CRC16_DP_1_api->IncrDst = (volatile sint16 *)&(TASK_CRC16_DP_1_api->inc[1])+1;
+ TASK_CRC16_DP_1_api->IncrDstMA = (volatile sint16 *)&(TASK_CRC16_DP_1_api->inc[2])+1;
+ TASK_CRC16_DP_1_api->IncrSrc = (volatile sint16 *)&(TASK_CRC16_DP_1_api->inc[3])+1;
+ TASK_CRC16_DP_1_api->StartAddrDst = &(TASK_CRC16_DP_1_api->var[4]);
+ TASK_CRC16_DP_1_api->IncrSrcMA = (volatile sint16 *)&(TASK_CRC16_DP_1_api->inc[4])+1;
+ TASK_CRC16_DP_1_api->StartAddrSrc = &(TASK_CRC16_DP_1_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_DP_0(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_DP_0_api->TaskNum = 8;
+ TASK_GEN_DP_0_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0100UL);
+ TASK_GEN_DP_0_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0104UL);
+ TASK_GEN_DP_0_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0108UL);
+ TASK_GEN_DP_0_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x010cUL);
+ TASK_GEN_DP_0_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0118UL);
+ TASK_GEN_DP_0_api->TaskPragma = (volatile uint8 *)(TASK_GEN_DP_0_api->PtrFDT)+3;
+ TASK_GEN_DP_0_api->NumDRD = 4;
+ TASK_GEN_DP_0_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_DP_0_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_GEN_DP_0_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_GEN_DP_0_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_DP_0_api->NumVar = 9;
+ TASK_GEN_DP_0_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_DP_0_api->NumInc = 8;
+ TASK_GEN_DP_0_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_0_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_DP_0_api->Bytes = &(TASK_GEN_DP_0_api->var[0]);
+ TASK_GEN_DP_0_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[0])+1;
+ TASK_GEN_DP_0_api->IterExtra = &(TASK_GEN_DP_0_api->var[1]);
+ TASK_GEN_DP_0_api->IncrDst = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[1])+1;
+ TASK_GEN_DP_0_api->IncrDstMA = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[2])+1;
+ TASK_GEN_DP_0_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[3])+1;
+ TASK_GEN_DP_0_api->StartAddrDst = &(TASK_GEN_DP_0_api->var[4]);
+ TASK_GEN_DP_0_api->IncrSrcMA = (volatile sint16 *)&(TASK_GEN_DP_0_api->inc[4])+1;
+ TASK_GEN_DP_0_api->StartAddrSrc = &(TASK_GEN_DP_0_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_DP_1(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_DP_1_api->TaskNum = 9;
+ TASK_GEN_DP_1_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0120UL);
+ TASK_GEN_DP_1_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0124UL);
+ TASK_GEN_DP_1_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0128UL);
+ TASK_GEN_DP_1_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x012cUL);
+ TASK_GEN_DP_1_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0138UL);
+ TASK_GEN_DP_1_api->TaskPragma = (volatile uint8 *)(TASK_GEN_DP_1_api->PtrFDT)+3;
+ TASK_GEN_DP_1_api->NumDRD = 4;
+ TASK_GEN_DP_1_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_DP_1_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_GEN_DP_1_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_GEN_DP_1_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_DP_1_api->NumVar = 9;
+ TASK_GEN_DP_1_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_DP_1_api->NumInc = 8;
+ TASK_GEN_DP_1_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_1_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_DP_1_api->Bytes = &(TASK_GEN_DP_1_api->var[0]);
+ TASK_GEN_DP_1_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[0])+1;
+ TASK_GEN_DP_1_api->IterExtra = &(TASK_GEN_DP_1_api->var[1]);
+ TASK_GEN_DP_1_api->IncrDst = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[1])+1;
+ TASK_GEN_DP_1_api->IncrDstMA = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[2])+1;
+ TASK_GEN_DP_1_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[3])+1;
+ TASK_GEN_DP_1_api->StartAddrDst = &(TASK_GEN_DP_1_api->var[4]);
+ TASK_GEN_DP_1_api->IncrSrcMA = (volatile sint16 *)&(TASK_GEN_DP_1_api->inc[4])+1;
+ TASK_GEN_DP_1_api->StartAddrSrc = &(TASK_GEN_DP_1_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_DP_2(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_DP_2_api->TaskNum = 10;
+ TASK_GEN_DP_2_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0140UL);
+ TASK_GEN_DP_2_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0144UL);
+ TASK_GEN_DP_2_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0148UL);
+ TASK_GEN_DP_2_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x014cUL);
+ TASK_GEN_DP_2_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0158UL);
+ TASK_GEN_DP_2_api->TaskPragma = (volatile uint8 *)(TASK_GEN_DP_2_api->PtrFDT)+3;
+ TASK_GEN_DP_2_api->NumDRD = 4;
+ TASK_GEN_DP_2_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_DP_2_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_GEN_DP_2_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_GEN_DP_2_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_DP_2_api->NumVar = 9;
+ TASK_GEN_DP_2_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_DP_2_api->NumInc = 8;
+ TASK_GEN_DP_2_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_2_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_DP_2_api->Bytes = &(TASK_GEN_DP_2_api->var[0]);
+ TASK_GEN_DP_2_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[0])+1;
+ TASK_GEN_DP_2_api->IterExtra = &(TASK_GEN_DP_2_api->var[1]);
+ TASK_GEN_DP_2_api->IncrDst = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[1])+1;
+ TASK_GEN_DP_2_api->IncrDstMA = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[2])+1;
+ TASK_GEN_DP_2_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[3])+1;
+ TASK_GEN_DP_2_api->StartAddrDst = &(TASK_GEN_DP_2_api->var[4]);
+ TASK_GEN_DP_2_api->IncrSrcMA = (volatile sint16 *)&(TASK_GEN_DP_2_api->inc[4])+1;
+ TASK_GEN_DP_2_api->StartAddrSrc = &(TASK_GEN_DP_2_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_DP_3(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_DP_3_api->TaskNum = 11;
+ TASK_GEN_DP_3_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0160UL);
+ TASK_GEN_DP_3_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0164UL);
+ TASK_GEN_DP_3_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0168UL);
+ TASK_GEN_DP_3_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x016cUL);
+ TASK_GEN_DP_3_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0178UL);
+ TASK_GEN_DP_3_api->TaskPragma = (volatile uint8 *)(TASK_GEN_DP_3_api->PtrFDT)+3;
+ TASK_GEN_DP_3_api->NumDRD = 4;
+ TASK_GEN_DP_3_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_3_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_DP_3_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_3_api->PtrStartTDT) + 0x0018UL - vMemOffset);
+ TASK_GEN_DP_3_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_3_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_GEN_DP_3_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_3_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_DP_3_api->NumVar = 9;
+ TASK_GEN_DP_3_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_3_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_DP_3_api->NumInc = 8;
+ TASK_GEN_DP_3_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_3_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_DP_3_api->Bytes = &(TASK_GEN_DP_3_api->var[0]);
+ TASK_GEN_DP_3_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_DP_3_api->inc[0])+1;
+ TASK_GEN_DP_3_api->IterExtra = &(TASK_GEN_DP_3_api->var[1]);
+ TASK_GEN_DP_3_api->IncrDst = (volatile sint16 *)&(TASK_GEN_DP_3_api->inc[1])+1;
+ TASK_GEN_DP_3_api->IncrDstMA = (volatile sint16 *)&(TASK_GEN_DP_3_api->inc[2])+1;
+ TASK_GEN_DP_3_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_DP_3_api->inc[3])+1;
+ TASK_GEN_DP_3_api->StartAddrDst = &(TASK_GEN_DP_3_api->var[4]);
+ TASK_GEN_DP_3_api->IncrSrcMA = (volatile sint16 *)&(TASK_GEN_DP_3_api->inc[4])+1;
+ TASK_GEN_DP_3_api->StartAddrSrc = &(TASK_GEN_DP_3_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_TX_BD(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_TX_BD_api->TaskNum = 12;
+ TASK_GEN_TX_BD_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x0180UL);
+ TASK_GEN_TX_BD_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x0184UL);
+ TASK_GEN_TX_BD_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x0188UL);
+ TASK_GEN_TX_BD_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x018cUL);
+ TASK_GEN_TX_BD_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x0198UL);
+ TASK_GEN_TX_BD_api->TaskPragma = (volatile uint8 *)(TASK_GEN_TX_BD_api->PtrFDT)+3;
+ TASK_GEN_TX_BD_api->NumDRD = 8;
+ TASK_GEN_TX_BD_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0020UL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0028UL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0030UL - vMemOffset);
+ TASK_GEN_TX_BD_api->DRD[7] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrStartTDT) + 0x0034UL - vMemOffset);
+ TASK_GEN_TX_BD_api->NumVar = 13;
+ TASK_GEN_TX_BD_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_TX_BD_api->NumInc = 7;
+ TASK_GEN_TX_BD_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_TX_BD_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_TX_BD_api->AddrDstFIFO = &(TASK_GEN_TX_BD_api->var[0]);
+ TASK_GEN_TX_BD_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_TX_BD_api->inc[0])+1;
+ TASK_GEN_TX_BD_api->AddrEnable = &(TASK_GEN_TX_BD_api->var[1]);
+ TASK_GEN_TX_BD_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_TX_BD_api->inc[1])+1;
+ TASK_GEN_TX_BD_api->BDTableBase = &(TASK_GEN_TX_BD_api->var[2]);
+ TASK_GEN_TX_BD_api->IncrSrcMA = (volatile sint16 *)&(TASK_GEN_TX_BD_api->inc[2])+1;
+ TASK_GEN_TX_BD_api->BDTableLast = &(TASK_GEN_TX_BD_api->var[3]);
+ TASK_GEN_TX_BD_api->BDTableStart = &(TASK_GEN_TX_BD_api->var[4]);
+ TASK_GEN_TX_BD_api->Bytes = &(TASK_GEN_TX_BD_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_RX_BD(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_RX_BD_api->TaskNum = 13;
+ TASK_GEN_RX_BD_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x01a0UL);
+ TASK_GEN_RX_BD_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x01a4UL);
+ TASK_GEN_RX_BD_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x01a8UL);
+ TASK_GEN_RX_BD_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x01acUL);
+ TASK_GEN_RX_BD_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x01b8UL);
+ TASK_GEN_RX_BD_api->TaskPragma = (volatile uint8 *)(TASK_GEN_RX_BD_api->PtrFDT)+3;
+ TASK_GEN_RX_BD_api->NumDRD = 7;
+ TASK_GEN_RX_BD_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_GEN_RX_BD_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_RX_BD_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_GEN_RX_BD_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_GEN_RX_BD_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x0020UL - vMemOffset);
+ TASK_GEN_RX_BD_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x0028UL - vMemOffset);
+ TASK_GEN_RX_BD_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_RX_BD_api->NumVar = 12;
+ TASK_GEN_RX_BD_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_RX_BD_api->NumInc = 5;
+ TASK_GEN_RX_BD_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_RX_BD_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_RX_BD_api->AddrEnable = &(TASK_GEN_RX_BD_api->var[0]);
+ TASK_GEN_RX_BD_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_RX_BD_api->inc[0])+1;
+ TASK_GEN_RX_BD_api->AddrSrcFIFO = &(TASK_GEN_RX_BD_api->var[1]);
+ TASK_GEN_RX_BD_api->IncrDst = (volatile sint16 *)&(TASK_GEN_RX_BD_api->inc[1])+1;
+ TASK_GEN_RX_BD_api->BDTableBase = &(TASK_GEN_RX_BD_api->var[2]);
+ TASK_GEN_RX_BD_api->BDTableLast = &(TASK_GEN_RX_BD_api->var[3]);
+ TASK_GEN_RX_BD_api->BDTableStart = &(TASK_GEN_RX_BD_api->var[4]);
+ TASK_GEN_RX_BD_api->Bytes = &(TASK_GEN_RX_BD_api->var[5]);
+}
+
+
+void init_dma_image_TASK_GEN_DP_BD_0(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_DP_BD_0_api->TaskNum = 14;
+ TASK_GEN_DP_BD_0_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x01c0UL);
+ TASK_GEN_DP_BD_0_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x01c4UL);
+ TASK_GEN_DP_BD_0_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x01c8UL);
+ TASK_GEN_DP_BD_0_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x01ccUL);
+ TASK_GEN_DP_BD_0_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x01d8UL);
+ TASK_GEN_DP_BD_0_api->TaskPragma = (volatile uint8 *)(TASK_GEN_DP_BD_0_api->PtrFDT)+3;
+ TASK_GEN_DP_BD_0_api->NumDRD = 7;
+ TASK_GEN_DP_BD_0_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrStartTDT) + 0x0030UL - vMemOffset);
+ TASK_GEN_DP_BD_0_api->NumVar = 12;
+ TASK_GEN_DP_BD_0_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_DP_BD_0_api->NumInc = 6;
+ TASK_GEN_DP_BD_0_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_0_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_DP_BD_0_api->AddrEnable = &(TASK_GEN_DP_BD_0_api->var[0]);
+ TASK_GEN_DP_BD_0_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_DP_BD_0_api->inc[0])+1;
+ TASK_GEN_DP_BD_0_api->BDTableBase = &(TASK_GEN_DP_BD_0_api->var[1]);
+ TASK_GEN_DP_BD_0_api->IncrDst = (volatile sint16 *)&(TASK_GEN_DP_BD_0_api->inc[1])+1;
+ TASK_GEN_DP_BD_0_api->BDTableLast = &(TASK_GEN_DP_BD_0_api->var[2]);
+ TASK_GEN_DP_BD_0_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_DP_BD_0_api->inc[2])+1;
+ TASK_GEN_DP_BD_0_api->BDTableStart = &(TASK_GEN_DP_BD_0_api->var[3]);
+ TASK_GEN_DP_BD_0_api->Bytes = &(TASK_GEN_DP_BD_0_api->var[4]);
+}
+
+
+void init_dma_image_TASK_GEN_DP_BD_1(uint8 *taskBar, sint64 vMemOffset)
+{
+ uint8 *vMem_taskBar = (taskBar - vMemOffset);
+ TASK_GEN_DP_BD_1_api->TaskNum = 15;
+ TASK_GEN_DP_BD_1_api->PtrStartTDT = (volatile uint32 *)(vMem_taskBar + 0x01e0UL);
+ TASK_GEN_DP_BD_1_api->PtrEndTDT = (volatile uint32 *)(vMem_taskBar + 0x01e4UL);
+ TASK_GEN_DP_BD_1_api->PtrVarTab = (volatile uint32 *)(vMem_taskBar + 0x01e8UL);
+ TASK_GEN_DP_BD_1_api->PtrFDT = (volatile uint32 *)(vMem_taskBar + 0x01ecUL);
+ TASK_GEN_DP_BD_1_api->PtrCSave = (volatile uint32 *)(vMem_taskBar + 0x01f8UL);
+ TASK_GEN_DP_BD_1_api->TaskPragma = (volatile uint8 *)(TASK_GEN_DP_BD_1_api->PtrFDT)+3;
+ TASK_GEN_DP_BD_1_api->NumDRD = 7;
+ TASK_GEN_DP_BD_1_api->DRD[0] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x0004UL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->DRD[1] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x000cUL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->DRD[2] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x0010UL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->DRD[3] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x0014UL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->DRD[4] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x0024UL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->DRD[5] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x002cUL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->DRD[6] = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrStartTDT) + 0x0030UL - vMemOffset);
+ TASK_GEN_DP_BD_1_api->NumVar = 12;
+ TASK_GEN_DP_BD_1_api->var = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrVarTab) - vMemOffset);
+ TASK_GEN_DP_BD_1_api->NumInc = 6;
+ TASK_GEN_DP_BD_1_api->inc = (volatile uint32 *)(volatile uint32)(*(TASK_GEN_DP_BD_1_api->PtrVarTab) + (4*24) - vMemOffset);
+ TASK_GEN_DP_BD_1_api->AddrEnable = &(TASK_GEN_DP_BD_1_api->var[0]);
+ TASK_GEN_DP_BD_1_api->IncrBytes = (volatile sint16 *)&(TASK_GEN_DP_BD_1_api->inc[0])+1;
+ TASK_GEN_DP_BD_1_api->BDTableBase = &(TASK_GEN_DP_BD_1_api->var[1]);
+ TASK_GEN_DP_BD_1_api->IncrDst = (volatile sint16 *)&(TASK_GEN_DP_BD_1_api->inc[1])+1;
+ TASK_GEN_DP_BD_1_api->BDTableLast = &(TASK_GEN_DP_BD_1_api->var[2]);
+ TASK_GEN_DP_BD_1_api->IncrSrc = (volatile sint16 *)&(TASK_GEN_DP_BD_1_api->inc[2])+1;
+ TASK_GEN_DP_BD_1_api->BDTableStart = &(TASK_GEN_DP_BD_1_api->var[3]);
+ TASK_GEN_DP_BD_1_api->Bytes = &(TASK_GEN_DP_BD_1_api->var[4]);
+}
diff --git a/bsps/powerpc/gen5200/bestcomm/dma_image.reloc.c b/bsps/powerpc/gen5200/bestcomm/dma_image.reloc.c
new file mode 100644
index 0000000000..ca02c2193d
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/dma_image.reloc.c
@@ -0,0 +1,1453 @@
+/******************************************************************************
+*
+* Copyright (c) 2004 Freescale Semiconductor, Inc.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+******************************************************************************/
+
+
+#include <bsp/bestcomm/include/ppctypes.h>
+
+uint32 taskTableBytes = 0x00001500; /* Number of bytes in image */
+
+uint32 taskTableTasks = 0x00000010; /* Number of tasks in image */
+
+uint32 offsetEntry = 0x00000000; /* Offset to Entry section */
+
+uint32 taskTable[] = {
+
+/* SmartDMA image contains 5376 bytes (578 bytes unused) */
+
+/* Task0(TASK_PCI_TX): Start of Entry -> 0xf0008000 */
+0x00000200, /* Task 0 Descriptor Table */
+0x00000238,
+0x00000700, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x00001000, /* Task 0 context save space */
+0x00000000,
+/* Task1(TASK_PCI_RX): Start of Entry -> 0xf0008020 */
+0x0000023c, /* Task 0 Descriptor Table */
+0x00000268,
+0x00000780, /* Task 0 Variable Table */
+0x00000027, /* No FDT */
+0x00000000,
+0x00000000,
+0x00001050, /* Task 0 context save space */
+0x00000000,
+/* Task2(TASK_FEC_TX): Start of Entry -> 0xf0008040 */
+0x0000026c, /* Task 0 Descriptor Table */
+0x000002f8,
+0x00000800, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x000010a0, /* Task 0 context save space */
+0x00000000,
+/* Task3(TASK_FEC_RX): Start of Entry -> 0xf0008060 */
+0x000002fc, /* Task 0 Descriptor Table */
+0x00000358,
+0x00000880, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x000010f0, /* Task 0 context save space */
+0x00000000,
+/* Task4(TASK_LPC): Start of Entry -> 0xf0008080 */
+0x0000035c, /* Task 0 Descriptor Table */
+0x0000038c,
+0x00000900, /* Task 0 Variable Table */
+0x00000027, /* No FDT */
+0x00000000,
+0x00000000,
+0x00001140, /* Task 0 context save space */
+0x00000000,
+/* Task5(TASK_ATA): Start of Entry -> 0xf00080a0 */
+0x00000390, /* Task 0 Descriptor Table */
+0x000003c4,
+0x00000980, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x00001190, /* Task 0 context save space */
+0x00000000,
+/* Task6(TASK_CRC16_DP_0): Start of Entry -> 0xf00080c0 */
+0x000003c8, /* Task 0 Descriptor Table */
+0x0000040c,
+0x00000a00, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x000011e0, /* Task 0 context save space */
+0x00000000,
+/* Task7(TASK_CRC16_DP_1): Start of Entry -> 0xf00080e0 */
+0x00000410, /* Task 0 Descriptor Table */
+0x00000454,
+0x00000a80, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x00001230, /* Task 0 context save space */
+0x00000000,
+/* Task8(TASK_GEN_DP_0): Start of Entry -> 0xf0008100 */
+0x00000458, /* Task 0 Descriptor Table */
+0x00000488,
+0x00000b00, /* Task 0 Variable Table */
+0x00000027, /* No FDT */
+0x00000000,
+0x00000000,
+0x00001280, /* Task 0 context save space */
+0x00000000,
+/* Task9(TASK_GEN_DP_1): Start of Entry -> 0xf0008120 */
+0x0000048c, /* Task 0 Descriptor Table */
+0x000004bc,
+0x00000b80, /* Task 0 Variable Table */
+0x00000027, /* No FDT */
+0x00000000,
+0x00000000,
+0x000012d0, /* Task 0 context save space */
+0x00000000,
+/* Task10(TASK_GEN_DP_2): Start of Entry -> 0xf0008140 */
+0x000004c0, /* Task 0 Descriptor Table */
+0x000004f0,
+0x00000c00, /* Task 0 Variable Table */
+0x00000027, /* No FDT */
+0x00000000,
+0x00000000,
+0x00001320, /* Task 0 context save space */
+0x00000000,
+/* Task11(TASK_GEN_DP_3): Start of Entry -> 0xf0008160 */
+0x000004f4, /* Task 0 Descriptor Table */
+0x00000524,
+0x00000c80, /* Task 0 Variable Table */
+0x00000027, /* No FDT */
+0x00000000,
+0x00000000,
+0x00001370, /* Task 0 context save space */
+0x00000000,
+/* Task12(TASK_GEN_TX_BD): Start of Entry -> 0xf0008180 */
+0x00000528, /* Task 0 Descriptor Table */
+0x00000560,
+0x00000d00, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x000013c0, /* Task 0 context save space */
+0x00000000,
+/* Task13(TASK_GEN_RX_BD): Start of Entry -> 0xf00081a0 */
+0x00000564, /* Task 0 Descriptor Table */
+0x00000594,
+0x00000d80, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x00001410, /* Task 0 context save space */
+0x00000000,
+/* Task14(TASK_GEN_DP_BD_0): Start of Entry -> 0xf00081c0 */
+0x00000598, /* Task 0 Descriptor Table */
+0x000005cc,
+0x00000e00, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x00001460, /* Task 0 context save space */
+0x00000000,
+/* Task15(TASK_GEN_DP_BD_1): Start of Entry -> 0xf00081e0 */
+0x000005d0, /* Task 0 Descriptor Table */
+0x00000604,
+0x00000e80, /* Task 0 Variable Table */
+0x00000f27, /* Task 0 Function Descriptor Table & Flags */
+0x00000000,
+0x00000000,
+0x000014b0, /* Task 0 context save space */
+0x00000000,
+
+/* Task0(TASK_PCI_TX): Start of TDT -> 0xf0008200 */
+0xc080601b, /* 0000(../LIB_incl/hdplx.sc:167): LCDEXT: idx0 = var1, idx1 = var0; ; idx0 += inc3, idx1 += inc3 */
+0x82190292, /* 0004(../LIB_incl/hdplx.sc:177): LCD: idx2 = var4; idx2 >= var10; idx2 += inc2 */
+0x1004c018, /* 0008(../LIB_incl/hdplx.sc:179): DRD1A: *idx0 = var3; FN=0 MORE init=0 WS=2 RS=0 */
+0x8381a288, /* 000C(../LIB_incl/hdplx.sc:183): LCD: idx3 = var7, idx4 = var3; idx4 > var10; idx3 += inc1, idx4 += inc0 */
+0x011ec798, /* 0010(../LIB_incl/hdplx.sc:200): DRD1A: *idx1 = *idx3; FN=0 init=8 WS=3 RS=3 */
+0x999a001b, /* 0014(../LIB_incl/hdplx.sc:249): LCD: idx3 = idx3, idx4 = idx4; idx3 once var0; idx3 += inc3, idx4 += inc3 */
+0x00001f18, /* 0018(../LIB_incl/hdplx.sc:258): DRD1A: var7 = idx3; FN=0 init=0 WS=0 RS=0 */
+0x850102e3, /* 001C(../LIB_incl/hdplx.sc:281): LCD: idx3 = var10, idx4 = var2; idx3 != var11; idx3 += inc4, idx4 += inc3 */
+0x60080002, /* 0020(../LIB_incl/hdplx.sc:281): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=0 RS=1 */
+0x08ccfd0b, /* 0024(../LIB_incl/hdplx.sc:281): DRD2B1: idx3 = EU3(); EU3(*idx4,var11) */
+0x9a19801b, /* 0028(../LIB_incl/hdplx.sc:281): LCD: idx3 = idx4; idx3 once var0; idx3 += inc3 */
+0x0002cc58, /* 002C(../LIB_incl/hdplx.sc:281): DRD1A: *idx3 = var11; FN=0 init=0 WS=1 RS=0 */
+0x000001f8, /* 0030(:0): NOP */
+0x8018001b, /* 0034(../LIB_incl/hdplx.sc:285): LCD: idx0 = var0; idx0 once var0; idx0 += inc3 */
+0x040001f8, /* 0038(../LIB_incl/hdplx.sc:285): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+/* Task1(TASK_PCI_RX): Start of TDT -> 0xf000823c */
+0xc000e01b, /* 0000(../LIB_incl/hdplx.sc:167): LCDEXT: idx0 = var0, idx1 = var1; ; idx0 += inc3, idx1 += inc3 */
+0x81990212, /* 0004(../LIB_incl/hdplx.sc:177): LCD: idx2 = var3; idx2 >= var8; idx2 += inc2 */
+0x1004c010, /* 0008(../LIB_incl/hdplx.sc:179): DRD1A: *idx0 = var2; FN=0 MORE init=0 WS=2 RS=0 */
+0x83012208, /* 000C(../LIB_incl/hdplx.sc:186): LCD: idx3 = var6, idx4 = var2; idx4 > var8; idx3 += inc1, idx4 += inc0 */
+0x00fecf88, /* 0010(../LIB_incl/hdplx.sc:200): DRD1A: *idx3 = *idx1; FN=0 init=7 WS=3 RS=3 */
+0x999a001b, /* 0014(../LIB_incl/hdplx.sc:252): LCD: idx3 = idx3, idx4 = idx4; idx3 once var0; idx3 += inc3, idx4 += inc3 */
+0x00001b18, /* 0018(../LIB_incl/hdplx.sc:261): DRD1A: var6 = idx3; FN=0 init=0 WS=0 RS=0 */
+0x8019801b, /* 001C(../LIB_incl/hdplx.sc:281): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
+0x040001f8, /* 0020(../LIB_incl/hdplx.sc:281): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+0x000001f8, /* 0024(:0): NOP */
+0x8018001b, /* 0028(../LIB_incl/hdplx.sc:285): LCD: idx0 = var0; idx0 once var0; idx0 += inc3 */
+0x040001f8, /* 002C(../LIB_incl/hdplx.sc:285): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+/* Task2(TASK_FEC_TX): Start of TDT -> 0xf000826c */
+0x8018001b, /* 0000(../LIB_incl/bd_hdplx.sc:303): LCD: idx0 = var0; idx0 <= var0; idx0 += inc3 */
+0x60000005, /* 0004(../LIB_incl/bd_hdplx.sc:307): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
+0x01ccfc0d, /* 0008(../LIB_incl/bd_hdplx.sc:307): DRD2B1: var7 = EU3(); EU3(*idx0,var13) */
+0x8082a123, /* 000C(../LIB_incl/bd_hdplx.sc:316): LCD: idx0 = var1, idx1 = var5; idx1 <= var4; idx0 += inc4, idx1 += inc3 */
+0x10801418, /* 0010(../LIB_incl/bd_hdplx.sc:343): DRD1A: var5 = var3; FN=0 MORE init=4 WS=0 RS=0 */
+0xf88103a4, /* 0014(../LIB_incl/bd_hdplx.sc:347): LCDEXT: idx2 = *idx1, idx3 = var2; idx2 < var14; idx2 += inc4, idx3 += inc4 */
+0x801a6024, /* 0018(../LIB_incl/bd_hdplx.sc:351): LCD: idx4 = var0; ; idx4 += inc4 */
+0x10001708, /* 001C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var5 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0020(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0cccfccf, /* 0024(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx3 = EU3(); EU3(*idx3,var15) */
+0x991a002c, /* 0028(../LIB_incl/bd_hdplx.sc:373): LCD: idx2 = idx2, idx3 = idx4; idx2 once var0; idx2 += inc5, idx3 += inc4 */
+0x70000002, /* 002C(../LIB_incl/bd_hdplx.sc:377): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
+0x024cfc4d, /* 0030(../LIB_incl/bd_hdplx.sc:377): DRD2B1: var9 = EU3(); EU3(*idx1,var13) */
+0x60000003, /* 0034(../LIB_incl/bd_hdplx.sc:378): DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
+0x0cccf247, /* 0038(../LIB_incl/bd_hdplx.sc:378): DRD2B1: *idx3 = EU3(); EU3(var9,var7) */
+0x80004000, /* 003C(../LIB_incl/bd_hdplx.sc:390): LCDEXT: idx2 = 0x00000000; ; */
+0xb8c80029, /* 0040(../LIB_incl/bd_hdplx.sc:390): LCD: idx3 = *(idx1 + var0000001a); idx3 once var0; idx3 += inc5 */
+0x70000002, /* 0044(../LIB_incl/bd_hdplx.sc:401): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
+0x088cf8d1, /* 0048(../LIB_incl/bd_hdplx.sc:401): DRD2B1: idx2 = EU3(); EU3(idx3,var17) */
+0x00002f10, /* 004C(../LIB_incl/bd_hdplx.sc:404): DRD1A: var11 = idx2; FN=0 init=0 WS=0 RS=0 */
+0x99198432, /* 0050(../LIB_incl/bd_hdplx.sc:411): LCD: idx2 = idx2, idx3 = idx3; idx2 > var16; idx2 += inc6, idx3 += inc2 */
+0x008ac398, /* 0054(../LIB_incl/bd_hdplx.sc:428): DRD1A: *idx0 = *idx3; FN=0 init=4 WS=1 RS=1 */
+0x80004000, /* 0058(../LIB_incl/bd_hdplx.sc:434): LCDEXT: idx2 = 0x00000000; ; */
+0x9999802d, /* 005C(../LIB_incl/bd_hdplx.sc:439): LCD: idx3 = idx3; idx3 once var0; idx3 += inc5 */
+0x70000002, /* 0060(../LIB_incl/bd_hdplx.sc:446): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
+0x048cfc53, /* 0064(../LIB_incl/bd_hdplx.sc:446): DRD2B1: var18 = EU3(); EU3(*idx1,var19) */
+0x60000008, /* 0068(../LIB_incl/bd_hdplx.sc:450): DRD2A: EU0=0 EU1=0 EU2=0 EU3=8 EXT init=0 WS=0 RS=0 */
+0x088cf48b, /* 006C(../LIB_incl/bd_hdplx.sc:450): DRD2B1: idx2 = EU3(); EU3(var18,var11) */
+0x99198481, /* 0070(../LIB_incl/bd_hdplx.sc:461): LCD: idx2 = idx2, idx3 = idx3; idx2 > var18; idx2 += inc0, idx3 += inc1 */
+0x009ec398, /* 0074(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx0 = *idx3; FN=0 init=4 WS=3 RS=3 */
+0x991983b2, /* 0078(../LIB_incl/bd_hdplx.sc:513): LCD: idx2 = idx2, idx3 = idx3; idx2 > var14; idx2 += inc6, idx3 += inc2 */
+0x088ac398, /* 007C(../LIB_incl/bd_hdplx.sc:530): DRD1A: *idx0 = *idx3; FN=0 TFD init=4 WS=1 RS=1 */
+0x9919002d, /* 0080(../LIB_incl/bd_hdplx.sc:554): LCD: idx2 = idx2; idx2 once var0; idx2 += inc5 */
+0x60000005, /* 0084(../LIB_incl/bd_hdplx.sc:556): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
+0x0c4cf88e, /* 0088(../LIB_incl/bd_hdplx.sc:556): DRD2B1: *idx1 = EU3(); EU3(idx2,var14) */
+0x000001f8, /* 008C(:0): NOP */
+/* Task3(TASK_FEC_RX): Start of TDT -> 0xf00082fc */
+0x808220e3, /* 0000(../LIB_incl/bd_hdplx.sc:313): LCD: idx0 = var1, idx1 = var4; idx1 <= var3; idx0 += inc4, idx1 += inc3 */
+0x10601010, /* 0004(../LIB_incl/bd_hdplx.sc:343): DRD1A: var4 = var2; FN=0 MORE init=3 WS=0 RS=0 */
+0xb8800264, /* 0008(../LIB_incl/bd_hdplx.sc:347): LCD: idx2 = *idx1, idx3 = var0; idx2 < var9; idx2 += inc4, idx3 += inc4 */
+0x10001308, /* 000C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var4 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0010(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0cccfcca, /* 0014(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx3 = EU3(); EU3(*idx3,var10) */
+0x80004000, /* 0018(../LIB_incl/bd_hdplx.sc:393): LCDEXT: idx2 = 0x00000000; ; */
+0xb8c58029, /* 001C(../LIB_incl/bd_hdplx.sc:393): LCD: idx3 = *(idx1 + var00000015); idx3 once var0; idx3 += inc5 */
+0x60000002, /* 0020(../LIB_incl/bd_hdplx.sc:398): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=0 RS=0 */
+0x088cf8cc, /* 0024(../LIB_incl/bd_hdplx.sc:398): DRD2B1: idx2 = EU3(); EU3(idx3,var12) */
+0x991982f2, /* 0028(../LIB_incl/bd_hdplx.sc:414): LCD: idx2 = idx2, idx3 = idx3; idx2 > var11; idx2 += inc6, idx3 += inc2 */
+0x006acf80, /* 002C(../LIB_incl/bd_hdplx.sc:428): DRD1A: *idx3 = *idx0; FN=0 init=3 WS=1 RS=1 */
+0x80004000, /* 0030(../LIB_incl/bd_hdplx.sc:437): LCDEXT: idx2 = 0x00000000; ; */
+0x9999802d, /* 0034(../LIB_incl/bd_hdplx.sc:439): LCD: idx3 = idx3; idx3 once var0; idx3 += inc5 */
+0x70000002, /* 0038(../LIB_incl/bd_hdplx.sc:446): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
+0x034cfc4e, /* 003C(../LIB_incl/bd_hdplx.sc:446): DRD2B1: var13 = EU3(); EU3(*idx1,var14) */
+0x00008868, /* 0040(../LIB_incl/bd_hdplx.sc:448): DRD1A: idx2 = var13; FN=0 init=0 WS=0 RS=0 */
+0x99198341, /* 0044(../LIB_incl/bd_hdplx.sc:464): LCD: idx2 = idx2, idx3 = idx3; idx2 > var13; idx2 += inc0, idx3 += inc1 */
+0x007ecf80, /* 0048(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx3 = *idx0; FN=0 init=3 WS=3 RS=3 */
+0x99198272, /* 004C(../LIB_incl/bd_hdplx.sc:516): LCD: idx2 = idx2, idx3 = idx3; idx2 > var9; idx2 += inc6, idx3 += inc2 */
+0x046acf80, /* 0050(../LIB_incl/bd_hdplx.sc:530): DRD1A: *idx3 = *idx0; FN=0 INT init=3 WS=1 RS=1 */
+0x9819002d, /* 0054(../LIB_incl/bd_hdplx.sc:550): LCD: idx2 = idx0; idx2 once var0; idx2 += inc5 */
+0x0060c790, /* 0058(../LIB_incl/bd_hdplx.sc:551): DRD1A: *idx1 = *idx2; FN=0 init=3 WS=0 RS=0 */
+0x000001f8, /* 005C(:0): NOP */
+/* Task4(TASK_LPC): Start of TDT -> 0xf000835c */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0xc2826019, /* 0004(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198200, /* 0008(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var8; idx3 += inc0 */
+0x03fecb88, /* 000C(../LIB_incl/hdplx.sc:200): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8990019, /* 0010(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0014(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x03fecb88, /* 0018(../LIB_incl/hdplx.sc:218): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8996022, /* 001C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0020(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x0beacb88, /* 0024(../LIB_incl/hdplx.sc:241): DRD1A: *idx2 = *idx1; FN=0 TFD init=31 WS=1 RS=1 */
+0x8018803f, /* 0028(../LIB_incl/hdplx.sc:281): LCD: idx1 = var0; idx1 once var0; idx1 += inc7 */
+0x040001f8, /* 002C(../LIB_incl/hdplx.sc:281): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+0x000001f8, /* 0030(:0): NOP */
+/* Task5(TASK_ATA): Start of TDT -> 0xf0008390 */
+0x8198009b, /* 0000(../LIB_incl/bd_hdplx.sc:321): LCD: idx0 = var3; idx0 <= var2; idx0 += inc3 */
+0x13e00c08, /* 0004(../LIB_incl/bd_hdplx.sc:343): DRD1A: var3 = var1; FN=0 MORE init=31 WS=0 RS=0 */
+0xb8000264, /* 0008(../LIB_incl/bd_hdplx.sc:347): LCD: idx1 = *idx0, idx2 = var0; idx1 < var9; idx1 += inc4, idx2 += inc4 */
+0x10000f00, /* 000C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var3 = idx0; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0010(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0c8cfc8a, /* 0014(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx2 = EU3(); EU3(*idx2,var10) */
+0xd8988240, /* 0018(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx1 = idx1; idx1 > var9; idx1 += inc0 */
+0xf845e011, /* 001C(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx2 = *(idx0 + var00000015); ; idx2 += inc2 */
+0xb845e00a, /* 0020(../LIB_incl/bd_hdplx.sc:472): LCD: idx3 = *(idx0 + var00000019); ; idx3 += inc1 */
+0x0bfecf90, /* 0024(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx3 = *idx2; FN=0 TFD init=31 WS=3 RS=3 */
+0x9898802d, /* 0028(../LIB_incl/bd_hdplx.sc:554): LCD: idx1 = idx1; idx1 once var0; idx1 += inc5 */
+0x64000005, /* 002C(../LIB_incl/bd_hdplx.sc:556): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 INT EXT init=0 WS=0 RS=0 */
+0x0c0cf849, /* 0030(../LIB_incl/bd_hdplx.sc:556): DRD2B1: *idx0 = EU3(); EU3(idx1,var9) */
+0x000001f8, /* 0034(:0): NOP */
+/* Task6(TASK_CRC16_DP_0): Start of TDT -> 0xf00083c8 */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0x70000000, /* 0004(../LIB_incl/hdplx.sc:179): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 EXT MORE init=0 WS=0 RS=0 */
+0x2c87c7df, /* 0008(../LIB_incl/hdplx.sc:179): DRD2B2: EU3(var8) */
+0xc2826019, /* 000C(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198240, /* 0010(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var9; idx3 += inc0 */
+0x63fe000c, /* 0014(../LIB_incl/hdplx.sc:200): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT init=31 WS=3 RS=3 */
+0x0c8cfc5f, /* 0018(../LIB_incl/hdplx.sc:200): DRD2B1: *idx2 = EU3(); EU3(*idx1) */
+0xd8990019, /* 001C(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0020(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x63fe000c, /* 0024(../LIB_incl/hdplx.sc:218): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT init=31 WS=3 RS=3 */
+0x0c8cfc5f, /* 0028(../LIB_incl/hdplx.sc:218): DRD2B1: *idx2 = EU3(); EU3(*idx1) */
+0xd8996022, /* 002C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0030(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x6bea000c, /* 0034(../LIB_incl/hdplx.sc:241): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 TFD EXT init=31 WS=1 RS=1 */
+0x0c8cfc5f, /* 0038(../LIB_incl/hdplx.sc:241): DRD2B1: *idx2 = EU3(); EU3(*idx1) */
+0x9918803f, /* 003C(../LIB_incl/hdplx.sc:281): LCD: idx1 = idx2; idx1 once var0; idx1 += inc7 */
+0x0404c599, /* 0040(../LIB_incl/hdplx.sc:281): DRD1A: *idx1 = EU3(); FN=1 INT init=0 WS=2 RS=0 */
+0x000001f8, /* 0044(:0): NOP */
+/* Task7(TASK_CRC16_DP_1): Start of TDT -> 0xf0008410 */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0x70000000, /* 0004(../LIB_incl/hdplx.sc:179): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 EXT MORE init=0 WS=0 RS=0 */
+0x2c87c7df, /* 0008(../LIB_incl/hdplx.sc:179): DRD2B2: EU3(var8) */
+0xc2826019, /* 000C(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198240, /* 0010(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var9; idx3 += inc0 */
+0x63fe000c, /* 0014(../LIB_incl/hdplx.sc:200): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT init=31 WS=3 RS=3 */
+0x0c8cfc5f, /* 0018(../LIB_incl/hdplx.sc:200): DRD2B1: *idx2 = EU3(); EU3(*idx1) */
+0xd8990019, /* 001C(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0020(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x63fe000c, /* 0024(../LIB_incl/hdplx.sc:218): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT init=31 WS=3 RS=3 */
+0x0c8cfc5f, /* 0028(../LIB_incl/hdplx.sc:218): DRD2B1: *idx2 = EU3(); EU3(*idx1) */
+0xd8996022, /* 002C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0030(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x6bea000c, /* 0034(../LIB_incl/hdplx.sc:241): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 TFD EXT init=31 WS=1 RS=1 */
+0x0c8cfc5f, /* 0038(../LIB_incl/hdplx.sc:241): DRD2B1: *idx2 = EU3(); EU3(*idx1) */
+0x9918803f, /* 003C(../LIB_incl/hdplx.sc:281): LCD: idx1 = idx2; idx1 once var0; idx1 += inc7 */
+0x0404c599, /* 0040(../LIB_incl/hdplx.sc:281): DRD1A: *idx1 = EU3(); FN=1 INT init=0 WS=2 RS=0 */
+0x000001f8, /* 0044(:0): NOP */
+/* Task8(TASK_GEN_DP_0): Start of TDT -> 0xf0008458 */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0xc2826019, /* 0004(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198200, /* 0008(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var8; idx3 += inc0 */
+0x03fecb88, /* 000C(../LIB_incl/hdplx.sc:200): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8990019, /* 0010(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0014(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x03fecb88, /* 0018(../LIB_incl/hdplx.sc:218): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8996022, /* 001C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0020(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x0beacb88, /* 0024(../LIB_incl/hdplx.sc:241): DRD1A: *idx2 = *idx1; FN=0 TFD init=31 WS=1 RS=1 */
+0x8018803f, /* 0028(../LIB_incl/hdplx.sc:281): LCD: idx1 = var0; idx1 once var0; idx1 += inc7 */
+0x040001f8, /* 002C(../LIB_incl/hdplx.sc:281): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+0x000001f8, /* 0030(:0): NOP */
+/* Task9(TASK_GEN_DP_1): Start of TDT -> 0xf000848c */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0xc2826019, /* 0004(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198200, /* 0008(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var8; idx3 += inc0 */
+0x03fecb88, /* 000C(../LIB_incl/hdplx.sc:200): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8990019, /* 0010(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0014(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x03fecb88, /* 0018(../LIB_incl/hdplx.sc:218): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8996022, /* 001C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0020(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x0beacb88, /* 0024(../LIB_incl/hdplx.sc:241): DRD1A: *idx2 = *idx1; FN=0 TFD init=31 WS=1 RS=1 */
+0x8018803f, /* 0028(../LIB_incl/hdplx.sc:281): LCD: idx1 = var0; idx1 once var0; idx1 += inc7 */
+0x040001f8, /* 002C(../LIB_incl/hdplx.sc:281): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+0x000001f8, /* 0030(:0): NOP */
+/* Task10(TASK_GEN_DP_2): Start of TDT -> 0xf00084c0 */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0xc2826019, /* 0004(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198200, /* 0008(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var8; idx3 += inc0 */
+0x03fecb88, /* 000C(../LIB_incl/hdplx.sc:200): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8990019, /* 0010(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0014(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x03fecb88, /* 0018(../LIB_incl/hdplx.sc:218): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8996022, /* 001C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0020(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x0beacb88, /* 0024(../LIB_incl/hdplx.sc:241): DRD1A: *idx2 = *idx1; FN=0 TFD init=31 WS=1 RS=1 */
+0x8018803f, /* 0028(../LIB_incl/hdplx.sc:281): LCD: idx1 = var0; idx1 once var0; idx1 += inc7 */
+0x040001f8, /* 002C(../LIB_incl/hdplx.sc:281): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+0x000001f8, /* 0030(:0): NOP */
+/* Task11(TASK_GEN_DP_3): Start of TDT -> 0xf00084f4 */
+0x809801ed, /* 0000(../LIB_incl/hdplx.sc:177): LCD: idx0 = var1; idx0 >= var7; idx0 += inc5 */
+0xc2826019, /* 0004(../LIB_incl/hdplx.sc:183): LCDEXT: idx1 = var5, idx2 = var4; ; idx1 += inc3, idx2 += inc1 */
+0x80198200, /* 0008(../LIB_incl/hdplx.sc:188): LCD: idx3 = var0; idx3 > var8; idx3 += inc0 */
+0x03fecb88, /* 000C(../LIB_incl/hdplx.sc:200): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8990019, /* 0010(../LIB_incl/hdplx.sc:208): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc3, idx2 += inc1 */
+0x9999e000, /* 0014(../LIB_incl/hdplx.sc:211): LCD: idx3 = idx3; ; idx3 += inc0 */
+0x03fecb88, /* 0018(../LIB_incl/hdplx.sc:218): DRD1A: *idx2 = *idx1; FN=0 init=31 WS=3 RS=3 */
+0xd8996022, /* 001C(../LIB_incl/hdplx.sc:224): LCDEXT: idx1 = idx1, idx2 = idx2; ; idx1 += inc4, idx2 += inc2 */
+0x999981f6, /* 0020(../LIB_incl/hdplx.sc:229): LCD: idx3 = idx3; idx3 > var7; idx3 += inc6 */
+0x0beacb88, /* 0024(../LIB_incl/hdplx.sc:241): DRD1A: *idx2 = *idx1; FN=0 TFD init=31 WS=1 RS=1 */
+0x8018803f, /* 0028(../LIB_incl/hdplx.sc:281): LCD: idx1 = var0; idx1 once var0; idx1 += inc7 */
+0x040001f8, /* 002C(../LIB_incl/hdplx.sc:281): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
+0x000001f8, /* 0030(:0): NOP */
+/* Task12(TASK_GEN_TX_BD): Start of TDT -> 0xf0008528 */
+0x800220e3, /* 0000(../LIB_incl/bd_hdplx.sc:316): LCD: idx0 = var0, idx1 = var4; idx1 <= var3; idx0 += inc4, idx1 += inc3 */
+0x13e01010, /* 0004(../LIB_incl/bd_hdplx.sc:343): DRD1A: var4 = var2; FN=0 MORE init=31 WS=0 RS=0 */
+0xb8808264, /* 0008(../LIB_incl/bd_hdplx.sc:347): LCD: idx2 = *idx1, idx3 = var1; idx2 < var9; idx2 += inc4, idx3 += inc4 */
+0x10001308, /* 000C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var4 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0010(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0cccfcca, /* 0014(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx3 = EU3(); EU3(*idx3,var10) */
+0xd9190300, /* 0018(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx2 = idx2; idx2 > var12; idx2 += inc0 */
+0xb8c5e009, /* 001C(../LIB_incl/bd_hdplx.sc:469): LCD: idx3 = *(idx1 + var00000015); ; idx3 += inc1 */
+0x03fec398, /* 0020(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx0 = *idx3; FN=0 init=31 WS=3 RS=3 */
+0x9919826a, /* 0024(../LIB_incl/bd_hdplx.sc:513): LCD: idx2 = idx2, idx3 = idx3; idx2 > var9; idx2 += inc5, idx3 += inc2 */
+0x0feac398, /* 0028(../LIB_incl/bd_hdplx.sc:530): DRD1A: *idx0 = *idx3; FN=0 TFD INT init=31 WS=1 RS=1 */
+0x99190036, /* 002C(../LIB_incl/bd_hdplx.sc:554): LCD: idx2 = idx2; idx2 once var0; idx2 += inc6 */
+0x60000005, /* 0030(../LIB_incl/bd_hdplx.sc:556): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
+0x0c4cf889, /* 0034(../LIB_incl/bd_hdplx.sc:556): DRD2B1: *idx1 = EU3(); EU3(idx2,var9) */
+0x000001f8, /* 0038(:0): NOP */
+/* Task13(TASK_GEN_RX_BD): Start of TDT -> 0xf0008564 */
+0x808220da, /* 0000(../LIB_incl/bd_hdplx.sc:313): LCD: idx0 = var1, idx1 = var4; idx1 <= var3; idx0 += inc3, idx1 += inc2 */
+0x13e01010, /* 0004(../LIB_incl/bd_hdplx.sc:343): DRD1A: var4 = var2; FN=0 MORE init=31 WS=0 RS=0 */
+0xb880025b, /* 0008(../LIB_incl/bd_hdplx.sc:347): LCD: idx2 = *idx1, idx3 = var0; idx2 < var9; idx2 += inc3, idx3 += inc3 */
+0x10001308, /* 000C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var4 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0010(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0cccfcca, /* 0014(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx3 = EU3(); EU3(*idx3,var10) */
+0xd9190240, /* 0018(../LIB_incl/bd_hdplx.sc:472): LCDEXT: idx2 = idx2; idx2 > var9; idx2 += inc0 */
+0xb8c5e009, /* 001C(../LIB_incl/bd_hdplx.sc:472): LCD: idx3 = *(idx1 + var00000015); ; idx3 += inc1 */
+0x07fecf80, /* 0020(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx3 = *idx0; FN=0 INT init=31 WS=3 RS=3 */
+0x99190024, /* 0024(../LIB_incl/bd_hdplx.sc:554): LCD: idx2 = idx2; idx2 once var0; idx2 += inc4 */
+0x60000005, /* 0028(../LIB_incl/bd_hdplx.sc:556): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
+0x0c4cf889, /* 002C(../LIB_incl/bd_hdplx.sc:556): DRD2B1: *idx1 = EU3(); EU3(idx2,var9) */
+0x000001f8, /* 0030(:0): NOP */
+/* Task14(TASK_GEN_DP_BD_0): Start of TDT -> 0xf0008598 */
+0x8198009b, /* 0000(../LIB_incl/bd_hdplx.sc:321): LCD: idx0 = var3; idx0 <= var2; idx0 += inc3 */
+0x13e00c08, /* 0004(../LIB_incl/bd_hdplx.sc:343): DRD1A: var3 = var1; FN=0 MORE init=31 WS=0 RS=0 */
+0xb8000264, /* 0008(../LIB_incl/bd_hdplx.sc:347): LCD: idx1 = *idx0, idx2 = var0; idx1 < var9; idx1 += inc4, idx2 += inc4 */
+0x10000f00, /* 000C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var3 = idx0; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0010(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0c8cfc8a, /* 0014(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx2 = EU3(); EU3(*idx2,var10) */
+0xd8988240, /* 0018(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx1 = idx1; idx1 > var9; idx1 += inc0 */
+0xf845e011, /* 001C(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx2 = *(idx0 + var00000015); ; idx2 += inc2 */
+0xb845e00a, /* 0020(../LIB_incl/bd_hdplx.sc:472): LCD: idx3 = *(idx0 + var00000019); ; idx3 += inc1 */
+0x0bfecf90, /* 0024(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx3 = *idx2; FN=0 TFD init=31 WS=3 RS=3 */
+0x9898802d, /* 0028(../LIB_incl/bd_hdplx.sc:554): LCD: idx1 = idx1; idx1 once var0; idx1 += inc5 */
+0x64000005, /* 002C(../LIB_incl/bd_hdplx.sc:556): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 INT EXT init=0 WS=0 RS=0 */
+0x0c0cf849, /* 0030(../LIB_incl/bd_hdplx.sc:556): DRD2B1: *idx0 = EU3(); EU3(idx1,var9) */
+0x000001f8, /* 0034(:0): NOP */
+/* Task15(TASK_GEN_DP_BD_1): Start of TDT -> 0xf00085d0 */
+0x8198009b, /* 0000(../LIB_incl/bd_hdplx.sc:321): LCD: idx0 = var3; idx0 <= var2; idx0 += inc3 */
+0x13e00c08, /* 0004(../LIB_incl/bd_hdplx.sc:343): DRD1A: var3 = var1; FN=0 MORE init=31 WS=0 RS=0 */
+0xb8000264, /* 0008(../LIB_incl/bd_hdplx.sc:347): LCD: idx1 = *idx0, idx2 = var0; idx1 < var9; idx1 += inc4, idx2 += inc4 */
+0x10000f00, /* 000C(../LIB_incl/bd_hdplx.sc:353): DRD1A: var3 = idx0; FN=0 MORE init=0 WS=0 RS=0 */
+0x60140002, /* 0010(../LIB_incl/bd_hdplx.sc:356): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT init=0 WS=2 RS=2 */
+0x0c8cfc8a, /* 0014(../LIB_incl/bd_hdplx.sc:356): DRD2B1: *idx2 = EU3(); EU3(*idx2,var10) */
+0xd8988240, /* 0018(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx1 = idx1; idx1 > var9; idx1 += inc0 */
+0xf845e011, /* 001C(../LIB_incl/bd_hdplx.sc:469): LCDEXT: idx2 = *(idx0 + var00000015); ; idx2 += inc2 */
+0xb845e00a, /* 0020(../LIB_incl/bd_hdplx.sc:472): LCD: idx3 = *(idx0 + var00000019); ; idx3 += inc1 */
+0x0bfecf90, /* 0024(../LIB_incl/bd_hdplx.sc:486): DRD1A: *idx3 = *idx2; FN=0 TFD init=31 WS=3 RS=3 */
+0x9898802d, /* 0028(../LIB_incl/bd_hdplx.sc:554): LCD: idx1 = idx1; idx1 once var0; idx1 += inc5 */
+0x64000005, /* 002C(../LIB_incl/bd_hdplx.sc:556): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 INT EXT init=0 WS=0 RS=0 */
+0x0c0cf849, /* 0030(../LIB_incl/bd_hdplx.sc:556): DRD2B1: *idx0 = EU3(); EU3(idx1,var9) */
+0x000001f8, /* 0034(:0): NOP */
+
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+0x00000000, /* alignment */
+/* Task0(TASK_PCI_TX): Start of VarTab -> 0xf0008700 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000001, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xc000ffff, /* inc[2] */
+0x00000000, /* inc[3] */
+0x60000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task1(TASK_PCI_RX): Start of VarTab -> 0xf0008780 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xc000ffff, /* inc[2] */
+0x00000000, /* inc[3] */
+0x00000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task2(TASK_FEC_TX): Start of VarTab -> 0xf0008800 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x0c000000, /* var[13] */
+0x40000000, /* var[14] */
+0x7fff7fff, /* var[15] */
+0x00000000, /* var[16] */
+0x00000003, /* var[17] */
+0x40000004, /* var[18] */
+0x43ffffff, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0xa0000008, /* inc[3] */
+0x20000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task3(TASK_FEC_RX): Start of VarTab -> 0xf0008880 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x40000000, /* var[9] */
+0x7fff7fff, /* var[10] */
+0x00000000, /* var[11] */
+0x00000003, /* var[12] */
+0x40000008, /* var[13] */
+0x43ffffff, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0xa0000008, /* inc[3] */
+0x20000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task4(TASK_LPC): Start of VarTab -> 0xf0008900 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000008, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task5(TASK_ATA): Start of VarTab -> 0xf0008980 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x40000000, /* var[9] */
+0x7fff7fff, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0xa000000c, /* inc[3] */
+0x20000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task6(TASK_CRC16_DP_0): Start of VarTab -> 0xf0008a00 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000001, /* var[8] */
+0x00000008, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task7(TASK_CRC16_DP_1): Start of VarTab -> 0xf0008a80 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000001, /* var[8] */
+0x00000008, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task8(TASK_GEN_DP_0): Start of VarTab -> 0xf0008b00 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000008, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task9(TASK_GEN_DP_1): Start of VarTab -> 0xf0008b80 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000008, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task10(TASK_GEN_DP_2): Start of VarTab -> 0xf0008c00 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000008, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task11(TASK_GEN_DP_3): Start of VarTab -> 0xf0008c80 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000008, /* var[8] */
+0x00000000, /* var[9] */
+0x00000000, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0x00000000, /* inc[3] */
+0xe0000000, /* inc[4] */
+0xc000ffff, /* inc[5] */
+0x4000ffff, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task12(TASK_GEN_TX_BD): Start of VarTab -> 0xf0008d00 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x40000000, /* var[9] */
+0x7fff7fff, /* var[10] */
+0x00000000, /* var[11] */
+0x40000004, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0xa0000008, /* inc[3] */
+0x20000000, /* inc[4] */
+0x4000ffff, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task13(TASK_GEN_RX_BD): Start of VarTab -> 0xf0008d80 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x40000000, /* var[9] */
+0x7fff7fff, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xa0000008, /* inc[2] */
+0x20000000, /* inc[3] */
+0x00000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task14(TASK_GEN_DP_BD_0): Start of VarTab -> 0xf0008e00 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x40000000, /* var[9] */
+0x7fff7fff, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0xa000000c, /* inc[3] */
+0x20000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+/* Task15(TASK_GEN_DP_BD_1): Start of VarTab -> 0xf0008e80 */
+0x00000000, /* var[0] */
+0x00000000, /* var[1] */
+0x00000000, /* var[2] */
+0x00000000, /* var[3] */
+0x00000000, /* var[4] */
+0x00000000, /* var[5] */
+0x00000000, /* var[6] */
+0x00000000, /* var[7] */
+0x00000000, /* var[8] */
+0x40000000, /* var[9] */
+0x7fff7fff, /* var[10] */
+0x00000000, /* var[11] */
+0x00000000, /* var[12] */
+0x00000000, /* var[13] */
+0x00000000, /* var[14] */
+0x00000000, /* var[15] */
+0x00000000, /* var[16] */
+0x00000000, /* var[17] */
+0x00000000, /* var[18] */
+0x00000000, /* var[19] */
+0x00000000, /* var[20] */
+0x00000000, /* var[21] */
+0x00000000, /* var[22] */
+0x00000000, /* var[23] */
+0x40000000, /* inc[0] */
+0xe0000000, /* inc[1] */
+0xe0000000, /* inc[2] */
+0xa000000c, /* inc[3] */
+0x20000000, /* inc[4] */
+0x00000000, /* inc[5] */
+0x00000000, /* inc[6] */
+0x00000000, /* inc[7] */
+
+/* Task0(TASK_PCI_TX): Start of FDT -> 0xf0008f00 */
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0x00000000,
+0xa0045670, /* load_acc(), EU# 3 */
+0x80045670, /* unload_acc(), EU# 3 */
+0x21800000, /* and(), EU# 3 */
+0x21e00000, /* or(), EU# 3 */
+0x21500000, /* xor(), EU# 3 */
+0x21400000, /* andn(), EU# 3 */
+0x21500000, /* not(), EU# 3 */
+0x20400000, /* add(), EU# 3 */
+0x20500000, /* sub(), EU# 3 */
+0x20800000, /* lsh(), EU# 3 */
+0x20a00000, /* rsh(), EU# 3 */
+0xc0170000, /* crc8(), EU# 3 */
+0xc0145670, /* crc16(), EU# 3 */
+0xc0345670, /* crc32(), EU# 3 */
+0xa0076540, /* endian32(), EU# 3 */
+0xa0000760, /* endian16(), EU# 3 */
+
+/* Task0(TASK_PCI_TX): Start of CSave -> 0xf0009000 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task1(TASK_PCI_RX): Start of CSave -> 0xf0009050 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task2(TASK_FEC_TX): Start of CSave -> 0xf00090a0 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task3(TASK_FEC_RX): Start of CSave -> 0xf00090f0 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task4(TASK_LPC): Start of CSave -> 0xf0009140 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task5(TASK_ATA): Start of CSave -> 0xf0009190 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task6(TASK_CRC16_DP_0): Start of CSave -> 0xf00091e0 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task7(TASK_CRC16_DP_1): Start of CSave -> 0xf0009230 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task8(TASK_GEN_DP_0): Start of CSave -> 0xf0009280 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task9(TASK_GEN_DP_1): Start of CSave -> 0xf00092d0 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task10(TASK_GEN_DP_2): Start of CSave -> 0xf0009320 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task11(TASK_GEN_DP_3): Start of CSave -> 0xf0009370 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task12(TASK_GEN_TX_BD): Start of CSave -> 0xf00093c0 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task13(TASK_GEN_RX_BD): Start of CSave -> 0xf0009410 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task14(TASK_GEN_DP_BD_0): Start of CSave -> 0xf0009460 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Task15(TASK_GEN_DP_BD_1): Start of CSave -> 0xf00094b0 */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+0x00000000, /* reserve */
+/* Start of free code space -> f0009500 */
+
+};
diff --git a/bsps/powerpc/gen5200/bestcomm/load_task.c b/bsps/powerpc/gen5200/bestcomm/load_task.c
new file mode 100644
index 0000000000..c9bbb2dc83
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/load_task.c
@@ -0,0 +1,84 @@
+/******************************************************************************
+*
+* Copyright (c) 2004 Freescale Semiconductor, Inc.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+******************************************************************************/
+
+#if defined(__rtems__) || defined(MPC5200_BAPI_LIBC_HEADERS)
+#include <string.h>
+#endif
+
+#include <bsp/bestcomm/include/ppctypes.h>
+#include <bsp/bestcomm/include/mgt5200/sdma.h>
+#include <bsp/bestcomm/include/mgt5200/mgt5200.h>
+
+#include <bsp/bestcomm/dma_image.h>
+#include <bsp/bestcomm/bestcomm_api.h>
+
+#ifdef __MWERKS__
+__declspec(section ".text") extern const uint32 taskTable;
+__declspec(section ".text") extern const uint32 taskTableBytes;
+__declspec(section ".text") extern const uint32 taskTableTasks;
+__declspec(section ".text") extern const uint32 offsetEntry;
+#else
+extern const uint32 taskTable [];
+extern const uint32 taskTableBytes;
+extern const uint32 taskTableTasks;
+extern const uint32 offsetEntry;
+#endif
+
+typedef struct SCTDT {
+ uint32 start;
+ uint32 stop;
+ uint32 var;
+ uint32 fdt;
+ uint32 rsvd1;
+ uint32 rsvd2;
+ uint32 context;
+ uint32 litbase;
+} SCTDT_T;
+
+
+/*!
+ * \brief Load BestComm tasks into SRAM.
+ * \param sdma Base address of the BestComm register set
+ *
+ * The BestComm tasks must be loaded before any task can be setup,
+ * enabled, etc. This might be called as part of a boot sequence before
+ * any BestComm drivers are required.
+ */
+void TasksLoadImage(sdma_regs *sdma)
+{
+ uint32 i;
+ SCTDT_T *tt;
+
+ /* copy task table from source to destination */
+ memcpy((void *)((uint8 *)(sdma->taskBar) - MBarPhysOffsetGlobal), taskTable, taskTableBytes);
+ /* adjust addresses in task table */
+ for (i=0; i < (uint32) taskTableTasks; i++) {
+ tt = (SCTDT_T *)(((uint8 *)(sdma->taskBar) - MBarPhysOffsetGlobal) + (uint32) offsetEntry + (i * sizeof (SCTDT_T)));
+ tt->start += sdma->taskBar;
+ tt->stop += sdma->taskBar;
+ tt->var += sdma->taskBar;
+ tt->fdt = (sdma->taskBar & 0xFFFFFF00) + tt->fdt;
+ tt->context += sdma->taskBar;
+ }
+}
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_ata.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_ata.c
new file mode 100644
index 0000000000..47744c199b
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_ata.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_ATA
+#define TASK_API TASK_ATA_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_ATA
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 4
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_bdtable.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_bdtable.c
new file mode 100644
index 0000000000..035422de41
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_bdtable.c
@@ -0,0 +1,117 @@
+/******************************************************************************
+*
+* Copyright (c) 2004 Freescale Semiconductor, Inc.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included
+* in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+******************************************************************************/
+
+#include <assert.h>
+
+#include <bsp/bestcomm/bestcomm_api.h>
+#include <bsp/bestcomm/bestcomm_glue.h>
+#include <bsp/bestcomm/task_api/tasksetup_bdtable.h>
+#include <bsp/bestcomm/include/mgt5200/mgt5200.h>
+
+#ifdef __MWERKS__
+__declspec(section ".text") extern const uint32 taskTable;
+__declspec(section ".text") extern const uint32 taskTableBytes;
+__declspec(section ".text") extern const uint32 taskTableTasks;
+__declspec(section ".text") extern const uint32 offsetEntry;
+#else
+extern const uint32 taskTable;
+extern const uint32 taskTableBytes;
+extern const uint32 taskTableTasks;
+extern const uint32 offsetEntry;
+#endif
+
+TaskBDIdxTable_t TaskBDIdxTable[MAX_TASKS];
+
+void TaskSetup_BDTable(volatile uint32 *BasePtr, volatile uint32 *LastPtr, volatile uint32 *StartPtr,
+ int TaskNum, uint32 NumBD, uint16 MaxBD,
+ uint8 NumPtr, ApiConfig_t ApiConfig, uint32 Status)
+{
+ int i, j;
+ uint32 *ptr;
+
+ /*
+ * First time through the Buffer Descriptor table configuration
+ * set the buffer descriptor table with parameters that will not
+ * change since they are determined by the task itself. The
+ * SramOffsetGlobal variable must be updated to reflect the new SRAM
+ * space used by the buffer descriptor table. The next time through
+ * this function (i.e. TaskSetup called again) the only parameters
+ * that should be changed are the LastPtr pointers and the NumBD part
+ * of the table.
+ */
+ if (TaskBDIdxTable[TaskNum].BDTablePtr == 0) {
+ size_t AllocSize = 0;
+ void *AllocBegin = NULL;
+
+ switch (NumPtr) {
+ case 1:
+ AllocSize += MaxBD*sizeof(TaskBD1_t);
+ break;
+ case 2:
+ AllocSize += MaxBD*sizeof(TaskBD2_t);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+
+ AllocBegin = bestcomm_malloc(AllocSize);
+ assert(AllocBegin != NULL);
+
+ TaskBDIdxTable[TaskNum].BDTablePtr = AllocBegin;
+ TaskBDIdxTable[TaskNum].numPtr = NumPtr;
+ TaskBDIdxTable[TaskNum].apiConfig = ApiConfig;
+ TaskBDIdxTable[TaskNum].BDStartPtr = StartPtr;
+
+ *StartPtr = *BasePtr = (uint32)((uint32)TaskBDIdxTable[TaskNum].BDTablePtr
+ + MBarPhysOffsetGlobal);
+ }
+
+ TaskBDIdxTable[TaskNum].currBDInUse = 0;
+ TaskBDIdxTable[TaskNum].numBD = (uint16)NumBD;
+ switch (NumPtr) {
+ case 1:
+ *LastPtr = (uint32)(*BasePtr + sizeof(TaskBD1_t) * (NumBD - 1));
+ break;
+ case 2:
+ *LastPtr = (uint32)(*BasePtr + sizeof(TaskBD2_t) * (NumBD - 1));
+ break;
+ default:
+ /* error */
+ break;
+ }
+
+ /*
+ * Set the status bits. Clear the data pointers.
+ */
+ if (MaxBD > 0) {
+ ptr = TaskBDIdxTable[TaskNum].BDTablePtr;
+ for (i = 0; i < NumBD; i++) {
+ *(ptr++) = Status;
+ for (j = 0; j < NumPtr; j++) {
+ *(ptr++) = 0x0;
+ }
+ }
+ }
+}
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_0.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_0.c
new file mode 100644
index 0000000000..5a6c23847e
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_0.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_CRC16_DP_0
+#define TASK_API TASK_CRC16_DP_0_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_CRC16_DP_0
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_1.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_1.c
new file mode 100644
index 0000000000..8c79247508
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_crc16_dp_1.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_CRC16_DP_1
+#define TASK_API TASK_CRC16_DP_1_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_CRC16_DP_1
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_fec_rx_bd.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_fec_rx_bd.c
new file mode 100644
index 0000000000..0105f7f294
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_fec_rx_bd.c
@@ -0,0 +1,37 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_FEC_RX
+#define TASK_API TASK_FEC_RX_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_FEC_RX
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+#define MISALIGNED_START 1
+
+#define INITIATOR_DATA INITIATOR_FEC_RX
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 256
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 0
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_fec_tx_bd.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_fec_tx_bd.c
new file mode 100644
index 0000000000..9bf5c3726b
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_fec_tx_bd.c
@@ -0,0 +1,38 @@
+
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_FEC_TX
+#define TASK_API TASK_FEC_TX_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_FEC_TX
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+#define MISALIGNED_START 1
+
+#define INITIATOR_DATA INITIATOR_FEC_TX
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 256
+#define BD_FLAG 1
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 0
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_0.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_0.c
new file mode 100644
index 0000000000..12d5537521
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_0.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_DP_0
+#define TASK_API TASK_GEN_DP_0_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_DP_0
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_1.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_1.c
new file mode 100644
index 0000000000..139104f541
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_1.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_DP_1
+#define TASK_API TASK_GEN_DP_1_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_DP_1
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_2.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_2.c
new file mode 100644
index 0000000000..17612b341e
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_2.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_DP_2
+#define TASK_API TASK_GEN_DP_2_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_DP_2
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_3.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_3.c
new file mode 100644
index 0000000000..8f96f5a12f
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_3.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_DP_3
+#define TASK_API TASK_GEN_DP_3_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_DP_3
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_0.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_0.c
new file mode 100644
index 0000000000..b05db10bb3
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_0.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_DP_BD_0
+#define TASK_API TASK_GEN_DP_BD_0_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_DP_BD_0
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 128
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_1.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_1.c
new file mode 100644
index 0000000000..f5e0109956
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_dp_bd_1.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_DP_BD_1
+#define TASK_API TASK_GEN_DP_BD_1_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_DP_BD_1
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 32
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_rx_bd.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_rx_bd.c
new file mode 100644
index 0000000000..dc81ad639b
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_rx_bd.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_RX_BD
+#define TASK_API TASK_GEN_RX_BD_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_RX_BD
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 64
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 0
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_tx_bd.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_tx_bd.c
new file mode 100644
index 0000000000..2ca073e9f2
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_gen_tx_bd.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_GEN_TX_BD
+#define TASK_API TASK_GEN_TX_BD_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_GEN_TX_BD
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -1
+#define ITERATIONS -1
+
+#define MAX_BD 64
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 0
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_lpc.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_lpc.c
new file mode 100644
index 0000000000..725080ac19
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_lpc.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_LPC
+#define TASK_API TASK_LPC_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_LPC
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 0
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 1
+
+#define INITIATOR_DATA -1
+
+#define AUTO_START -2
+#define ITERATIONS 1
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_pci_rx.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_pci_rx.c
new file mode 100644
index 0000000000..80f20b9118
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_pci_rx.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_PCI_RX
+#define TASK_API TASK_PCI_RX_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_PCI_RX
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 1
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+
+#define INITIATOR_DATA INITIATOR_SCPCI_RX
+
+#define AUTO_START -2
+#define ITERATIONS 0
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 0
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 1
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>
diff --git a/bsps/powerpc/gen5200/bestcomm/tasksetup_pci_tx.c b/bsps/powerpc/gen5200/bestcomm/tasksetup_pci_tx.c
new file mode 100644
index 0000000000..37db9a6241
--- /dev/null
+++ b/bsps/powerpc/gen5200/bestcomm/tasksetup_pci_tx.c
@@ -0,0 +1,36 @@
+/*
+ * Generated by GUI, one per configured tasks.
+ */
+
+#define TASK_BASE TASK_PCI_TX
+#define TASK_API TASK_PCI_TX_api_t
+#define TASKSETUP_NAME TaskSetup_TASK_PCI_TX
+
+/* Pragma settings */
+#define PRECISE_INC 0
+#define NO_ERROR_RST 0
+#define PACK_DATA 0
+#define INTEGER_MODE 1
+#define SPEC_READS 1
+#define WRITE_LINE_BUFFER 1
+#define READ_LINE_BUFFER 1
+
+#define MISALIGNED 0
+
+#define INITIATOR_DATA INITIATOR_SCPCI_TX
+
+#define AUTO_START -2
+#define ITERATIONS 0
+
+#define MAX_BD 0
+#define BD_FLAG 0
+
+#define INCR_TYPE_SRC 1
+#define INCR_SRC 0
+#define TYPE_SRC FLEX_T
+
+#define INCR_TYPE_DST 0
+#define INCR_DST 0
+#define TYPE_DST FLEX_T
+
+#include <bsp/bestcomm/task_api/tasksetup_general.h>