Return physical address from virtual address ?

hychon hychon at
Fri Jul 20 19:16:31 EST 2001

Hi !!

I am working a HDLC program (not device driver) as Embedded Linux
system  , that  used  SCC2 on the MPC860T target board .

I worked initialzed  SCC2 and allocat memory buffer  with the
kernel-2.2.13 based on PowerPC arch .

In my program,  I allocated  the BD (Buffer Descriptor)  in  a temporary
place of DPMEM.

 RxTxBD = (BDRINGS *)(&IMMR->udata_bd[0x600]);
      IMMR->PRAM[PAGE2].pg.scc.h.rbase = (UHWORD)&RxTxBD->RxBD[0];   /*
1 */
      IMMR->PRAM[PAGE2].pg.scc.h.rbase =
(UHWORD)0x2E00;                                /* 2 */

 case 1 :  BD state not change and down .the system
 case 2 :  BD state are change

I think that  the RBASE and TBASE in SCC PARAM is a physical address of
Buffer Descriptor

I want to get a place of BD  in  DPMEM itself  and  retun  as  physical
address. (as if ,  CPM  get a BD pointer  in commproc.c file )

Question1) How to get  a place(pointer) of BD  in DPMEM  and give RBASE
(TBASE)  the physical address ?

 And Buffer are allocated  in a virtual area , by following
    mem_addr_buf1 = mmap(0,1024,(PROT_READ|PROT_WRITE),MAP_SHARED,
    buf = (unsigned char *)mem_addr_buf1;

 when  I write  buf  as  Buffer addr of BD,  that do not change  Buffer
(BD) state

I think that  don't find the buffer address
and the Buffer pointer of BD structure was recognized as physical
address of  the Buffer (buf) .

Question2) How to get a buffer address pointer of BD struct (a place of
Buffer) from kernel (virtual address) as physical address?

Help me !

** Sent via the linuxppc-embedded mail list. See

More information about the Linuxppc-embedded mailing list