- 論壇徽章:
- 0
|
在內(nèi)核中進(jìn)行文件讀寫(xiě)前,往往要對(duì)數(shù)據(jù)緩存地址進(jìn)行檢查,看是否可讀寫(xiě),下面這個(gè)宏就是用來(lái)從
addr處讀一個(gè)byte到x中,但是下面的匯編代碼只能看出大概(ldrdt,mov),求高手給予更多的
分析指點(diǎn)。
#define __get_user_asm_byte(x,addr,err) \
__asm__ __volatile__( \
"1: ldrbt %1,[%2],#0\n" \
"2:\n" \
" .section .fixup,\"ax\"\n" \
" .align 2\n" \
"3: mov %0, %3\n" \
" mov %1, #0\n" \
" b 2b\n" \
" .previous\n" \
" .section __ex_table,\"a\"\n" \
" .align 3\n" \
" .long 1b, 3b\n" \
" .previous" \
: "+r" (err), "=&r" (x) \
: "r" (addr), "i" (-EFAULT) \
: "cc") |
|