1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * linux/arch/unicore32/include/asm/cputype.h
4  *
5  * Code specific to PKUnity SoC and UniCore ISA
6  *
7  * Copyright (C) 2001-2010 GUAN Xue-tao
8  */
9 #ifndef __UNICORE_CPUTYPE_H__
10 #define __UNICORE_CPUTYPE_H__
11 
12 #include <linux/stringify.h>
13 
14 #define CPUID_CPUID	0
15 #define CPUID_CACHETYPE	1
16 
17 #define read_cpuid(reg)							\
18 	({								\
19 		unsigned int __val;					\
20 		asm("movc	%0, p0.c0, #" __stringify(reg)		\
21 		    : "=r" (__val)					\
22 		    :							\
23 		    : "cc");						\
24 		__val;							\
25 	})
26 
27 #define uc32_cpuid		read_cpuid(CPUID_CPUID)
28 #define uc32_cachetype		read_cpuid(CPUID_CACHETYPE)
29 
30 #endif
31