[PATCH 1/2] powerpc: Reject probes on instructions that can't be single stepped

Naveen N. Rao naveen.n.rao at linux.vnet.ibm.com
Wed Mar 30 23:03:46 AEDT 2022


Christophe Leroy wrote:
> 
> 
> Le 28/03/2022 à 19:20, Naveen N. Rao a écrit :
>> Michael Ellerman wrote:
>>> Murilo Opsfelder Araújo <mopsfelder at gmail.com> writes:
>>>> On 3/23/22 08:51, Naveen N. Rao wrote:
>>>>> +static inline bool can_single_step(u32 inst)
>>>>> +{
>>>>> +    switch (inst >> 26) {
>>>>
>>>> Can't ppc_inst_primary_opcode() be used instead?
>> 
>> I didn't want to add a dependency on inst.h. But I guess I can very well 
>> move this out of the header into some .c file. I will see if I can make 
>> that work.
> 
> Maybe use get_op() from asm/disassemble.h ?
> 
>> 
>>>>> +    case 31:
>>>>> +        switch ((inst >> 1) & 0x3ff) {
> 
> For that one you have get_xop() in asm/disassemble.h

Nice! I will use those.

> 
>>>>> +        case 4:        /* tw */
> 
> OP_31_XOP_TRAP
> 
>>>>> +            return false;
>>>>> +        case 68:    /* td */
> 
> OP_31_XOP_TRAP_64
> 
>>>>> +            return false;
>>>>> +        case 146:    /* mtmsr */
>>>>> +            return false;
>>>>> +        case 178:    /* mtmsrd */
>>>>> +            return false;
>>>>> +        }
>>>>> +        break;
>>>>> +    }
>>>>> +    return true;
>>>>> +}
>>>>> +
>>>>
>>>> Can't OP_* definitions from ppc-opcode.h be used for all of these 
>>>> switch-case statements?
>>>
>>> Yes please. And add any that are missing.
>> 
>> We only have OP_31 from the above list now. I'll add the rest.
> 
> Isn't there also OP_TRAP and OP_TRAP_64 ?

Ah, the list clearly isn't sorted, and there are some duplicates 
there :)


Thanks,
Naveen



More information about the Linuxppc-dev mailing list