1200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung /* 2200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung * Return a 32-bit value. 3200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung * 4200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung * for: return, return-object 5200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung */ 6200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung /* op vAA */ 7200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung .extern MterpThreadFenceForConstructor 8200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung JAL(MterpThreadFenceForConstructor) 9200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung lw ra, THREAD_FLAGS_OFFSET(rSELF) 10200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung move a0, rSELF 11200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung and ra, (THREAD_SUSPEND_REQUEST | THREAD_CHECKPOINT_REQUEST) 12200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung beqz ra, 1f 13200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung JAL(MterpSuspendCheck) # (self) 14200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung1: 15200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung GET_OPA(a2) # a2 <- AA 16200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung GET_VREG(v0, a2) # v0 <- vAA 17200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung move v1, zero 18200f040af3e4fe9e178cb63c90860d58d90ef665Douglas Leung b MterpReturn 19