In the two pass build, the application logic is built during the first phase, pass 1. In that phase, the application may generate and install source files in the pass1/directory. The operating system is built during phase 2 of the build. At that time, those source files in the pass1/ directory will be built and incorporated into the kernel address space.
The primary purpose of the pass1/ directory is to such application-generated kernel symbol tables. For an example of the use of this feature, look at apps/examples/module/drivers/Makefile. Kernel symbol tables are needed to support kernel modules. Of course, addition board-specific logic in, say, configs/<board>/src would have to be included to make use of the application-installed symbol tables.