diff options
| author | Timur Tabi <timur@freescale.com> | 2007-05-08 15:46:36 -0400 |
|---|---|---|
| committer | Kumar Gala <galak@kernel.crashing.org> | 2007-05-10 00:01:43 -0400 |
| commit | 4c35630ccda56ed494f6102d2e147fefe14b78d2 (patch) | |
| tree | 4f04754fb0ec6978923b3c1e0318997e420f6551 /include/asm-ppc | |
| parent | 742226c579c573c24386aaf41969a01ee058b97e (diff) | |
[POWERPC] Change rheap functions to use ulongs instead of pointers
The rheap allocation functions return a pointer, but the actual value is based
on how the heap was initialized, and so it can be anything, e.g. an offset
into a buffer. A ulong is a better representation of the value returned by
the allocation functions.
This patch changes all of the relevant rheap functions to use a unsigned long
integers instead of a pointer. In case of an error, the value returned is
a negative error code that has been cast to an unsigned long. The caller can
use the IS_ERR_VALUE() macro to check for this.
All code which calls the rheap functions is updated accordingly. Macros
IS_MURAM_ERR() and IS_DPERR(), have been deleted in favor of IS_ERR_VALUE().
Also added error checking to rh_attach_region().
Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'include/asm-ppc')
| -rw-r--r-- | include/asm-ppc/commproc.h | 13 | ||||
| -rw-r--r-- | include/asm-ppc/cpm2.h | 13 | ||||
| -rw-r--r-- | include/asm-ppc/rheap.h | 20 |
3 files changed, 18 insertions, 28 deletions
diff --git a/include/asm-ppc/commproc.h b/include/asm-ppc/commproc.h index 4f99df1bafd7..397248705e0e 100644 --- a/include/asm-ppc/commproc.h +++ b/include/asm-ppc/commproc.h | |||
| @@ -63,20 +63,15 @@ | |||
| 63 | #define CPM_DATAONLY_SIZE ((uint)0x0700) | 63 | #define CPM_DATAONLY_SIZE ((uint)0x0700) |
| 64 | #define CPM_DP_NOSPACE ((uint)0x7fffffff) | 64 | #define CPM_DP_NOSPACE ((uint)0x7fffffff) |
| 65 | 65 | ||
| 66 | static inline long IS_DPERR(const uint offset) | ||
| 67 | { | ||
| 68 | return (uint)offset > (uint)-1000L; | ||
| 69 | } | ||
| 70 | |||
| 71 | /* Export the base address of the communication processor registers | 66 | /* Export the base address of the communication processor registers |
| 72 | * and dual port ram. | 67 | * and dual port ram. |
| 73 | */ | 68 | */ |
| 74 | extern cpm8xx_t *cpmp; /* Pointer to comm processor */ | 69 | extern cpm8xx_t *cpmp; /* Pointer to comm processor */ |
| 75 | extern uint cpm_dpalloc(uint size, uint align); | 70 | extern unsigned long cpm_dpalloc(uint size, uint align); |
| 76 | extern int cpm_dpfree(uint offset); | 71 | extern int cpm_dpfree(unsigned long offset); |
| 77 | extern uint cpm_dpalloc_fixed(uint offset, uint size, uint align); | 72 | extern unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align); |
| 78 | extern void cpm_dpdump(void); | 73 | extern void cpm_dpdump(void); |
| 79 | extern void *cpm_dpram_addr(uint offset); | 74 | extern void *cpm_dpram_addr(unsigned long offset); |
| 80 | extern uint cpm_dpram_phys(u8* addr); | 75 | extern uint cpm_dpram_phys(u8* addr); |
| 81 | extern void cpm_setbrg(uint brg, uint rate); | 76 | extern void cpm_setbrg(uint brg, uint rate); |
| 82 | 77 | ||
diff --git a/include/asm-ppc/cpm2.h b/include/asm-ppc/cpm2.h index 220cc2debe08..12a2860f9a9c 100644 --- a/include/asm-ppc/cpm2.h +++ b/include/asm-ppc/cpm2.h | |||
| @@ -104,21 +104,16 @@ | |||
| 104 | */ | 104 | */ |
| 105 | #define NUM_CPM_HOST_PAGES 2 | 105 | #define NUM_CPM_HOST_PAGES 2 |
| 106 | 106 | ||
| 107 | static inline long IS_DPERR(const uint offset) | ||
| 108 | { | ||
| 109 | return (uint)offset > (uint)-1000L; | ||
| 110 | } | ||
| 111 | |||
| 112 | /* Export the base address of the communication processor registers | 107 | /* Export the base address of the communication processor registers |
| 113 | * and dual port ram. | 108 | * and dual port ram. |
| 114 | */ | 109 | */ |
| 115 | extern cpm_cpm2_t *cpmp; /* Pointer to comm processor */ | 110 | extern cpm_cpm2_t *cpmp; /* Pointer to comm processor */ |
| 116 | 111 | ||
| 117 | extern uint cpm_dpalloc(uint size, uint align); | 112 | extern unsigned long cpm_dpalloc(uint size, uint align); |
| 118 | extern int cpm_dpfree(uint offset); | 113 | extern int cpm_dpfree(unsigned long offset); |
| 119 | extern uint cpm_dpalloc_fixed(uint offset, uint size, uint align); | 114 | extern unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align); |
| 120 | extern void cpm_dpdump(void); | 115 | extern void cpm_dpdump(void); |
| 121 | extern void *cpm_dpram_addr(uint offset); | 116 | extern void *cpm_dpram_addr(unsigned long offset); |
| 122 | extern void cpm_setbrg(uint brg, uint rate); | 117 | extern void cpm_setbrg(uint brg, uint rate); |
| 123 | extern void cpm2_fastbrg(uint brg, uint rate, int div16); | 118 | extern void cpm2_fastbrg(uint brg, uint rate, int div16); |
| 124 | extern void cpm2_reset(void); | 119 | extern void cpm2_reset(void); |
diff --git a/include/asm-ppc/rheap.h b/include/asm-ppc/rheap.h index 39a10d862244..172381769cfc 100644 --- a/include/asm-ppc/rheap.h +++ b/include/asm-ppc/rheap.h | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | 18 | ||
| 19 | typedef struct _rh_block { | 19 | typedef struct _rh_block { |
| 20 | struct list_head list; | 20 | struct list_head list; |
| 21 | void *start; | 21 | unsigned long start; |
| 22 | int size; | 22 | int size; |
| 23 | const char *owner; | 23 | const char *owner; |
| 24 | } rh_block_t; | 24 | } rh_block_t; |
| @@ -37,8 +37,8 @@ typedef struct _rh_info { | |||
| 37 | #define RHIF_STATIC_INFO 0x1 | 37 | #define RHIF_STATIC_INFO 0x1 |
| 38 | #define RHIF_STATIC_BLOCK 0x2 | 38 | #define RHIF_STATIC_BLOCK 0x2 |
| 39 | 39 | ||
| 40 | typedef struct rh_stats_t { | 40 | typedef struct _rh_stats { |
| 41 | void *start; | 41 | unsigned long start; |
| 42 | int size; | 42 | int size; |
| 43 | const char *owner; | 43 | const char *owner; |
| 44 | } rh_stats_t; | 44 | } rh_stats_t; |
| @@ -57,24 +57,24 @@ extern void rh_init(rh_info_t * info, unsigned int alignment, int max_blocks, | |||
| 57 | rh_block_t * block); | 57 | rh_block_t * block); |
| 58 | 58 | ||
| 59 | /* Attach a free region to manage */ | 59 | /* Attach a free region to manage */ |
| 60 | extern int rh_attach_region(rh_info_t * info, void *start, int size); | 60 | extern int rh_attach_region(rh_info_t * info, unsigned long start, int size); |
| 61 | 61 | ||
| 62 | /* Detach a free region */ | 62 | /* Detach a free region */ |
| 63 | extern void *rh_detach_region(rh_info_t * info, void *start, int size); | 63 | extern unsigned long rh_detach_region(rh_info_t * info, unsigned long start, int size); |
| 64 | 64 | ||
| 65 | /* Allocate the given size from the remote heap (with alignment) */ | 65 | /* Allocate the given size from the remote heap (with alignment) */ |
| 66 | extern void *rh_alloc_align(rh_info_t * info, int size, int alignment, | 66 | extern unsigned long rh_alloc_align(rh_info_t * info, int size, int alignment, |
| 67 | const char *owner); | 67 | const char *owner); |
| 68 | 68 | ||
| 69 | /* Allocate the given size from the remote heap */ | 69 | /* Allocate the given size from the remote heap */ |
| 70 | extern void *rh_alloc(rh_info_t * info, int size, const char *owner); | 70 | extern unsigned long rh_alloc(rh_info_t * info, int size, const char *owner); |
| 71 | 71 | ||
| 72 | /* Allocate the given size from the given address */ | 72 | /* Allocate the given size from the given address */ |
| 73 | extern void *rh_alloc_fixed(rh_info_t * info, void *start, int size, | 73 | extern unsigned long rh_alloc_fixed(rh_info_t * info, unsigned long start, int size, |
| 74 | const char *owner); | 74 | const char *owner); |
| 75 | 75 | ||
| 76 | /* Free the allocated area */ | 76 | /* Free the allocated area */ |
| 77 | extern int rh_free(rh_info_t * info, void *start); | 77 | extern int rh_free(rh_info_t * info, unsigned long start); |
| 78 | 78 | ||
| 79 | /* Get stats for debugging purposes */ | 79 | /* Get stats for debugging purposes */ |
| 80 | extern int rh_get_stats(rh_info_t * info, int what, int max_stats, | 80 | extern int rh_get_stats(rh_info_t * info, int what, int max_stats, |
| @@ -84,6 +84,6 @@ extern int rh_get_stats(rh_info_t * info, int what, int max_stats, | |||
| 84 | extern void rh_dump(rh_info_t * info); | 84 | extern void rh_dump(rh_info_t * info); |
| 85 | 85 | ||
| 86 | /* Set owner of taken block */ | 86 | /* Set owner of taken block */ |
| 87 | extern int rh_set_owner(rh_info_t * info, void *start, const char *owner); | 87 | extern int rh_set_owner(rh_info_t * info, unsigned long start, const char *owner); |
| 88 | 88 | ||
| 89 | #endif /* __ASM_PPC_RHEAP_H__ */ | 89 | #endif /* __ASM_PPC_RHEAP_H__ */ |
