Re: sti() does not work.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Steven Liu wrote:
> Hi All:
> 
> I am working on the porting Linux to mips R3000 and  have a problem
> about sti( ) which is called in start_kernel( ).
> 
> As we know, sti() is defined as __sti( ) in the
> include/asm-mips/system.h:
>  
> extern __inline__ void  __sti(void)
> {
> 	__asm__ __volatile__(
> 		".set\tnoreorder\n\t"
> 		".set\tnoat\n\t"
> 		"mfc0\t$1,$12\n\t"
> 		"ori\t$1,0x1f\n\t"
> 		"xori\t$1,0x1e\n\t"
> 		"mtc0\t$1,$12\n\t"               /* <----- problem  here
> ! */

Here should follow some nop's on a MIPS I system to make sure $12
is written (why is noreorder used here?).

> 		".set\tat\n\t"
> 		".set\treorder"
> 		: /* no outputs */
> 		: /* no inputs */
> 		: "$1", "memory");
> }

HTH,
Thiemo


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux