public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 09/17] x86: Create weak init_cache() function
Date: Wed, 04 Jan 2012 22:25:39 +1100	[thread overview]
Message-ID: <4F043733.7030909@gmail.com> (raw)
In-Reply-To: <CAPnjgZ0w5WtDgT4q_3Zhyua1ga4Dq+GzvJqZsKt0dkOrQ70QgQ@mail.gmail.com>

Hi Simon,

On 04/01/12 16:38, Simon Glass wrote:
> Hi Graeme,
> 
> On Sun, Jan 1, 2012 at 8:09 PM, Graeme Russ <graeme.russ@gmail.com> wrote:
>>
>> Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
>> ---
>>  arch/x86/cpu/cpu.c                |   18 +++++++++++++++---
>>  arch/x86/include/asm/u-boot-x86.h |    1 +
>>  arch/x86/lib/board.c              |    1 +
>>  3 files changed, 17 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c
>> index e7a5fc0..4351f20 100644
>> --- a/arch/x86/cpu/cpu.c
>> +++ b/arch/x86/cpu/cpu.c
>> @@ -140,6 +140,14 @@ int cpu_init_f(void) __attribute__((weak, alias("x86_cpu_init_f")));
>>
>>  int x86_cpu_init_r(void)
>>  {
>> +       /* Initialize core interrupt and exception functionality of CPU */
>> +       cpu_init_interrupts();
>> +       return 0;
>> +}
> 
> This doesn't seem to match the commit title.

Well git diffs do some weird things sometimes - if you look further down,
you'll see that there isn't actually a code change here

