Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
5be32463
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5be32463
编写于
5月 21, 2011
作者:
G
Geert Uytterhoeven
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
m68k/amiga: Chip RAM - Use tabs for indentation
Signed-off-by:
N
Geert Uytterhoeven
<
geert@linux-m68k.org
>
上级
02f8c6ae
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
61 addition
and
57 deletion
+61
-57
arch/m68k/amiga/chipram.c
arch/m68k/amiga/chipram.c
+61
-57
未找到文件。
arch/m68k/amiga/chipram.c
浏览文件 @
5be32463
...
...
@@ -23,101 +23,105 @@ unsigned long amiga_chip_size;
EXPORT_SYMBOL
(
amiga_chip_size
);
static
struct
resource
chipram_res
=
{
.
name
=
"Chip RAM"
,
.
start
=
CHIP_PHYSADDR
.
name
=
"Chip RAM"
,
.
start
=
CHIP_PHYSADDR
};
static
unsigned
long
chipavail
;
void
__init
amiga_chip_init
(
void
)
{
if
(
!
AMIGAHW_PRESENT
(
CHIP_RAM
))
return
;
if
(
!
AMIGAHW_PRESENT
(
CHIP_RAM
))
return
;
chipram_res
.
end
=
amiga_chip_size
-
1
;
request_resource
(
&
iomem_resource
,
&
chipram_res
);
chipram_res
.
end
=
amiga_chip_size
-
1
;
request_resource
(
&
iomem_resource
,
&
chipram_res
);
chipavail
=
amiga_chip_size
;
chipavail
=
amiga_chip_size
;
}
void
*
amiga_chip_alloc
(
unsigned
long
size
,
const
char
*
name
)
{
struct
resource
*
res
;
struct
resource
*
res
;
/* round up */
size
=
PAGE_ALIGN
(
size
);
/* round up */
size
=
PAGE_ALIGN
(
size
);
#ifdef DEBUG
printk
(
"amiga_chip_alloc: allocate %ld bytes
\n
"
,
size
);
printk
(
"amiga_chip_alloc: allocate %ld bytes
\n
"
,
size
);
#endif
res
=
kzalloc
(
sizeof
(
struct
resource
),
GFP_KERNEL
);
if
(
!
res
)
return
NULL
;
res
->
name
=
name
;
if
(
allocate_resource
(
&
chipram_res
,
res
,
size
,
0
,
UINT_MAX
,
PAGE_SIZE
,
NULL
,
NULL
)
<
0
)
{
kfree
(
res
);
return
NULL
;
}
chipavail
-=
size
;
res
=
kzalloc
(
sizeof
(
struct
resource
),
GFP_KERNEL
);
if
(
!
res
)
return
NULL
;
res
->
name
=
name
;
if
(
allocate_resource
(
&
chipram_res
,
res
,
size
,
0
,
UINT_MAX
,
PAGE_SIZE
,
NULL
,
NULL
)
<
0
)
{
kfree
(
res
);
return
NULL
;
}
chipavail
-=
size
;
#ifdef DEBUG
printk
(
"amiga_chip_alloc: returning %lx
\n
"
,
res
->
start
);
printk
(
"amiga_chip_alloc: returning %lx
\n
"
,
res
->
start
);
#endif
return
(
void
*
)
ZTWO_VADDR
(
res
->
start
);
return
(
void
*
)
ZTWO_VADDR
(
res
->
start
);
}
EXPORT_SYMBOL
(
amiga_chip_alloc
);
/*
* Warning:
* amiga_chip_alloc_res is meant only for drivers that need to allocate
* Chip RAM before kmalloc() is functional. As a consequence, those
*
drivers must not free that Chip RAM afterwards.
*/
/*
* Warning:
* amiga_chip_alloc_res is meant only for drivers that need to
* allocate Chip RAM before kmalloc() is functional. As a consequence,
* those
drivers must not free that Chip RAM afterwards.
*/
void
*
__init
amiga_chip_alloc_res
(
unsigned
long
size
,
struct
resource
*
res
)
{
unsigned
long
start
;
unsigned
long
start
;
/* round up */
size
=
PAGE_ALIGN
(
size
);
/* dmesg into chipmem prefers memory at the safe end */
start
=
CHIP_PHYSADDR
+
chipavail
-
size
;
/* round up */
size
=
PAGE_ALIGN
(
size
);
/* dmesg into chipmem prefers memory at the safe end */
start
=
CHIP_PHYSADDR
+
chipavail
-
size
;
#ifdef DEBUG
printk
(
"amiga_chip_alloc_res: allocate %ld bytes
\n
"
,
size
);
printk
(
"amiga_chip_alloc_res: allocate %ld bytes
\n
"
,
size
);
#endif
if
(
allocate_resource
(
&
chipram_res
,
res
,
size
,
start
,
UINT_MAX
,
PAGE_SIZE
,
NULL
,
NULL
)
<
0
)
{
printk
(
"amiga_chip_alloc_res: first alloc failed!
\n
"
);
if
(
allocate_resource
(
&
chipram_res
,
res
,
size
,
0
,
UINT_MAX
,
PAGE_SIZE
,
NULL
,
NULL
)
<
0
)
return
NULL
;
}
chipavail
-=
size
;
if
(
allocate_resource
(
&
chipram_res
,
res
,
size
,
start
,
UINT_MAX
,
PAGE_SIZE
,
NULL
,
NULL
)
<
0
)
{
printk
(
"amiga_chip_alloc_res: first alloc failed!
\n
"
);
if
(
allocate_resource
(
&
chipram_res
,
res
,
size
,
0
,
UINT_MAX
,
PAGE_SIZE
,
NULL
,
NULL
)
<
0
)
return
NULL
;
}
chipavail
-=
size
;
#ifdef DEBUG
printk
(
"amiga_chip_alloc_res: returning %lx
\n
"
,
res
->
start
);
printk
(
"amiga_chip_alloc_res: returning %lx
\n
"
,
res
->
start
);
#endif
return
(
void
*
)
ZTWO_VADDR
(
res
->
start
);
return
(
void
*
)
ZTWO_VADDR
(
res
->
start
);
}
void
amiga_chip_free
(
void
*
ptr
)
{
unsigned
long
start
=
ZTWO_PADDR
(
ptr
);
struct
resource
**
p
,
*
res
;
unsigned
long
size
;
for
(
p
=
&
chipram_res
.
child
;
(
res
=
*
p
);
p
=
&
res
->
sibling
)
{
if
(
res
->
start
!=
start
)
continue
;
*
p
=
res
->
sibling
;
size
=
res
->
end
-
start
;
unsigned
long
start
=
ZTWO_PADDR
(
ptr
);
struct
resource
**
p
,
*
res
;
unsigned
long
size
;
for
(
p
=
&
chipram_res
.
child
;
(
res
=
*
p
);
p
=
&
res
->
sibling
)
{
if
(
res
->
start
!=
start
)
continue
;
*
p
=
res
->
sibling
;
size
=
res
->
end
-
start
;
#ifdef DEBUG
printk
(
"amiga_chip_free: free %ld bytes at %p
\n
"
,
size
,
ptr
);
printk
(
"amiga_chip_free: free %ld bytes at %p
\n
"
,
size
,
ptr
);
#endif
chipavail
+=
size
;
kfree
(
res
);
return
;
}
printk
(
"amiga_chip_free: trying to free nonexistent region at %p
\n
"
,
ptr
);
chipavail
+=
size
;
kfree
(
res
);
return
;
}
printk
(
"amiga_chip_free: trying to free nonexistent region at %p
\n
"
,
ptr
);
}
EXPORT_SYMBOL
(
amiga_chip_free
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录