/************************************************************************* * Processor-specific object file. Contains SFR definitions. *************************************************************************/ INPUT("processor.o") /************************************************************************* * Processor-specific peripheral libraries are optional *************************************************************************/ OPTIONAL("libmchp_peripheral.a") OPTIONAL("libmchp_peripheral_32MX795F512H.a") /************************************************************************* * For interrupt vector handling *************************************************************************/ PROVIDE(_vector_spacing = 0x00000001); _ebase_address = 0x9D002000; /*0x9FC01000;*/ /************************************************************************* * Memory Address Equates * _RESET_ADDR -- Reset Vector * _BEV_EXCPT_ADDR -- Boot exception Vector * _DBG_EXCPT_ADDR -- In-circuit Debugging Exception Vector * _DBG_CODE_ADDR -- In-circuit Debug Executive address * _DBG_CODE_SIZE -- In-circuit Debug Executive size * _GEN_EXCPT_ADDR -- General Exception Vector *************************************************************************/ _RESET_ADDR = 0xBFC00000; _BEV_EXCPT_ADDR = 0xBFC00380; _DBG_EXCPT_ADDR = 0xBFC00480; _DBG_CODE_ADDR = 0xBFC02000; _DBG_CODE_SIZE = 0xFF0; _GEN_EXCPT_ADDR = _ebase_address + 0x180; /************************************************************************* * Memory Regions * * Memory regions without attributes cannot be used for orphaned sections. * Only sections specifically assigned to these regions can be allocated * into these regions. * * The Debug exception vector is located at 0x9FC00480. * * The config_
sections are used to locate the config words at * their absolute addresses. *************************************************************************/ MEMORY { /*kseg0_program_mem (rx) : ORIGIN = 0x9D000100, LENGTH = 0x80000*/ /*kseg0_boot_mem : ORIGIN = 0x9FC00490, LENGTH = 0x970*/ /*kexception_mem : ORIGIN = 0x9FC01000, LENGTH = 0x1000*/ kseg0_program_mem (rx) : ORIGIN = 0x9D003800, LENGTH = 0x7C7FF /*App code. MAX address = 9D07FFFF */ kseg0_boot_mem : ORIGIN = 0x9D003000, LENGTH = 0x7F0 /* startup code */ exception_mem : ORIGIN = 0x9D002000, LENGTH = 0x1000 kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x490 debug_exec_mem : ORIGIN = 0xBFC02000, LENGTH = 0xFF0 config3 : ORIGIN = 0xBFC02FF0, LENGTH = 0x4 config2 : ORIGIN = 0xBFC02FF4, LENGTH = 0x4 config1 : ORIGIN = 0xBFC02FF8, LENGTH = 0x4 config0 : ORIGIN = 0xBFC02FFC, LENGTH = 0x4 kseg1_data_mem (w!x) : ORIGIN = 0xA0000000, LENGTH = 0x10000 sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000 configsfrs : ORIGIN = 0xBFC02FF0, LENGTH = 0x10 } /************************************************************************* * Configuration-word sections. Map the config-pragma input sections to * absolute-address output sections. *************************************************************************/ SECTIONS { .config_BFC02FF0 : { KEEP(*(.config_BFC02FF0)) } > config3 .config_BFC02FF4 : { KEEP(*(.config_BFC02FF4)) } > config2 .config_BFC02FF8 : { KEEP(*(.config_BFC02FF8)) } > config1 .config_BFC02FFC : { KEEP(*(.config_BFC02FFC)) } > config0 }