- 论坛徽章:
- 0
|
先感謝你的解說
小弟這邊有一點想不透的是
當Run time時,假設有一個dirver去呼叫 virt_to_phys(x)
從下面來看- #define __PV_BITS_31_24 0x81000000
- extern unsigned long __pv_phys_offset;
- #define PHYS_OFFSET __pv_phys_offset
- #define __pv_stub(from,to,instr,type) \
- __asm__("@ __pv_stub\n" \
- "1: " instr " %0, %1, %2\n" \
- " .pushsection .pv_table,\"a\"\n" \
- " .long 1b\n" \
- " .popsection\n" \
- : "=r" (to) \
- : "r" (from), "I" (type))
- static inline unsigned long __virt_to_phys(unsigned long x)
- {
- unsigned long t;
- __pv_stub(x, t, "add", __PV_BITS_31_24);
- return t;
- }
复制代码 等於是去做
1 : add t,x,0x81000000
" .pushsection .pv_table,\"a\"\n" \
" .long 1b\n" \
" .popsection\n"
我比較不解的是做完上面指令之後, t為何可以是該pa |
|