Changeset 3eb75db3 in rtems
- Timestamp:
- 10/25/99 14:52:19 (24 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- c58674c
- Parents:
- bf61f225
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libbsp/powerpc/mcp750/dec21140/dec21140.c
rbf61f225 r3eb75db3 107 107 volatile unsigned long status; 108 108 volatile unsigned long counts; 109 unsigned long buf1,buf2;109 volatile unsigned char *buf1, *buf2; 110 110 }; 111 111 … … 144 144 struct arpcom arpcom; 145 145 rtems_irq_connect_data irqInfo; 146 struct MD*MDbase;147 char*bufferBase;146 volatile struct MD *MDbase; 147 volatile unsigned char *bufferBase; 148 148 int acceptBroadcast; 149 149 int rxBdCount; … … 153 153 154 154 unsigned int port; 155 unsigned int*base;155 volatile unsigned int *base; 156 156 unsigned long bpar; 157 157 … … 187 187 dec21140Enet_interrupt_handler (rtems_vector_number v) 188 188 { 189 unsigned int *tbase;189 volatile unsigned int *tbase; 190 190 unsigned long status; 191 191 … … 234 234 #define MDIO_DATA_READ 0x80000 235 235 236 static int mdio_read( unsigned int *ioaddr, int phy_id, int location)236 static int mdio_read(volatile unsigned int *ioaddr, int phy_id, int location) 237 237 { 238 238 int i, i3; … … 278 278 } 279 279 280 static int mdio_write( unsigned int *ioaddr, int phy_id, int location, int value)280 static int mdio_write(volatile unsigned int *ioaddr, int phy_id, int location, int value) 281 281 { 282 282 int i, i3; … … 328 328 #define EE_ERASE_CMD (7 << 6) 329 329 330 static int eeget16( unsigned int *ioaddr, int location)330 static int eeget16(volatile unsigned int *ioaddr, int location) 331 331 { 332 332 int i, i3; … … 369 369 { 370 370 rtems_status_code st; 371 unsigned int *tbase;371 volatile unsigned int *tbase; 372 372 union {char c[64]; unsigned short s[32];} rombuf; 373 373 int i, i2, i3; 374 char *cp, direction, *setup_frm, *eaddrs;374 volatile unsigned char *cp, direction, *setup_frm, *eaddrs; 375 375 unsigned long csr12_val, mii_reg0; 376 unsigned char *buffer;377 struct MD *rmd;376 volatile unsigned char *buffer; 377 volatile struct MD *rmd; 378 378 379 379 … … 418 418 */ 419 419 sc->rxBdCount = 0; 420 cp = ( char *)malloc((NRXBUFS+NTXBUFS)*(sizeof(struct MD)+ RBUF_SIZE) + PPC_CACHE_ALIGNMENT);420 cp = (volatile unsigned char *)malloc((NRXBUFS+NTXBUFS)*(sizeof(struct MD)+ RBUF_SIZE) + PPC_CACHE_ALIGNMENT); 421 421 sc->bufferBase = cp; 422 422 if ((unsigned int)cp & (PPC_CACHE_ALIGNMENT-1)) 423 cp = ( (unsigned int)cp + PPC_CACHE_ALIGNMENT) & ~(PPC_CACHE_ALIGNMENT-1);423 cp = (volatile unsigned char *) (((unsigned int)cp + PPC_CACHE_ALIGNMENT) & ~(PPC_CACHE_ALIGNMENT-1)); 424 424 #ifdef PCI_BRIDGE_DOES_NOT_ENSURE_CACHE_COHERENCY_FOR_DMA 425 425 if (_CPU_is_paging_enabled()) … … 429 429 PTE_CACHE_DISABLE | PTE_WRITABLE); 430 430 #endif 431 rmd = ( struct MD*)cp;431 rmd = (volatile struct MD*)cp; 432 432 sc->MDbase = rmd; 433 433 buffer = cp + ((NRXBUFS+NTXBUFS)*sizeof(struct MD)); 434 434 st_le32( (tbase+memCSR3), (long)((long)(sc->MDbase) + PREP_PCI_DRAM_OFFSET)); 435 435 for (i=0 ; i<NRXBUFS; i++){ 436 rmd->buf2 = 0; 437 rmd->buf1 = (unsigned long)(buffer + (i*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET); 438 if (i == NRXBUFS-1) 439 rmd->counts = 0xfec00000 | (RBUF_SIZE); 440 else 441 rmd->counts = 0xfcc00000 | (RBUF_SIZE); 436 rmd->buf2 = (volatile unsigned char *) 0; 437 rmd->buf1 = (buffer + (i*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET); 438 rmd->counts = 0xfcc00000 | (RBUF_SIZE); 442 439 rmd->status = 0x80000000; 443 440 rmd++; 444 441 } 445 442 /* 443 * mark last RX buffer. 444 */ 445 sc->MDbase [NRXBUFS-1].counts = 0xfec00000 | (RBUF_SIZE); 446 446 /* 447 447 * Init TX ring 448 448 */ 449 449 sc->txBdCount = 0; 450 st_le32( (tbase+memCSR4), (long)(( long)(rmd) + PREP_PCI_DRAM_OFFSET));451 rmd->buf2 = 0;452 rmd->buf1 = (unsigned long)(buffer + (NRXBUFS*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET);450 st_le32( (tbase+memCSR4), (long)(((long)(rmd)) + PREP_PCI_DRAM_OFFSET)); 451 rmd->buf2 = (volatile unsigned char *) 0; 452 rmd->buf1 = buffer + (NRXBUFS*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET; 453 453 rmd->counts = 0x62000000; 454 454 rmd->status = 0x0; … … 477 477 * Build setup frame 478 478 */ 479 setup_frm = (char *)((long)(rmd->buf1) - PREP_PCI_DRAM_OFFSET);479 setup_frm = rmd->buf1 - PREP_PCI_DRAM_OFFSET; 480 480 eaddrs = (char *)(sc->arpcom.ac_enaddr); 481 481 /* Fill the buffer with our physical address. */ … … 495 495 } 496 496 /* Add the broadcast address when doing perfect filtering */ 497 memset( setup_frm, 0xff, 12);497 memset((void*) setup_frm, 0xff, 12); 498 498 rmd->counts = 0x0a000000 | 192 ; 499 499 rmd->status = 0x80000000; … … 526 526 dec21140_rxDaemon (void *arg) 527 527 { 528 unsigned int *tbase;528 volatile unsigned int *tbase; 529 529 struct ether_header *eh; 530 530 struct dec21140_softc *dp = (struct dec21140_softc *)&dec21140_softc[0]; 531 531 struct ifnet *ifp = &dp->arpcom.ac_if; 532 532 struct mbuf *m; 533 struct MD *rmd;533 volatile struct MD *rmd; 534 534 unsigned int len; 535 535 char *temp; … … 556 556 temp = m->m_data; 557 557 m->m_len = m->m_pkthdr.len = len - sizeof(struct ether_header); 558 memcpy(temp, ( char *)((long)(rmd->buf1)-PREP_PCI_DRAM_OFFSET), len);558 memcpy(temp, (void*) (rmd->buf1-PREP_PCI_DRAM_OFFSET), len); 559 559 rmd->status = 0x80000000; 560 560 eh = mtod (m, struct ether_header *); … … 574 574 struct dec21140_softc *dp = ifp->if_softc; 575 575 volatile struct MD *tmd; 576 unsigned char *temp;576 volatile unsigned char *temp; 577 577 struct mbuf *n; 578 578 unsigned int len; 579 unsigned int *tbase;579 volatile unsigned int *tbase; 580 580 581 581 tbase = dp->base; … … 588 588 len = 0; 589 589 n = m; 590 temp = (char *)((long)(tmd->buf1)-PREP_PCI_DRAM_OFFSET);590 temp = tmd->buf1-PREP_PCI_DRAM_OFFSET; 591 591 592 592 for (;;){ 593 593 len += m->m_len; 594 memcpy( temp, (char *)m->m_data, m->m_len);594 memcpy((void*) temp, (char *)m->m_data, m->m_len); 595 595 temp += m->m_len ; 596 596 if ((m = m->m_next) == NULL) … … 689 689 dec21140_stop (struct dec21140_softc *sc) 690 690 { 691 unsigned int *tbase;691 volatile unsigned int *tbase; 692 692 struct ifnet *ifp = &sc->arpcom.ac_if; 693 693 … … 700 700 st_le32( (tbase+memCSR7), NO_IT); 701 701 st_le32( (tbase+memCSR6), CSR6_INIT); 702 free( sc->bufferBase);702 free((void*)sc->bufferBase); 703 703 } 704 704 -
c/src/lib/libbsp/powerpc/motorola_powerpc/dec21140/dec21140.c
rbf61f225 r3eb75db3 107 107 volatile unsigned long status; 108 108 volatile unsigned long counts; 109 unsigned long buf1,buf2;109 volatile unsigned char *buf1, *buf2; 110 110 }; 111 111 … … 144 144 struct arpcom arpcom; 145 145 rtems_irq_connect_data irqInfo; 146 struct MD*MDbase;147 char*bufferBase;146 volatile struct MD *MDbase; 147 volatile unsigned char *bufferBase; 148 148 int acceptBroadcast; 149 149 int rxBdCount; … … 153 153 154 154 unsigned int port; 155 unsigned int*base;155 volatile unsigned int *base; 156 156 unsigned long bpar; 157 157 … … 187 187 dec21140Enet_interrupt_handler (rtems_vector_number v) 188 188 { 189 unsigned int *tbase;189 volatile unsigned int *tbase; 190 190 unsigned long status; 191 191 … … 234 234 #define MDIO_DATA_READ 0x80000 235 235 236 static int mdio_read( unsigned int *ioaddr, int phy_id, int location)236 static int mdio_read(volatile unsigned int *ioaddr, int phy_id, int location) 237 237 { 238 238 int i, i3; … … 278 278 } 279 279 280 static int mdio_write( unsigned int *ioaddr, int phy_id, int location, int value)280 static int mdio_write(volatile unsigned int *ioaddr, int phy_id, int location, int value) 281 281 { 282 282 int i, i3; … … 328 328 #define EE_ERASE_CMD (7 << 6) 329 329 330 static int eeget16( unsigned int *ioaddr, int location)330 static int eeget16(volatile unsigned int *ioaddr, int location) 331 331 { 332 332 int i, i3; … … 369 369 { 370 370 rtems_status_code st; 371 unsigned int *tbase;371 volatile unsigned int *tbase; 372 372 union {char c[64]; unsigned short s[32];} rombuf; 373 373 int i, i2, i3; 374 char *cp, direction, *setup_frm, *eaddrs;374 volatile unsigned char *cp, direction, *setup_frm, *eaddrs; 375 375 unsigned long csr12_val, mii_reg0; 376 unsigned char *buffer;377 struct MD *rmd;376 volatile unsigned char *buffer; 377 volatile struct MD *rmd; 378 378 379 379 … … 418 418 */ 419 419 sc->rxBdCount = 0; 420 cp = ( char *)malloc((NRXBUFS+NTXBUFS)*(sizeof(struct MD)+ RBUF_SIZE) + PPC_CACHE_ALIGNMENT);420 cp = (volatile unsigned char *)malloc((NRXBUFS+NTXBUFS)*(sizeof(struct MD)+ RBUF_SIZE) + PPC_CACHE_ALIGNMENT); 421 421 sc->bufferBase = cp; 422 422 if ((unsigned int)cp & (PPC_CACHE_ALIGNMENT-1)) 423 cp = ( (unsigned int)cp + PPC_CACHE_ALIGNMENT) & ~(PPC_CACHE_ALIGNMENT-1);423 cp = (volatile unsigned char *) (((unsigned int)cp + PPC_CACHE_ALIGNMENT) & ~(PPC_CACHE_ALIGNMENT-1)); 424 424 #ifdef PCI_BRIDGE_DOES_NOT_ENSURE_CACHE_COHERENCY_FOR_DMA 425 425 if (_CPU_is_paging_enabled()) … … 429 429 PTE_CACHE_DISABLE | PTE_WRITABLE); 430 430 #endif 431 rmd = ( struct MD*)cp;431 rmd = (volatile struct MD*)cp; 432 432 sc->MDbase = rmd; 433 433 buffer = cp + ((NRXBUFS+NTXBUFS)*sizeof(struct MD)); 434 434 st_le32( (tbase+memCSR3), (long)((long)(sc->MDbase) + PREP_PCI_DRAM_OFFSET)); 435 435 for (i=0 ; i<NRXBUFS; i++){ 436 rmd->buf2 = 0; 437 rmd->buf1 = (unsigned long)(buffer + (i*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET); 438 if (i == NRXBUFS-1) 439 rmd->counts = 0xfec00000 | (RBUF_SIZE); 440 else 441 rmd->counts = 0xfcc00000 | (RBUF_SIZE); 436 rmd->buf2 = (volatile unsigned char *) 0; 437 rmd->buf1 = (buffer + (i*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET); 438 rmd->counts = 0xfcc00000 | (RBUF_SIZE); 442 439 rmd->status = 0x80000000; 443 440 rmd++; 444 441 } 445 442 /* 443 * mark last RX buffer. 444 */ 445 sc->MDbase [NRXBUFS-1].counts = 0xfec00000 | (RBUF_SIZE); 446 446 /* 447 447 * Init TX ring 448 448 */ 449 449 sc->txBdCount = 0; 450 st_le32( (tbase+memCSR4), (long)(( long)(rmd) + PREP_PCI_DRAM_OFFSET));451 rmd->buf2 = 0;452 rmd->buf1 = (unsigned long)(buffer + (NRXBUFS*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET);450 st_le32( (tbase+memCSR4), (long)(((long)(rmd)) + PREP_PCI_DRAM_OFFSET)); 451 rmd->buf2 = (volatile unsigned char *) 0; 452 rmd->buf1 = buffer + (NRXBUFS*RBUF_SIZE) + PREP_PCI_DRAM_OFFSET; 453 453 rmd->counts = 0x62000000; 454 454 rmd->status = 0x0; … … 477 477 * Build setup frame 478 478 */ 479 setup_frm = (char *)((long)(rmd->buf1) - PREP_PCI_DRAM_OFFSET);479 setup_frm = rmd->buf1 - PREP_PCI_DRAM_OFFSET; 480 480 eaddrs = (char *)(sc->arpcom.ac_enaddr); 481 481 /* Fill the buffer with our physical address. */ … … 495 495 } 496 496 /* Add the broadcast address when doing perfect filtering */ 497 memset( setup_frm, 0xff, 12);497 memset((void*) setup_frm, 0xff, 12); 498 498 rmd->counts = 0x0a000000 | 192 ; 499 499 rmd->status = 0x80000000; … … 526 526 dec21140_rxDaemon (void *arg) 527 527 { 528 unsigned int *tbase;528 volatile unsigned int *tbase; 529 529 struct ether_header *eh; 530 530 struct dec21140_softc *dp = (struct dec21140_softc *)&dec21140_softc[0]; 531 531 struct ifnet *ifp = &dp->arpcom.ac_if; 532 532 struct mbuf *m; 533 struct MD *rmd;533 volatile struct MD *rmd; 534 534 unsigned int len; 535 535 char *temp; … … 556 556 temp = m->m_data; 557 557 m->m_len = m->m_pkthdr.len = len - sizeof(struct ether_header); 558 memcpy(temp, ( char *)((long)(rmd->buf1)-PREP_PCI_DRAM_OFFSET), len);558 memcpy(temp, (void*) (rmd->buf1-PREP_PCI_DRAM_OFFSET), len); 559 559 rmd->status = 0x80000000; 560 560 eh = mtod (m, struct ether_header *); … … 574 574 struct dec21140_softc *dp = ifp->if_softc; 575 575 volatile struct MD *tmd; 576 unsigned char *temp;576 volatile unsigned char *temp; 577 577 struct mbuf *n; 578 578 unsigned int len; 579 unsigned int *tbase;579 volatile unsigned int *tbase; 580 580 581 581 tbase = dp->base; … … 588 588 len = 0; 589 589 n = m; 590 temp = (char *)((long)(tmd->buf1)-PREP_PCI_DRAM_OFFSET);590 temp = tmd->buf1-PREP_PCI_DRAM_OFFSET; 591 591 592 592 for (;;){ 593 593 len += m->m_len; 594 memcpy( temp, (char *)m->m_data, m->m_len);594 memcpy((void*) temp, (char *)m->m_data, m->m_len); 595 595 temp += m->m_len ; 596 596 if ((m = m->m_next) == NULL) … … 689 689 dec21140_stop (struct dec21140_softc *sc) 690 690 { 691 unsigned int *tbase;691 volatile unsigned int *tbase; 692 692 struct ifnet *ifp = &sc->arpcom.ac_if; 693 693 … … 700 700 st_le32( (tbase+memCSR7), NO_IT); 701 701 st_le32( (tbase+memCSR6), CSR6_INIT); 702 free( sc->bufferBase);702 free((void*)sc->bufferBase); 703 703 } 704 704 -
make/custom/mcp750.cfg
rbf61f225 r3eb75db3 86 86 # model => not used. 87 87 # Currently the sdata2 and sbss2 sections are empty => r2 is not used... 88 CFLAGS_OPTIMIZE_V=-O 2 -fno-keep-inline-functions -fvolatile-global -fvolatile-mstrict-align -mcpu=75088 CFLAGS_OPTIMIZE_V=-O4 -mmultiple -mstring -mstrict-align -mcpu=750 89 89 #CFLAGS_OPTIMIZE_V=-O4 -fno-keep-inline-functions -fvolatile-global -fvolatile -mstrict-align -mcpu=750 90 90
Note: See TracChangeset
for help on using the changeset viewer.