|
From: | Richard Henderson |
Subject: | Re: [PATCH v2 14/30] bsd-user/arm/target_arch_thread.h: Routines to create and switch to a thread |
Date: | Tue, 2 Nov 2021 23:31:13 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 |
On 11/2/21 6:52 PM, Warner Losh wrote:
+ /* + * Thumb mode is encoded by the low bit in the entry point (since ARM can't + * execute at odd addresses). When it's set, set the Thumb bit (T) in the + * CPSR. + */ + if (entry & 0x1) { + cpsr_write(env, cpsr_read(env) | CPSR_T, CPSR_T, CPSRWriteByInstr); + }
This should be cpsr_write(env, (entry & 1) * CPSR_T, CPSR_T, CPSRWriteByInstr); because you need to clear T for arm mode as well.
+ /* FIXME - what to for failure of get_user()? */ + get_user_ual(regs->ARM_r2, stack + 8); /* envp */ + get_user_ual(regs->ARM_r1, stack + 4); /* envp */
Surely these values are present in image_info anyway? r~
[Prev in Thread] | Current Thread | [Next in Thread] |