I must admit I am also stumped as to the location of sam.h. Presumably it contains the register definitions of registers. While wiring.c and friends give useful information about how to deal with the standard Arduino peripherals, like the ADC, DAC, GPIO and timers, it does not help when it comes to non standard things like the analog comparators - which is what I am interested in.
wiring.c and friends is found on my Mac (Yosimite) by right-clicking the Arduino app and opening the package.
/Applications/Arduino.app/Contents/Java/hardware/arduino/samd/cores/arduino. You can also find it for the Due (sam) and AVR cores which is reassuring. I may be just being plain stupid and overlooked something but sam.h seems not to be there.....
I did find however, sam.h for the sam3 cores (Due) at /Applications/Arduino.app/Contents/Java/hardware/arduino/sam/system/CMSIS/Device/ATMEL.
It also seems there is a standard way of addressing the registers for different cores.
I have not yet discovered if this also applies to the samd cores and not just the sam cores ( it seems to be just sam - but I might be wrong).
If you just need to access a few special registers (like me) it is probably possible to simply address the registers via defined offsets. The values of offsets are given in the Atmel SAM D21E / SAM D21G / SAM D21J datasheet.
My humble(?) opinion is that the the M0 PRO /Zero is a really powerful device that is a real quantum-leap beyond the AVR capabilities. To really make these advanced capabilities accessible, information about register definitions that can be used in the IDE is really badly needed.
Harry J. Whitlow