It is not really a bootlaoder, it is your normal startup code (reset vector). It should what any other startup code does - initialize DATA and BSS segments, relocate vector table and stack pointer, and then jump to main.
Optionally, you can initialize some other hardware, but it all can be done from main().