// Memory Configuration File
//
// Description:
//  A memory configuration file contains commands that define the legally accessible
//  areas of memory for your specific board. Useful for example when the debugger
//  tries to display the content of a "char *" variable, that has not yet been initialized.
//  In this case the debugger may try to read from a bogus address, which could cause a
//  bus error.
//
// Board:
//  Freescale MCF52259
//
// Reference:
//  


// All reserved ranges read back 0xBABA...
reservedchar 0xBA

address IPSBAR_BASE 0x40000000

usederivative "MCF52259"

//         Memory Map:
//         ----------------------------------------------------------------------
range      0x00000000 0x0007FFFF 4 Read				// 512 KByte Internal Flash Memory
reserved   0x00080000 0x1FFFFFFF
range      0x20000000 0x2000FFFF 4 ReadWrite                	// 64 Kbytes Internal SRAM
reserved   0x20010000 0x3FFFFFFF 
//         $IPSBAR_BASE 		$IPSBAR_BASE + 0x1FFFFF // Memory Mapped Registers
reserved   $IPSBAR_BASE + 0x200000 	0xFFFFFFFF
