To support multi-core, a macro is defined in Config.h:
#define CONFIG_SMP 1
After you define a macro, you are prompted to not find Asm/spinlock_types.h, which is used to define two structures and two macros, as follows:
#ifndef __ASM_SPINLOCK_TYPES_H
#define __ASM_SPINLOCK_TYPES_H
#ifndef __LINUX_SPINLOCK_TYPES_H
# error "please don't include this file directly"
#endif
typedef struct {
volatile unsigned int lock;
} raw_spinlock_t;
#define __RAW_SPIN_LOCK_UNLOCKED { 0 }
typedef struct {
volatile unsigned int lock;
} raw_rwlock_t;
#define __RAW_RW_LOCK_UNLOCKED { 0 }
#endif
Here, because I don't know the exact meaning of __raw_spin_lock_unlocked and __raw_rw_lock_unlocked, we first define it as 0, and LOCK seems to be defined as the type of testset_t, for the time being.
Of course, since Uclinux does not support SMP, this file must be created by hand and placed in the Include/asm directory.