[BACK]Return to bus_space.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / powerpc / powerpc

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/powerpc/powerpc/bus_space.c between version 1.20.24.1 and 1.21

version 1.20.24.1, 2011/01/07 02:00:21 version 1.21, 2010/02/25 23:31:48
Line 48  __KERNEL_RCSID(0, "$NetBSD$");
Line 48  __KERNEL_RCSID(0, "$NetBSD$");
   
 #if defined (PPC_OEA) || defined(PPC_OEA64) || defined (PPC_OEA64_BRIDGE)  #if defined (PPC_OEA) || defined(PPC_OEA64) || defined (PPC_OEA64_BRIDGE)
 #include <powerpc/spr.h>  #include <powerpc/spr.h>
 #include <powerpc/oea/spr.h>  
 #include <powerpc/oea/bat.h>  #include <powerpc/oea/bat.h>
 #include <powerpc/oea/cpufeat.h>  #include <powerpc/oea/cpufeat.h>
 #include <powerpc/oea/pte.h>  #include <powerpc/oea/pte.h>
   #include <powerpc/oea/spr.h>
 #include <powerpc/oea/sr_601.h>  #include <powerpc/oea/sr_601.h>
   
 extern unsigned long oeacpufeat;  extern unsigned long oeacpufeat;
Line 401  int
Line 401  int
 bus_space_init(struct powerpc_bus_space *t, const char *extent_name,  bus_space_init(struct powerpc_bus_space *t, const char *extent_name,
         void *storage, size_t storage_size)          void *storage, size_t storage_size)
 {  {
         if (t->pbs_extent == NULL && extent_name != NULL) {          if (t->pbs_extent == NULL) {
                 t->pbs_extent = extent_create(extent_name, t->pbs_base,                  t->pbs_extent = extent_create(extent_name, t->pbs_base,
                     t->pbs_limit-1, M_DEVBUF, storage, storage_size,                      t->pbs_limit-1, M_DEVBUF, storage, storage_size,
                     EX_NOCOALESCE|EX_NOWAIT);                      EX_NOCOALESCE|EX_NOWAIT);
Line 535  memio_map(bus_space_tag_t t, bus_addr_t 
Line 535  memio_map(bus_space_tag_t t, bus_addr_t 
                 return (EOPNOTSUPP);                  return (EOPNOTSUPP);
         }          }
   
         if (t->pbs_extent != NULL) {  
 #ifdef PPC_IBM4XX  #ifdef PPC_IBM4XX
                 /*          /*
                  * XXX: Temporary kludge.           * XXX: Temporary kludge.
                  * Don't bother checking the extent during very early bootstrap.           * Don't bother checking the extent during very early bootstrap.
                  */           */
                 if (extent_flags) {          if (extent_flags) {
 #endif  #endif
                 /*          /*
                  * Before we go any further, let's make sure that this           * Before we go any further, let's make sure that this
                  * region is available.           * region is available.
                  */           */
                 error = extent_alloc_region(t->pbs_extent, bpa, size,          error = extent_alloc_region(t->pbs_extent, bpa, size,
                     EX_NOWAIT | extent_flags);              EX_NOWAIT | extent_flags);
                 if (error) {          if (error) {
 #ifdef DEBUG  #ifdef DEBUG
                         printf("bus_space_map(%p[%x:%x], %#x, %#x) failed"                  printf("bus_space_map(%p[%x:%x], %#x, %#x) failed: %d\n",
                             ": %d\n",                      t, t->pbs_base, t->pbs_limit, bpa, size, error);
                             t, t->pbs_base, t->pbs_limit, bpa, size, error);  
 #endif  #endif
                         return (error);                  return (error);
                 }          }
 #ifdef PPC_IBM4XX  #ifdef PPC_IBM4XX
                 }  
 #endif  
         }          }
   #endif
   
         pa = t->pbs_offset + bpa;          pa = t->pbs_offset + bpa;
 #if defined (PPC_OEA) || defined(PPC_OEA601)  #if defined (PPC_OEA) || defined(PPC_OEA601)
Line 591  memio_map(bus_space_tag_t t, bus_addr_t 
Line 588  memio_map(bus_space_tag_t t, bus_addr_t 
         }          }
 #endif /* defined (PPC_OEA) || defined(PPC_OEA601) */  #endif /* defined (PPC_OEA) || defined(PPC_OEA601) */
   
         if (t->pbs_extent != NULL) {  #ifndef PPC_IBM4XX
 #if !defined(PPC_IBM4XX)  
         if (extent_flags == 0) {          if (extent_flags == 0) {
                 extent_free(t->pbs_extent, bpa, size, EX_NOWAIT);                  extent_free(t->pbs_extent, bpa, size, EX_NOWAIT);
 #ifdef DEBUG  #ifdef DEBUG
Line 602  memio_map(bus_space_tag_t t, bus_addr_t 
Line 598  memio_map(bus_space_tag_t t, bus_addr_t 
                 return (ENOMEM);                  return (ENOMEM);
         }          }
 #endif  #endif
         }  
   
         /*          /*
          * Map this into the kernel pmap.           * Map this into the kernel pmap.
          */           */
Line 666  memio_unmap(bus_space_tag_t t, bus_space
Line 660  memio_unmap(bus_space_tag_t t, bus_space
 #endif /* defined (PPC_OEA) || defined(PPC_OEA601) */  #endif /* defined (PPC_OEA) || defined(PPC_OEA601) */
         bpa = pa - t->pbs_offset;          bpa = pa - t->pbs_offset;
   
         if (t->pbs_extent != NULL          if (extent_free(t->pbs_extent, bpa, size, EX_NOWAIT | extent_flags)) {
         &&  extent_free(t->pbs_extent, bpa, size,  
                         EX_NOWAIT | extent_flags)) {  
                 printf("memio_unmap: %s 0x%lx, size 0x%lx\n",                  printf("memio_unmap: %s 0x%lx, size 0x%lx\n",
                     (t->pbs_flags & _BUS_SPACE_IO_TYPE) ? "port" : "mem",                      (t->pbs_flags & _BUS_SPACE_IO_TYPE) ? "port" : "mem",
                     (unsigned long)bpa, (unsigned long)size);                      (unsigned long)bpa, (unsigned long)size);
Line 690  memio_alloc(bus_space_tag_t t, bus_addr_
Line 682  memio_alloc(bus_space_tag_t t, bus_addr_
         size = _BUS_SPACE_STRIDE(t, size);          size = _BUS_SPACE_STRIDE(t, size);
         rstart = _BUS_SPACE_STRIDE(t, rstart);          rstart = _BUS_SPACE_STRIDE(t, rstart);
   
         if (t->pbs_extent == NULL)  
                 return ENOMEM;  
   
         if (rstart + size > t->pbs_limit) {          if (rstart + size > t->pbs_limit) {
 #ifdef DEBUG  #ifdef DEBUG
                 printf("%s(%p[%x:%x], %#x, %#x) failed: EINVAL\n",                  printf("%s(%p[%x:%x], %#x, %#x) failed: EINVAL\n",
Line 751  memio_alloc(bus_space_tag_t t, bus_addr_
Line 740  memio_alloc(bus_space_tag_t t, bus_addr_
 void  void
 memio_free(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size)  memio_free(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size)
 {  {
         if (t->pbs_extent == NULL)  
                 return;  
   
         /* memio_unmap() does all that we need to do. */          /* memio_unmap() does all that we need to do. */
         memio_unmap(t, bsh, size);          memio_unmap(t, bsh, size);
 }  }

Legend:
Removed from v.1.20.24.1  
changed lines
  Added in v.1.21

CVSweb <webmaster@jp.NetBSD.org>