提交 d75fc8bb 编写于 作者: G Greg Kroah-Hartman

[PATCH] 64bit resource: change resource core to use resource_size_t

Based on a patch series originally from Vivek Goyal <vgoyal@in.ibm.com>

Cc: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 cf7c712c
......@@ -208,7 +208,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz)
pa &= PAGE_MASK;
sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1);
return (void __iomem *) (res->start + offset);
return (void __iomem *)(unsigned long)(res->start + offset);
}
/*
......@@ -325,7 +325,7 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, long len, u32 *dma_addrp)
res->name = sdev->prom_name;
}
return (void *)res->start;
return (void *)(unsigned long)res->start;
err_noiommu:
release_resource(res);
......
......@@ -98,31 +98,34 @@ extern struct resource * ____request_resource(struct resource *root, struct reso
extern int release_resource(struct resource *new);
extern __deprecated_for_modules int insert_resource(struct resource *parent, struct resource *new);
extern int allocate_resource(struct resource *root, struct resource *new,
unsigned long size,
unsigned long min, unsigned long max,
unsigned long align,
resource_size_t size, resource_size_t min,
resource_size_t max, resource_size_t align,
void (*alignf)(void *, struct resource *,
unsigned long, unsigned long),
resource_size_t, resource_size_t),
void *alignf_data);
int adjust_resource(struct resource *res, unsigned long start,
unsigned long size);
int adjust_resource(struct resource *res, resource_size_t start,
resource_size_t size);
/* Convenience shorthand with allocation */
#define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name))
#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
#define rename_region(region, newname) do { (region)->name = (newname); } while (0)
extern struct resource * __request_region(struct resource *, unsigned long start, unsigned long n, const char *name);
extern struct resource * __request_region(struct resource *,
resource_size_t start,
resource_size_t n, const char *name);
/* Compatibility cruft */
#define release_region(start,n) __release_region(&ioport_resource, (start), (n))
#define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n))
#define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n))
extern int __check_region(struct resource *, unsigned long, unsigned long);
extern void __release_region(struct resource *, unsigned long, unsigned long);
extern int __check_region(struct resource *, resource_size_t, resource_size_t);
extern void __release_region(struct resource *, resource_size_t,
resource_size_t);
static inline int __deprecated check_region(unsigned long s, unsigned long n)
static inline int __deprecated check_region(resource_size_t s,
resource_size_t n)
{
return __check_region(&ioport_resource, s, n);
}
......
......@@ -151,8 +151,8 @@ __initcall(ioresources_init);
/* Return the conflict entry if you can't request it */
static struct resource * __request_resource(struct resource *root, struct resource *new)
{
unsigned long start = new->start;
unsigned long end = new->end;
resource_size_t start = new->start;
resource_size_t end = new->end;
struct resource *tmp, **p;
if (end < start)
......@@ -236,11 +236,10 @@ EXPORT_SYMBOL(release_resource);
* Find empty slot in the resource tree given range and alignment.
*/
static int find_resource(struct resource *root, struct resource *new,
unsigned long size,
unsigned long min, unsigned long max,
unsigned long align,
resource_size_t size, resource_size_t min,
resource_size_t max, resource_size_t align,
void (*alignf)(void *, struct resource *,
unsigned long, unsigned long),
resource_size_t, resource_size_t),
void *alignf_data)
{
struct resource *this = root->child;
......@@ -282,11 +281,10 @@ static int find_resource(struct resource *root, struct resource *new,
* Allocate empty slot in the resource tree given range and alignment.
*/
int allocate_resource(struct resource *root, struct resource *new,
unsigned long size,
unsigned long min, unsigned long max,
unsigned long align,
resource_size_t size, resource_size_t min,
resource_size_t max, resource_size_t align,
void (*alignf)(void *, struct resource *,
unsigned long, unsigned long),
resource_size_t, resource_size_t),
void *alignf_data)
{
int err;
......@@ -378,10 +376,10 @@ EXPORT_SYMBOL(insert_resource);
* arguments. Returns -EBUSY if it can't fit. Existing children of
* the resource are assumed to be immutable.
*/
int adjust_resource(struct resource *res, unsigned long start, unsigned long size)
int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size)
{
struct resource *tmp, *parent = res->parent;
unsigned long end = start + size - 1;
resource_size_t end = start + size - 1;
int result = -EBUSY;
write_lock(&resource_lock);
......@@ -428,7 +426,9 @@ EXPORT_SYMBOL(adjust_resource);
*
* Release-region releases a matching busy region.
*/
struct resource * __request_region(struct resource *parent, unsigned long start, unsigned long n, const char *name)
struct resource * __request_region(struct resource *parent,
resource_size_t start, resource_size_t n,
const char *name)
{
struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL);
......@@ -464,7 +464,8 @@ struct resource * __request_region(struct resource *parent, unsigned long start,
EXPORT_SYMBOL(__request_region);
int __check_region(struct resource *parent, unsigned long start, unsigned long n)
int __check_region(struct resource *parent, resource_size_t start,
resource_size_t n)
{
struct resource * res;
......@@ -479,10 +480,11 @@ int __check_region(struct resource *parent, unsigned long start, unsigned long n
EXPORT_SYMBOL(__check_region);
void __release_region(struct resource *parent, unsigned long start, unsigned long n)
void __release_region(struct resource *parent, resource_size_t start,
resource_size_t n)
{
struct resource **p;
unsigned long end;
resource_size_t end;
p = &parent->child;
end = start + n - 1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册