> 
>> +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);
>>
>>        /* turn on the cache and disable write through */
>> @@ -147,12 +155,16 @@ int x86_cpu_init_r(void)
>>            "andl       %0, %%eax\n"
>>            "movl       %%eax, %%cr0\n"
>>            "wbinvd\n" : : "i" (nw_cd_rst) : "eax");
>> +}
>> +void enable_caches(void) __attribute__((weak, alias("x86_enable_caches")));
>> +
>> +int x86_init_cache(void)
>> +{
>> +       enable_caches();
> 
> Does this enable both I and D caches?

Yes - In x86, the I & D caches are turned on and off simultaneously. Also,
some x86 CPU's only have a single unified cache anyway

>>
>> -       /* 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")));
>> +int init_cache(void) __attribute__((weak, alias("x86_init_cache")));
>>
>>  int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>  {
>> diff --git a/arch/x86/include/asm/u-boot-x86.h b/arch/x86/include/asm/u-boot-x86.h
>> index 5540d51..878a1ee 100644
>> --- a/arch/x86/include/asm/u-boot-x86.h
>> +++ b/arch/x86/include/asm/u-boot-x86.h
>> @@ -39,6 +39,7 @@ int x86_cpu_init_f(void);
>>  int cpu_init_f(void);
>>  void init_gd(gd_t *id, u64 *gdt_addr);
>>  void setup_gdt(gd_t *id, u64 *gdt_addr);
>> +int init_cache(void);
>>
>>  /* cpu/.../timer.c */
>>  void timer_isr(void *);
>> diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c
>> index 4e54dba..ffddfbe 100644
>> --- a/arch/x86/lib/board.c
>> +++ b/arch/x86/lib/board.c
>> @@ -140,6 +140,7 @@ init_fnc_t *init_sequence_f[] = {
>>
>>  init_fnc_t *init_sequence_r[] = {
>>        copy_gd_to_ram,
>> +       init_cache,
> 
> Would enable_caches be a better name?

Getting the cache working is a two step process - init_cache() sets up the
cache regions, typically using the Memory Type Range Registers (MTRRs)

enable_caches() actually turns the CPU cache on

Regards,

Graeme

  reply	other threads:[~2012-01-04 11:25 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-02  4:09 [U-Boot] [PATCH 00/17] x86: Rework of board init code (plus support patches) Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 01/17] x86: Import glibc memcpy implementation Graeme Russ
2012-01-04  5:18   ` Simon Glass
2012-01-04 19:59   ` [U-Boot] [PATCH v2 " Graeme Russ
2012-01-04 19:59     ` [U-Boot] [PATCH v2 02/17] x86: Speed up copy-to-RAM and clear BSS operations Graeme Russ
2012-01-04 20:04       ` Graeme Russ
2012-01-12  4:45       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 03/17] x86: Remove GDR related magic numbers Graeme Russ
2012-01-07 22:05       ` Simon Glass
2012-01-12  4:46       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 04/17] x86: Rework Global Descriptor Table loading Graeme Russ
2012-01-12  4:47       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 05/17] x86: Simplify Flash-to-RAM code execution transition Graeme Russ
2012-01-12  4:48       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 06/17] x86: Rework relocation calculations Graeme Russ
2012-01-12  4:49       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 07/17] x86: Use fs for global data Graeme Russ
2012-01-12  4:51       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 08/17] x86: Set GD_FLG_RELOC after entering in-RAM copy of U-Boot Graeme Russ
2012-01-12  4:51       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 09/17] x86: Create weak init_cache() and default enable_caches() functions Graeme Russ
2012-01-12  4:55       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 10/17] x86: Allow cache before copy to RAM Graeme Russ
2012-01-12  4:56       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 11/17] x86: Tweak IDT and GDT for alignment and readability Graeme Russ
2012-01-12  5:00       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 12/17] CHECKPATCH: arch/x86/lib/* Graeme Russ
2012-01-12  5:01       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 13/17] x86: Move do_go_exec() out of board.c Graeme Russ
2012-01-12  5:01       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 14/17] x86: Move setup_pcat_compatibility() " Graeme Russ
2012-01-12  5:02       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 15/17] x86: Move relocation code " Graeme Russ
2012-01-07 22:15       ` Simon Glass
2012-01-08  9:04         ` Graeme Russ
2012-01-08 17:59           ` Simon Glass
2012-01-12  5:03       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 16/17] x86: Split init functions " Graeme Russ
2012-01-12  5:03       ` Simon Glass
2012-01-04 19:59     ` [U-Boot] [PATCH v2 17/17] x86: Convert board_init_f_r to a processing loop Graeme Russ
2012-01-07 22:21       ` Simon Glass
2012-01-08  9:10         ` Graeme Russ
2012-01-08 18:01           ` Simon Glass
2012-01-12  5:04       ` Simon Glass
2012-01-12  4:44     ` [U-Boot] [PATCH v2 01/17] x86: Import glibc memcpy implementation Simon Glass
2012-01-02  4:09 ` [U-Boot] [PATCH 02/17] x86: Speed up copy-to-RAM and clear BSS operations Graeme Russ
2012-01-04  5:21   ` Simon Glass
2012-01-04 10:04     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 03/17] x86: Remove GDR related magic numbers Graeme Russ
2012-01-04  5:23   ` Simon Glass
2012-01-04 10:20     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 04/17] x86: Rework Global Descriptor Table loading Graeme Russ
2012-01-04  5:24   ` Simon Glass
2012-01-04 10:30     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 05/17] x86: Simplify Flash-to-RAM code execution transition Graeme Russ
2012-01-04  5:28   ` Simon Glass
2012-01-04 10:59     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 06/17] x86: Rework relocation calcuations Graeme Russ
2012-01-04  5:30   ` Simon Glass
2012-01-02  4:09 ` [U-Boot] [PATCH 07/17] x86: Use fs for global data Graeme Russ
2012-01-04  5:36   ` Simon Glass
2012-01-04 11:14     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 08/17] x86: Set GD_FLG_RELOC after entering in-RAM copy of U-Boot Graeme Russ
2012-01-04  5:37   ` Simon Glass
2012-01-02  4:09 ` [U-Boot] [PATCH 09/17] x86: Create weak init_cache() function Graeme Russ
2012-01-04  5:38   ` Simon Glass
2012-01-04 11:25     ` Graeme Russ [this message]
2012-01-02  4:09 ` [U-Boot] [PATCH 10/17] x86: Allow cache before copy to RAM Graeme Russ
2012-01-04  5:40   ` Simon Glass
2012-01-04 11:29     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 11/17] CHECKPATCH: arch/x86/cpu/* Graeme Russ
2012-01-04  5:42   ` Simon Glass
2012-01-04 11:35     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 12/17] CHECKPATCH: arch/x86/lib/* Graeme Russ
2012-01-04  5:47   ` Simon Glass
2012-01-02  4:09 ` [U-Boot] [PATCH 13/17] x86: Move do_go_exec() out of board.c Graeme Russ
2012-01-04  5:48   ` Simon Glass
2012-01-02  4:09 ` [U-Boot] [PATCH 14/17] x86: Move setup_pcat_compatibility() " Graeme Russ
2012-01-04  5:48   ` Simon Glass
2012-01-04 11:38     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 15/17] x86: Move relocation code " Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 16/17] x86: Simplify board.c Graeme Russ
2012-01-04  5:51   ` Simon Glass
2012-01-04 11:50     ` Graeme Russ
2012-01-02  4:09 ` [U-Boot] [PATCH 17/17] x86: Tweak initialisation procedure Graeme Russ
2012-01-04  5:52   ` Simon Glass
2012-01-04 12:02     ` Graeme Russ

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F043733.7030909@gmail.com \
    --to=graeme.russ@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox