Messages in this thread | | | Subject | Re: [PATCH v7 1/4] LoongArch: Simulate branch and PC instructions | From | Tiezhu Yang <> | Date | Wed, 7 Dec 2022 17:13:54 +0800 |
| |
On 12/07/2022 11:06 AM, Huacai Chen wrote: > Hi, Tiezhu, > > On Fri, Dec 2, 2022 at 9:08 PM Tiezhu Yang <yangtiezhu@loongson.cn> wrote: >> >> According to LoongArch Reference Manual, simulate branch and >> PC instructions, this is preparation for later patch. >>
...
>> +static inline unsigned long sign_extended(unsigned long val, unsigned int idx) >> +{ >> + if (val & (1UL << idx)) >> + return ~((1UL << (idx + 1)) - 1) | val; >> + else >> + return ((1UL << (idx + 1)) - 1) & val; >> +} > You can use existing __SIGNEX and its friends rather than reinvent them.
Thanks for your reminder.
In my opinion, this static inline function sign_extended() is much more clear and readable than the macro __SIGNEX() defined in alternative.c, the helper function bs_dest_*() seems redundant too, use "pc + sign_extended()" is a more straightforward way to simulate instruction according to the ISA Manual, so here I prefer to keep it as is.
Additionally, we can use sign_extended() instead of __SIGNEX() in alternative.c, the __SIGNEX() related code can be removed in a seperate patch in some day.
Thanks, Tiezhu
| |