/*   Do *not* directly modify this file.  It was    */
/*   generated by the Configuration Tool; any  */
/*   changes risk being overwritten.                */

/* INPUT mpa1.cdb */

/* MODULE PARAMETERS */
GBL_USERINITFXN = _FXN_F_nop;

MEM_SEGZERO = SDRAM;
MEM_MALLOCSEG = SDRAM;

CLK_TIMEFXN = CLK_F_getshtime;
CLK_HOOKFXN = HWI_F_dispatch;

PRD_THOOKFXN = _KNL_tick;

RTDX_DATAMEMSEG = ISRAM;

HST_DSMBUFSEG = ISRAM;

SWI_EHOOKFXN = GBL_NULL;
SWI_IHOOKFXN = GBL_NULL;
SWI_EXECFXN = SWI_F_iexec;
SWI_RUNFXN = SWI_F_run;

TSK_STACKSEG = MEM_NULL;
TSK_VCREATEFXN = _FXN_F_nop;
TSK_VDELETEFXN = _FXN_F_nop;
TSK_VEXITFXN = _FXN_F_nop;

IDL_CALIBRFXN = GBL_NULL;

SYS_ABORTFXN = _UTL_doAbort;
SYS_ERRORFXN = _UTL_doError;
SYS_EXITFXN = _UTL_halt;
SYS_PUTCFXN = _UTL_doPutc;

GIO_CREATEFXN = _FXN_F_nop;
GIO_DELETEFXN = _FXN_F_nop;
GIO_PENDFXN = _FXN_F_nop;
GIO_POSTFXN = _FXN_F_nop;

/* OBJECT ALIASES */
_ISRAM = ISRAM;
_CACHE_L2 = CACHE_L2;
_SDRAM = SDRAM;
_PRD_clock = PRD_clock;
_HWI_RESET = HWI_RESET;
_HWI_NMI = HWI_NMI;
_HWI_RESERVED0 = HWI_RESERVED0;
_HWI_RESERVED1 = HWI_RESERVED1;
_HWI_INT4 = HWI_INT4;
_HWI_INT5 = HWI_INT5;
_HWI_INT6 = HWI_INT6;
_HWI_INT7 = HWI_INT7;
_HWI_INT8 = HWI_INT8;
_HWI_INT9 = HWI_INT9;
_HWI_INT10 = HWI_INT10;
_HWI_INT11 = HWI_INT11;
_HWI_INT12 = HWI_INT12;
_HWI_INT13 = HWI_INT13;
_HWI_INT14 = HWI_INT14;
_HWI_INT15 = HWI_INT15;
_KNL_swi = KNL_swi;
_utopia_tx = utopia_tx;
_TSK_idle = TSK_idle;
_control1 = control1;
_control2 = control2;
_periodic = periodic;
_control5 = control5;
_control3 = control3;
_control4 = control4;
_dspboot = dspboot;
_test_vc3 = test_vc3;
_ramp1 = ramp1;
_control6 = control6;
_control7 = control7;
_control8 = control8;
_ramp2 = ramp2;
_interconnect = interconnect;
_LOG_system = LOG_system;
_ces_log = ces_log;

/* MODULE GBL */

SECTIONS {
   .vers (COPY): {} /* version information */
}

-priority
-llnkrtdx.a64
-ldrivers.a64          /* device drivers support */
-lsioboth.a64          /* supports both SIO models */
-lbios.a64             /* DSP/BIOS support */
-lrtdx64xx.lib         /* RTDX support */
-lcsl6415.lib
-lrts6400.lib          /* C and C++ run-time library support */

_GBL_CACHE = GBL_CACHE;

/* MODULE MEM */
-stack 0x800
MEMORY {
   ISRAM       : origin = 0x10000,     len = 0xb0000
   CACHE_L2    : origin = 0xc0000,     len = 0x40000
   SDRAM       : origin = 0x80800000,  len = 0x800000
}
/* MODULE CLK */
SECTIONS {
   .clk: {
        _CLK_start = _CLK_start6x;
        CLK_F_gethtime = CLK_F_getshtime;
        CLK_A_TABBEG = .;
        *(.clk)
        CLK_A_TABEND = .;
        CLK_A_TABLEN = (. - CLK_A_TABBEG) / 1;
   } > ISRAM 
}
_CLK_PRD = CLK_PRD;
_CLK_COUNTSPMS = CLK_COUNTSPMS;
_CLK_REGS = CLK_REGS;
_CLK_USETIMER = CLK_USETIMER;
_CLK_TIMERNUM = CLK_TIMERNUM;
_CLK_TDDR = CLK_TDDR;

/* MODULE PRD */
SECTIONS {
   .prd: {
        PRD_A_TABBEG = .;
        /* no PRD objects */
        PRD_A_TABEND = .;
        PRD_A_TABLEN = (. - PRD_A_TABBEG) / 32;
   } > ISRAM
}

/* MODULE RTDX */
_RTDX_interrupt_mask = 0x0;

/* MODULE SWI */
SECTIONS {
   .swi: {
        SWI_A_TABBEG = .;
        *(.swi)
        SWI_A_TABEND = .;
        SWI_A_TABLEN = (. - SWI_A_TABBEG) / 44;
   } > ISRAM
}

/* MODULE IDL */
SECTIONS {
   .idl: {
        IDL_A_TABBEG = .;
        *(.idl)
        IDL_A_TABEND = .;
        IDL_A_TABLEN = (. - IDL_A_TABBEG) / 8;
        IDL_A_CALBEG = .;
        *(.idlcal)
        IDL_A_CALEND = .;
        IDL_A_CALLEN = (. - IDL_A_CALBEG) / 8;
   } > ISRAM
}



