The NAND must be detected as New3DS. This can be done by examining the encryption types of the partitions indicated in the NCSD header - New3DS has an encryption type not used on Old3DS. Kernel11/Luma3DS uses CFG11_SOCINFO to determine if it's running on a New3DS, and there seems to be an MCU register that says what model the system is (unsure if that's relevant).
FCRAM must be doubled from 128 MB to 256 MB. Easy enough.
ARM9 internal memory must be increased from 1 MB to 1.5 MB. Also easy.
ARM11 core count must be doubled. Aside from the obvious, this also involves messing with the MPCore PMR so that the two extra cores can receive interrupts, and the boot ROM overlay must be emulated so that the two cores aren't stuck in an infinite loop.
It should be possible to overclock the ARM11 up to 3x the original speed (268 MHz => 804 MHz). The scheduler will need to be rewritten for this, as it is designed to treat 268 MHz as the base quantum. Perhaps the easiest solution is to treat 804 MHz as the base quantum and adjust how many cycles the ARM11 gets depending on its clock rate.
QTM memory must be added - this is 4 MB of additional memory starting at 0x1F000000 on the ARM11 side.
Likely additional hardware registers will need to be implemented or at least stubbed.
This seems like a lot, but almost half of it is just adding more memory. The tricky parts are solely related to the two additional cores and the clock multiplier.
In no particular order...
This seems like a lot, but almost half of it is just adding more memory. The tricky parts are solely related to the two additional cores and the clock multiplier.