The Device Driver Programming manual, pub number 0890425-020, is a comprehensive guide on how to write your own kernel level device driver and integrate it into the kernel. There is a short information gap between the chapters on writing the driver (and how to multithread it and support DMA) and integrating it into the system which explains the necessary C compiler options and how to relocatably link your driver before including it in the kernel. Here it is in a nutshell: To compile your driver, you must use the following C compiler options: -c -O -Xa -F -F1 -Zelf -Zpic -Zlink=dynamic -Qchars_signed -Qno_float_varargs -Qno_float_reg_agg_move -Qtarget=ppc604 -D_PPC -D_NH -D_KERNEL -D_KERNEL_HEADERS -DSTATIC='' -DNO_RDMA -D_LARGEFILE64_SOURCE For details about what each of the (non -D) options mean, consult the C compiler man page cc(1), the Concurrent C Reference Manual, and Compilation Systems Volumes 1 and 2. After generating the .o file, you must link the .o file as a relocatable object (see ld(1)). The resulting file will be the Driver.o that's linked into the kernel using the idtools (see Chapter 9 of the Device Driver Programming manual). For example, say you created a driver for a serial I/O board. You name the driver source sio.c, with include file sio.h and a makefile, sio.mk. Optionally, you could make a subdirectory, sio.cf, where the relocatably linked Driver.o would be stored. The makefile would contain a line to compile sio.c with the above options to generate sio.o. After compilation, you would link sio.o as follows: ld -r -o sio.cf/Driver.o sio.o The Driver.o created would be the one integrated into the kernel using the idtools and procedures for creating the other components of the driver package, as described in the Device Driver Programming manual, Chapter 9.