src/cpu/ppc/vm/assembler_ppc.inline.hpp

Print this page

        

*** 53,82 **** address start = pc(); emit_address(addr); return start; } - #if !defined(ABI_ELFv2) // Emit a function descriptor with the specified entry point, TOC, and // ENV. If the entry point is NULL, the descriptor will point just // past the descriptor. ! inline address Assembler::emit_fd(address entry, address toc, address env) { FunctionDescriptor* fd = (FunctionDescriptor*)pc(); assert(sizeof(FunctionDescriptor) == 3*sizeof(address), "function descriptor size"); (void)emit_addr(); (void)emit_addr(); (void)emit_addr(); ! fd->set_entry(entry == NULL ? pc() : entry); ! fd->set_toc(toc); ! fd->set_env(env); return (address)fd; - } #endif // Issue an illegal instruction. 0 is guaranteed to be an illegal instruction. inline void Assembler::illtrap() { Assembler::emit_int32(0); } inline bool Assembler::is_illtrap(int x) { return x == 0; } --- 53,86 ---- address start = pc(); emit_address(addr); return start; } // Emit a function descriptor with the specified entry point, TOC, and // ENV. If the entry point is NULL, the descriptor will point just // past the descriptor. ! // If we are running in a little-endian environment (i.e. if ABI_ELFv2 is ! // defined) this function will emit no code and simply return the current PC) ! inline address Assembler::emit_fd() { ! #if defined(ABI_ELFv2) ! return pc(); ! #else FunctionDescriptor* fd = (FunctionDescriptor*)pc(); assert(sizeof(FunctionDescriptor) == 3*sizeof(address), "function descriptor size"); (void)emit_addr(); (void)emit_addr(); (void)emit_addr(); ! fd->set_entry(pc()); ! fd->set_toc(FunctionDescriptor::friend_toc); ! fd->set_env(FunctionDescriptor::friend_env); return (address)fd; #endif + } // Issue an illegal instruction. 0 is guaranteed to be an illegal instruction. inline void Assembler::illtrap() { Assembler::emit_int32(0); } inline bool Assembler::is_illtrap(int x) { return x == 0; }