SECTIONS {
        .bss:     {} > ISRAM
        
        .hwi_vec: {
            HWI_A_VECS = .;
            *(.hwi_vec)
        } align = 0x400 > ISRAM
        
        .far:     {} > ISRAM
        
        .sysdata: {} > ISRAM
        
        .sysinit:    {} > ISRAM
        
        .sysregs: {} > ISRAM
        
        .trcdata:    {} > ISRAM
        
        .mem: 	  {} > ISRAM
        
        .gblinit:    {} > ISRAM
        
        .cinit:    {} > ISRAM
        
        .pinit:   {} > ISRAM
        
        .data:    {} > ISRAM
        
        .const:    {} > ISRAM
        
        .switch:    {} > ISRAM
        
        .cio:     {} > ISRAM
        
        .trace: fill = 0x0 {
           _SYS_PUTCBEG = .;
           . += 0x200;
           _SYS_PUTCEND = . - 1;
        } > ISRAM
        
        .sys:     {} > ISRAM
        
        .bios:    {} > ISRAM
        
        .stack: fill=0xc0ffee {
            GBL_stackbeg = .;
            *(.stack)
            GBL_stackend = GBL_stackbeg + 0x800 - 1;
            _HWI_STKBOTTOM = GBL_stackbeg + 0x800 - 4 & ~7;
            _HWI_STKTOP = GBL_stackbeg;
        } > ISRAM
        
        .sts: {
             STS_A_TABBEG = .;
            _STS_A_TABBEG = .;
            /* no STS objects */
            STS_A_TABEND = .;
            _STS_A_TABEND = .;
             STS_A_TABLEN = (. - _STS_A_TABBEG) / 16;
            _STS_A_TABLEN = (. - _STS_A_TABBEG) / 16;
        } > ISRAM
        
        .rtdx_data: {}  > ISRAM
        
        .rtdx_text: {}  > ISRAM
        
        .hst: {
             HST_A_TABBEG = .;
            _HST_A_TABBEG = .;
            /* no HST objects */
            HST_A_TABEND = .;
            _HST_A_TABEND = .;
             HST_A_TABLEN = (. - _HST_A_TABBEG) / 20;
            _HST_A_TABLEN = (. - _HST_A_TABBEG) / 20;
        } > ISRAM
        
        .dsm: {} > ISRAM
        
        .hwi: {}  > ISRAM
        
        .args: fill=0 {
            *(.args)
            . += 0x8;
        } > ISRAM
        
        .tsk: {
            *(.tsk)
        } > ISRAM
        
        .TSK_idle$stk: {
            *(.TSK_idle$stk)
        } > ISRAM
        
        .control1$stk: {
            *(.control1$stk)
        } > ISRAM
        
        .control2$stk: {
            *(.control2$stk)
        } > ISRAM
        
        .periodic$stk: {
            *(.periodic$stk)
        } > ISRAM
        
        .control5$stk: {
            *(.control5$stk)
        } > ISRAM
        
        .control3$stk: {
            *(.control3$stk)
        } > ISRAM
        
        .control4$stk: {
            *(.control4$stk)
        } > ISRAM
        
        .dspboot$stk: {
            *(.dspboot$stk)
        } > ISRAM
        
        .ramp1$stk: {
            *(.ramp1$stk)
        } > ISRAM
        
        .control6$stk: {
            *(.control6$stk)
        } > ISRAM
        
        .control7$stk: {
            *(.control7$stk)
        } > ISRAM
        
        .control8$stk: {
            *(.control8$stk)
        } > ISRAM
        
        .ramp2$stk: {
            *(.ramp2$stk)
        } > ISRAM
        
        .interconnect$stk: {
            *(.interconnect$stk)
        } > ISRAM
        
        .test_vc3$stk: {
            *(.test_vc3$stk)
        } > ISRAM
        
        .log: {
             LOG_A_TABBEG = .;
            _LOG_A_TABBEG = .;
            *(.log)
            LOG_A_TABEND = .;
            _LOG_A_TABEND = .;
             LOG_A_TABLEN = (. - _LOG_A_TABBEG) / 24;
            _LOG_A_TABLEN = (. - _LOG_A_TABBEG) / 24;
        } > ISRAM
        
        .printf (COPY): {} > ISRAM
        
        /* LOG_system buffer */
        .LOG_system$buf: align = 0x800 fill = 0xffffffff {} > ISRAM
        
        /* ces_log buffer */
        .ces_log$buf: align = 0x400 fill = 0xffffffff {} > ISRAM
        
        .pip: {
             PIP_A_TABBEG = .;
            _PIP_A_TABBEG = .;
            /* no PIP objects */
            PIP_A_TABEND = .;
            _PIP_A_TABEND = .;
             PIP_A_TABLEN = (. - _PIP_A_TABBEG) / 100;
            _PIP_A_TABLEN = (. - _PIP_A_TABBEG) / 100;
        } > ISRAM
        
        .gio:     {} > ISRAM
        
        .text:    {} > SDRAM
        
        frt:    {} > SDRAM
        
        .SDRAM$heap: {
            SDRAM$B = .;
            _SDRAM_base = .;
            SDRAM$L = 0x400000;
            _SDRAM_length = 0x400000;
            . += 0x400000;
        } > SDRAM
        
}
