ENTRY(Init)

SECTIONS {
	. = 0x2010000;

	.text :
	ALIGN(4)
	{
		asm/crt0.o(.text);
		src/main.o(.text);
		src/rtc.o(.text);
		src/flash.o(.text);
	} =0

	lib_text :
	ALIGN(4)
	{
		*libagb_flash.a:agb_flash.o(.text);
		*libagb_flash.a:agb_flash_1m.o(.text);
		*libagb_flash.a:agb_flash_mx.o(.text);
        *libagbsyscall.a:ArcTan2.o(.text);
        *libagbsyscall.a:BgAffineSet.o(.text);
        *libagbsyscall.a:CpuFastSet.o(.text);
        *libagbsyscall.a:CpuSet.o(.text);
        *libagbsyscall.a:Div.o(.text);
        *libagbsyscall.a:Mod.o(.text);
        *libagbsyscall.a:LZ77UnCompVram.o(.text);
        *libagbsyscall.a:LZ77UnCompWram.o(.text);
        *libagbsyscall.a:MultiBoot.o(.text);
        *libagbsyscall.a:ObjAffineSet.o(.text);
        *libagbsyscall.a:RLUnCompVram.o(.text);
        *libagbsyscall.a:RLUnCompWram.o(.text);
        *libagbsyscall.a:RegisterRamReset.o(.text);
        *libagbsyscall.a:SoftReset.o(.text);
        *libagbsyscall.a:Sqrt.o(.text);
        *libagbsyscall.a:VBlankIntrWait.o(.text);
		*libsiirtc.a:siirtc.o(.text);
        *libgcc.a:_call_via_rX.o(.text);
        *libgcc.a:_modsi3.o(.text);
        *libgcc.a:_umodsi3.o(.text);
        *libgcc.a:_dvmd_tls.o(.text);
	} =0

	.rodata :
	ALIGN(4)
	{
	    src/main.o(.rodata);
	    src/rtc.o(.rodata);
	    src/flash.o(.rodata);
	} =0

	lib_rodata :
	ALIGN(4)
	{
        *libagb_flash.a:agb_flash.o(.rodata);
        *libagb_flash.a:agb_flash_1m.o(.rodata);
        *libagb_flash.a:agb_flash_mx.o(.rodata);
        *libagb_flash.a:agb_flash_le.o(.rodata);
        *libsiirtc.a:siirtc.o(.rodata);
	}

	. = 0x2020000;

	ewram (NOLOAD) :
	ALIGN(4)
	{
<EWRAM>
	}

	. = 0x3001000;

	iwram (NOLOAD) :
	ALIGN(4)
	{
<BSS>
    . = 0x40;
<COMMON>
		end = .;
	}

	. = 0x8000000;

	RS_Rom (NOLOAD) :
	ALIGN(4)
	{
		_start = .;
		. += 4;
		RomHeaderNintendoLogo = .;
		. += 156;
		RS_RomHeader = .;
        RomHeaderGameTitle = .;
        . += 12;
        RomHeaderGameCode = .;
        . += 4;
        RomHeaderMakerCode = .;
        . += 2;
        RomHeaderMagic = .;
        . += 1;
        RomHeaderMainUnitCode = .;
        . += 1;
        RomHeaderDeviceType = .;
        . += 1;
        RomHeaderReserved1 = .;
        . += 7;
        RomHeaderSoftwareVersion = .;
        . += 1;
        RomHeaderChecksum = .;
        . += 1;
        RomHeaderReserved2 = .;
        . += 6;
        GPIOPortData = .;
        . += 2;
        GPIOPortDirection = .;
        . += 2;
        GPIOPortReadEnable = .;
	} =0

	/DISCARD/ :
	{
		*(*);
	}
}
