Damien Zammit, le mar. 30 janv. 2024 01:55:32 +0000, a ecrit: > On 1/29/24 9:20 PM, Samuel Thibault wrote: > > Damien Zammit, le lun. 29 janv. 2024 10:07:30 +0000, a ecrit: > >> - ljmp $BOOT_CS, $M(0f) > >> + xorl %eax, %eax > >> + mov %cs, %ax > >> + shll $4, %eax > >> + addl $M(0f), %eax > >> + movl %eax, M(ljmp_offset32) > > This won't work with pipelined processors, which assume a complete > > separation between code and data, and will thus have already loaded > > the jmp instruction before your modify it. > > > > Rather either perform the relocation from the C code, or use a variable, > > which you can refer from the ljmp instruction. > > I was unable to make the ljmpl instruction assemble with a memory location > as the second argument.
(as discussed on IRC, you can as well directly write the absolute address into the jmp instruction, but perhaps a ljmpl *(%eax) is possible after all) Samuel