Commit b704f034 by Ulrich Weigand Committed by Ulrich Weigand

spu_mfcio.h (mfc_begin_critical_section): New function.

	* config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
	(mfc_end_critical_section): Likewise.

From-SVN: r139570
parent 4f538d42
2008-08-25 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> 2008-08-25 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* config/spu/spu_mfcio.h (mfc_begin_critical_section): New function.
(mfc_end_critical_section): Likewise.
2008-08-25 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Propagate
all type qualifiers from element type to vector type. all type qualifiers from element type to vector type.
......
...@@ -289,6 +289,34 @@ typedef struct mfc_list_element { ...@@ -289,6 +289,34 @@ typedef struct mfc_list_element {
#define spu_write_srr0(srr0) spu_writech(SPU_WrSRR0,srr0) #define spu_write_srr0(srr0) spu_writech(SPU_WrSRR0,srr0)
#define spu_read_srr0() spu_readch(SPU_RdSRR0) #define spu_read_srr0() spu_readch(SPU_RdSRR0)
/* Interrupt-Safe Critical Sections */
static __inline__ unsigned int mfc_begin_critical_section (void)
__attribute__ ((__always_inline__));
static __inline__ unsigned int
mfc_begin_critical_section (void)
{
#ifdef SPU_MFCIO_INTERRUPT_SAFE
unsigned int __status = spu_read_machine_status ();
spu_idisable ();
return __status;
#else
return 0;
#endif
}
static __inline__ void mfc_end_critical_section (unsigned int)
__attribute__ ((__always_inline__));
static __inline__ void
mfc_end_critical_section (unsigned int __status __attribute__ ((__unused__)))
{
#ifdef SPU_MFCIO_INTERRUPT_SAFE
if (__status & 1)
spu_ienable ();
#endif
}
/* MFC Tag Manager */ /* MFC Tag Manager */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment