mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
x86: Create weak init_cache() and default enable_caches() functions
-- Changes for v2: - Tweaked commit title
This commit is contained in:
parent
3766bb33a5
commit
d653244b12
3 changed files with 17 additions and 3 deletions
|
@ -139,6 +139,14 @@ int x86_cpu_init_f(void)
|
||||||
int cpu_init_f(void) __attribute__((weak, alias("x86_cpu_init_f")));
|
int cpu_init_f(void) __attribute__((weak, alias("x86_cpu_init_f")));
|
||||||
|
|
||||||
int x86_cpu_init_r(void)
|
int x86_cpu_init_r(void)
|
||||||
|
{
|
||||||
|
/* Initialize core interrupt and exception functionality of CPU */
|
||||||
|
cpu_init_interrupts();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int cpu_init_r(void) __attribute__((weak, alias("x86_cpu_init_r")));
|
||||||
|
|
||||||
|
void x86_enable_caches(void)
|
||||||
{
|
{
|
||||||
const u32 nw_cd_rst = ~(X86_CR0_NW | X86_CR0_CD);
|
const u32 nw_cd_rst = ~(X86_CR0_NW | X86_CR0_CD);
|
||||||
|
|
||||||
|
@ -147,12 +155,16 @@ int x86_cpu_init_r(void)
|
||||||
"andl %0, %%eax\n"
|
"andl %0, %%eax\n"
|
||||||
"movl %%eax, %%cr0\n"
|
"movl %%eax, %%cr0\n"
|
||||||
"wbinvd\n" : : "i" (nw_cd_rst) : "eax");
|
"wbinvd\n" : : "i" (nw_cd_rst) : "eax");
|
||||||
|
}
|
||||||
|
void enable_caches(void) __attribute__((weak, alias("x86_enable_caches")));
|
||||||
|
|
||||||
|
int x86_init_cache(void)
|
||||||
|
{
|
||||||
|
enable_caches();
|
||||||
|
|
||||||
/* Initialize core interrupt and exception functionality of CPU */
|
|
||||||
cpu_init_interrupts();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int cpu_init_r(void) __attribute__((weak, alias("x86_cpu_init_r")));
|
int init_cache(void) __attribute__((weak, alias("x86_init_cache")));
|
||||||
|
|
||||||
int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,6 +39,7 @@ int x86_cpu_init_f(void);
|
||||||
int cpu_init_f(void);
|
int cpu_init_f(void);
|
||||||
void init_gd(gd_t *id, u64 *gdt_addr);
|
void init_gd(gd_t *id, u64 *gdt_addr);
|
||||||
void setup_gdt(gd_t *id, u64 *gdt_addr);
|
void setup_gdt(gd_t *id, u64 *gdt_addr);
|
||||||
|
int init_cache(void);
|
||||||
|
|
||||||
/* cpu/.../timer.c */
|
/* cpu/.../timer.c */
|
||||||
void timer_isr(void *);
|
void timer_isr(void *);
|
||||||
|
|
|
@ -140,6 +140,7 @@ init_fnc_t *init_sequence_f[] = {
|
||||||
|
|
||||||
init_fnc_t *init_sequence_r[] = {
|
init_fnc_t *init_sequence_r[] = {
|
||||||
copy_gd_to_ram,
|
copy_gd_to_ram,
|
||||||
|
init_cache,
|
||||||
cpu_init_r, /* basic cpu dependent setup */
|
cpu_init_r, /* basic cpu dependent setup */
|
||||||
board_early_init_r, /* basic board dependent setup */
|
board_early_init_r, /* basic board dependent setup */
|
||||||
dram_init, /* configure available RAM banks */
|
dram_init, /* configure available RAM banks */
|
||||||
|
|
Loading…
Reference in a new issue