> On 7 Oct 2025, at 10:39, Daniel Almeida <[email protected]> wrote:
> 
> Hi Dan, thanks for the review!
> 
> […]
> 
>> 
>>> +static void
>>> +issue_store_multiple(u8 *command_stream, uint64_t kernel_va, uint32_t 
>>> constant)
>>> +{
>>> +               uint64_t opcode, reg_num, mov48, store_multiple, flush;
>>> +               uint64_t sr, src0, register_bitmap, offset;
>>> +
>>> +               // MOV48: Load the source register ([r68; r69]) with the 
>>> kernel address
>>> +               opcode = 0x1;
>>> +               reg_num = 68;
>>> +               mov48 = (opcode << 56) | (reg_num << 48) | kernel_va;
>>> +               mov48 = htole64(mov48);
>>> +               memcpy(&command_stream[0], &mov48, sizeof(mov48));
>>> +
>>> +               // MOV48: Load a known constant into r70
>>> +               opcode = 0x1;
>>> +               reg_num = 70;
>>> +               mov48 = (opcode << 56) | (reg_num << 48) | constant;
>>> +               mov48 = htole64(mov48);
>>> +               memcpy(&command_stream[8], &mov48, sizeof(mov48));
>>> +
>>> +               // STORE_MULTIPLE: Store the first register to the address 
>>> pointed to by [r68; r69]
>>> +               opcode = 0x15; // STORE_MULTIPLE
>>> +               sr = 70; // Starting from register r70
>>> +               src0 = 68; // Address pointed to by [r68; r69]
>>> +               register_bitmap = 1; // Store the first register
>>> +               offset = 0; // Offset
>>> +               store_multiple = (opcode << 56) | (sr << 48) | (src0 << 40) 
>>> |
>>> +                                                                           
>>>      (register_bitmap << 16) | offset;
>>> +               store_multiple = htole64(store_multiple);
>>> +               memcpy(&command_stream[16], &store_multiple, 
>>> sizeof(store_multiple));
>> 
>> // MOV48 r68, 0 on the below?
> 
> Wdym? / Why?
> 
> I want to clarify what you mean here because it was a bit tricky to get this 
> to
> work, so I am trying to be really mindful about any changes so that it
> doesn’t break.
> 

Oh, I now see that you probably also want this to be a comment placed before the
opcode like the FLUSH_CACHES below.

— Daniel

Reply via email to