There is a guide and an example here: EmutexLabs. But it is only to configure the SPI as master. I will investigate how to configure it as slave.
For now, the only information I can recommend you to check is this document, in the SPI section, where there is a brief explanation about the slave mode in Edison but there is nothing about how to configure it: Intel® Edison Boards and Compute Modules — Intel® Edison Compute Module Hardware Guide. I will check and if I find any useful information I will post it here.
Assuming I need to write (or modify) a SPI Slave driver, can you point me to a document that describes the SPI registers and how they control the SPI hardware?
All Edison documentation can be found here: Intel Customer Support
To use the Edison as Slave, I would suggest to write a program (C, Python, etc) trying to emulate a SPI port using different pins as GPIO, for example 3 as MISO, 4 as MOSI, 5 as CLK, 6 as CS. The program would have a while loop monitoring the CS, when CS goes high then the program goes into another while loop for CLK. The program reads MOSI high or low bits, add them to an array and convert it to byte, then it responds to the Master on MISO with the same protocol.
This link might be useful for you as well: http://www.rpi.edu/dept/ecse/mps/Coding_SPI_sw.pdf
Personally I would be careful doing this at user mode priority levels - if your code got pre-empted in the midst of a loop it will ruin your whole day.
Reason I mention priority levels is because at some elevated real-time priority levels (ON SOME OS's - not sure about linux) you will not get pre-empted.