#	===========================================================================
#		LinkSegment_PS2.lcf	©1999-2000 Metrowerks Inc. All rights reserved.
#	===========================================================================
#		
#		linker command file for PS2
#		
#		06/09/2000	kashima,	put dummy nop after .text section
#		06/09/2000	kashima,	change default entry address
#		02/10/2000	kashima,	add ALIGNALL before each section
#		01/15/2000	kashima,	support overlay by lcf generator
#		11/03/1999	kashima,	for SDK 1.10
#		10/22/1999	kashima,	change file extention from txt to lcf
#		10/20/1999	kashima,	put all sections into main
#		10/12/1999	kashima,	separate each sections
#		09/14/1999	kashima,	
#		
#	===========================================================================

MEMORY
{
	main	(RWX)	: ORIGIN = 0x100000,	LENGTH = 0x0
	heap	(RW)	: ORIGIN = AFTER(main),	LENGTH = 0x0
}

#FORCE_ACTIVE
#{
#}

KEEP_SECTION
{
	.vutext,
	.vudata,
	.vubss
}

#REF_INCLUDE
#{

SECTIONS
{
		#	define for crt0
		_heap_size	= -1;
		_stack	= -1;
		_stack_size	= 0x00100000;
		#	define for lcf
		_align_segment	= 0x80;

	.main	:
	{
		#	text sections
		.	= ALIGN(0x80);
		crt0.s	(.text)
		.	= ALIGN(0x10);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.text)
		WRITEW	0x0;	# text section patch for EE pipeline
		WRITEW	0x0;	# text section patch for EE pipeline
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.vutext)

		#	.reginfo
		crt0.s	(.reginfo)

		#	data sections
		__data_start	= .;
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.data)
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.vudata)
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.rodata)
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.rdata)

		#	static initializers
		.	= ALIGN(0x10);
		ALIGNALL(0x4);
		GROUP(ROOT)	(.init)
		.	= ALIGN(0x10);
		ALIGNALL(0x4);
		__static_init	= .;
		GROUP(ROOT)	(.ctor)
		__static_init_end	= .;

		#	.vtables
		.	= ALIGN(0x10);
		ALIGNALL(0x4);
		*	(.vtables)

		#	exception table
		.	= ALIGN(0x10);
		__exception_table_start__	= .;
		__exception_table_end__	= .;

		#	addresses for each overlay module
		.	= ALIGN(0x10);
		_overlay_group_addresses	= .;
		WRITEW ADDR(.main);	#

		__data_end	= .;
		__data_size	= __data_end - __data_start;

		#	the address of gp register
		_gp	= ALIGN(128) + 0x7FF0;

		#	literal
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		LITERAL

		#	small data sections
		.	= ALIGN(0x80);
		ALIGNALL(0x4);
		*	(.sdata)
		.	= ALIGN(0x80);
		_fbss	= .;
		ALIGNALL(0x4);
		*	(.sbss)
		ALIGNALL(0x4);
		*	(.scommon)
		ALIGNALL(0x4);
		*	(SCOMMON)

		#	bss sections
		__bss_start	= .;
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.bss)
		ALIGNALL(0x8);
		GROUP(ROOT)	(.common)
		ALIGNALL(0x8);
		GROUP(ROOT)	(COMMON)
		.	= ALIGN(0x80);
		ALIGNALL(0x8);
		GROUP(ROOT)	(.vubss)
		ALIGNALL(0x8);
		__bss_end	= .;
		__bss_size	= __bss_end - __bss_start;

		.	= ALIGN(_align_segment);

	}	>	main

	.heap	:
	{
		#	to get the address for heap
		end	= .;
		_end	= .;
	}	>	heap


}

#	===========================================================================
#		end of lcf	(auto-generated by pre-linker for PS2)
#	===========================================================================
