title: Raspberry 5 baremetal detect board keywords:raspi5,asm,c,kernel,arm64 # Raspberry 5 baremetal detect board Baremetal code snippet on how to detect what raspi board you are running on ```c int get_raspi_board() { unsigned int reg; int ret=0; /* read the system register */ #if __aarch64__ asm volatile ("mrs %x0, midr_el1" : "=r" (reg)); #else asm volatile ("mrc p15,0,%0,c0,c0,0" : "=r" (reg)); #endif /* get the PartNum, detect board and MMIO base address */ switch ((reg >> 4) & 0xFFF) { case 0xB76: ret=1; break; case 0xC07: ret=2; break; case 0xD03: ret=3; break; case 0xD08: ret=4; break; case 0xD0B: ret=5; default: break; } return ret; } ``` ## Links [1] https://wiki.osdev.org/Detecting_Raspberry_Pi_Board [2] [/writeup/raspberry5_baremetal_helloworld.md](/writeup/raspberry5_baremetal_helloworld.md) [3] https://github.com/DSERIOUSGUY/HobOS/blob/main/mmio.c