Traditionally, all compiling of FreeBSD has been done on FreeBSD; for new architectures, that's done with a cross-compile. So in that traditional world, the first things needs to be to set up the compiler so it can output the desired instruction set. Today, FreeBSD uses the CLANG compiler on non-obsolete platforms, so you'll have to set that up. See the comments in "man arch" about compilers.
Only recently has it become possible to cross-compile FreeBSD from Linux. And if you look at that project, it still has open issues. One of the prerequisites is recent version of the CLANG compiler. So you will have to set up CLANG to generate code for you architecture either way.
So I can see at least the following necessary steps:
1. Add support for your architecture to CLANG.
2. Modify the kernel itself for architecture-specifics (paging, protection, memory model, ...)
3. Port whatever device drivers you need.
4. Work out the booting mechanism.
Compared to all these steps, trying to do the initial compile on Linux versus FreeBSD is a minor change. I would probably set up a FreeBSD cluster first (using whatever supported hardware you have available, typically Intel or AMD), and use that as a cross-compiling host. It's just easier this way, then you are doing things the traditional and well-tested way.
Only recently has it become possible to cross-compile FreeBSD from Linux. And if you look at that project, it still has open issues. One of the prerequisites is recent version of the CLANG compiler. So you will have to set up CLANG to generate code for you architecture either way.
So I can see at least the following necessary steps:
1. Add support for your architecture to CLANG.
2. Modify the kernel itself for architecture-specifics (paging, protection, memory model, ...)
3. Port whatever device drivers you need.
4. Work out the booting mechanism.
Compared to all these steps, trying to do the initial compile on Linux versus FreeBSD is a minor change. I would probably set up a FreeBSD cluster first (using whatever supported hardware you have available, typically Intel or AMD), and use that as a cross-compiling host. It's just easier this way, then you are doing things the traditional and well-tested way.