linux-mips
[Top] [All Lists]

Error in set_cp0_ functions

To: "linux-mips@oss.sgi.com" <linux-mips@oss.sgi.com>
Subject: Error in set_cp0_ functions
From: Dan Aizenstros <dan@vcubed.com>
Date: Mon, 12 Mar 2001 12:51:53 -0500
Sender: owner-linux-mips@oss.sgi.com
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.

<Prev in Thread] Current Thread [Next in Thread>