Hi All,
I am trying to understand the implementation of copy_from_user() and copy_to_user() implementation in linux. I know the basics of asm format. But i don't know what is
.section .fixup
.previous
.align 4
Can u please point me to a detailed documentation of asm details involving the above?
Thanks,
Seshikanth
320 * Tell gcc we read from memory instead of writing: this is because 321 * we do not write to any memory gcc knows about, so there are no 322 * aliasing issues. 323 */ 324#define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ 325 __asm__ __volatile__( \ 326 "1: mov"itype" %"rtype"1,%2\n" \ 327 "2:\n" \ 328 ".section .fixup,\"ax\"\n" \ 329 "3: movl %3,%0\n" \ 330 " jmp 2b\n" \ 331 ".previous\n" \ 332 ".section __ex_table,\"a\"\n" \ 333 " .align 4\n" \ 334 " .long 1b,3b\n" \ 335 ".previous" \ 336 : "=r"(err) \ 337 : ltype (x), "m"(__m(addr)), "i"(errret), "0"(err)) 338 339
--
Regards,
Seshikanth