The macro is in the current form in order to accomodate switching copyin/copyout to use it. Note the resulting code is not big for the other routines as they don't have to handle overlap. It provides a win of similar nature to the one seen with memset.
Details
Details
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
Can you show me one other use of the macro ? In particular, I am curious about other begin/end definitions.
Comment Actions
I did not finish copyin/copyout yet. The macro has 2 exit points for non-overlapping case. The idea is to use it inside existing COPYIN/COPYOUT macros with something of this sort:
.macro COPYOUT_BEGIN .endm .macro COPYOUT_END SMAP_ENABLE \smap xorl %eax,%eax movq %rax,PCB_ONFAULT(%r11) POP_FRAME_POINTER .endm
For initial commit I can drop the two args. Will make it easier to import to libc.
They can be added later.
Comment Actions
I do not care much about these two single-use arguments. I am more worried that to understand the flow it is easier to read disassembly than source code.