Subject: Error in set_cp0_ functions

From: Dan Aizenstros <[email-masked]>
Date: Mon, 12 Mar 2001 12:51:53 -0500

Hello All,

There appears to be an error in the new set_cp0_ functions in
the mipsregs.h file.

#define __BUILD_SET_CP0(name,register)                          \
extern __inline__ unsigned int                                  \
set_cp0_##name(unsigned int set)                                \
{                                                               \
        unsigned int res;                                       \
                                                                \
        res = read_32bit_cp0_register(register);                \
        res |= ~set;                                            \
        write_32bit_cp0_register(register, res);                \
                                                                \
        return res;                                             \
}                                                               \

The line
	res |= ~set;
will set every bit except the bit you want to set.

It should be changed to
	res |= set;

Also in the mipsregs.h file the line

#define ST0_UM                 <1   <<  4)

should probably be

#define ST0_UM                 (1   <<  4)

I hope this helps.

Dan Aizenstros
Software Engineer
V3 Semiconductor Corp.

---

From: Ralf Baechle <[email-masked]>
Date: Mon, 12 Mar 2001 20:43:20 +0100

> There appears to be an error in the new set_cp0_ functions in

Thanks for the report, fixed.

  Ralf