:: Why Would I Want to Dump the Bootloader?
While researching the security model of my UA65ES8000 TV, I found I needed to dump the bootloader since it is the root of trust for it. Since I wasn't able to find any info on how to do this I thought I'd post my method and the process I followed to help others who may want to dump their own. All reverse engineering was done in the interest of interoperability. And be warned that attempting what I describe could brick your TV.
ONLY TRY THIS IF YOU KNOW WHAT YOU ARE DOING!
:: Why Can't I Dump the Bootloader?
The "bootloader area" is different to "user area" in the emmc flash present in the TV. A different mode is used to access each area, so "bootloader mode" lets you access the bootloader, and "user mode" lets you access the user area. While this can limit access to the bootloader, I imagine the main reason this is done is to stop accidental bootloader corruption. At power on time the flash is in bootloader mode so it can execute the bootloader. It then gets switched to user mode and stays in this mode to load the rest of the system. So when we run the linux "dd" command, we can dump all partitions in the user area because we are currently in user mode. However we cannot access and dump the bootloader until the mode gets changed to bootloader mode. (This is my understand of how the flash works anyway, I could be wrong

:: So How Do I Get Access to the Bootloader?
juuso pointed out that there is a user mode program present on the TV called "mmc.restore" which is able to write to the bootloader area. I assumed that since this program would need to access the bootloader area in order to write to it, it would be a good place to start looking. So I reversed mmc.restore and found that it uses ioctls write to the bootloader area. This suggests that either the kernel or a kernel module would handle these ioctls. After reversing a bit of the kernel I found that it contained the handlers for these ioctls. Then I looked in the sourcecode provided by samsung and found that the ioctl handlers were in there, albeit a bit different to what was in my kernel binary.
The ioctl handler sourcecode is in "VDLinux_2.6.35.11\linux-2.6.35.11\drivers\mmc\card\block.c" from the "UNxxES8xxx.zip" sourcecode pack from samsung.
The function mmc_ioctl() is the main handler code, and the ioctl values are:
#define RESTORE_BOOT_PARTITION 0x5628
#define RESTORE_PARTITION 0x5629
The code makes use of the mmc_restore_partition() function to write the bootloader, and a closer look at the source for that function shows that they nicely included a flag to select whether to read or write the bootloader. So it looks like there is support for reading in the code, just no ioctl handler pointing to it. However looking back into the real kernel binary from my TV I found that this flag did not exist and the mmc_restore_partition() function had no read support.
So now I knew that I needed to add read support to the kernel and add an ioctl to execute that read functionality. Thankfully after reading the provided sourcecode I knew what was required to do so.
:: Ok, Dump it Already!
So wrote a (linux) user mode app that will mmap() kernel space and patch it while it's running. It will alter the mmc_restore_partition() function to only read (instead of only write) and alter the ioctl handlers to handle reading instead of writing of data. The user mode app would then call the altered ioctls to perform the reading out of the bootloader.
I double checked everything, crossed my fingers and ran it. Thankfully it worked correctly and dumped my bootloader to a file.

:: How Do I Repeat Your Success?
Download my mmctools source and build them for your system. This pack contains:
* mmcdump - to patch the kernel and dump the bootloader
* mmcrestore - source code of mmc.restore program (reversed for interoperability)
* mmcsmart - an app to dump smart data from your emmc flash
Unless you are running the same firmware as my TV you *will* have to edit mmcdump to dump your bootloader. The editing requires being able to disassemble your TVs kernel and make whatever changes are required to the ARM assembly code patches to support your tv.
These tools do not come prebuilt because if you don't know how to build them, then you shouldn't be running them.
Once built, dump it by doing:
mmcdump /dev/mmcblk0p0 /tmp/bootloader.bin