how linux kernel checks new ARM chipset or core

I want to know how linux kernel find detailed information such as, which specific ARM core is installed, type of DMA or interrupt controller, size of cache and so on.

plz let me know where to start.


thanks