Hi Simon, On 04/01/12 16:42, Simon Glass wrote: > Hi Graeme, > > On Sun, Jan 1, 2012 at 8:09 PM, Graeme Russ <graeme.r...@gmail.com> wrote: >> >> Signed-off-by: Graeme Russ <graeme.r...@gmail.com> > > Seems a bit more than just checkpatch.
True - I'll change the name to 'Tweak IDT and GDT for alignment and readability' - Saves me splitting the patch ;) Regards, Graeme > > Acked-by: Simon Glass <s...@chromium.org> > > Regards, > Simon > >> --- >> arch/x86/cpu/interrupts.c | 2 +- >> arch/x86/cpu/start16.S | 57 >> +++++++++++++++++++++++++++++++++++--------- >> 2 files changed, 46 insertions(+), 13 deletions(-) >> >> diff --git a/arch/x86/cpu/interrupts.c b/arch/x86/cpu/interrupts.c >> index e0958eb..43ec3f8 100644 >> --- a/arch/x86/cpu/interrupts.c >> +++ b/arch/x86/cpu/interrupts.c >> @@ -174,7 +174,7 @@ struct desc_ptr { >> unsigned short segment; >> } __packed; >> >> -struct idt_entry idt[256] __attribute__((aligned(16))); >> +struct idt_entry idt[256] __aligned(16); >> >> struct desc_ptr idt_ptr; >> >> diff --git a/arch/x86/cpu/start16.S b/arch/x86/cpu/start16.S >> index 33e53cd..cc393ff 100644 >> --- a/arch/x86/cpu/start16.S >> +++ b/arch/x86/cpu/start16.S >> @@ -86,7 +86,11 @@ gdt_ptr: >> .word 0x20 /* limit (32 bytes = 4 GDT entries) */ >> .long BOOT_SEG + gdt /* base */ >> >> - /* The GDT table ... >> +/* Some CPUs are picky about GDT alignment... */ >> +.align 16 >> +gdt: >> + /* >> + * The GDT table ... >> * >> * Selector Type >> * 0x00 NULL >> @@ -94,17 +98,46 @@ gdt_ptr: >> * 0x10 32bit code >> * 0x18 32bit data/stack >> */ >> + /* The NULL Desciptor - Mandatory */ >> + .word 0x0000 /* limit_low */ >> + .word 0x0000 /* base_low */ >> + .byte 0x00 /* base_middle */ >> + .byte 0x00 /* access */ >> + .byte 0x00 /* flags + limit_high */ >> + .byte 0x00 /* base_high */ >> >> -gdt: >> - .word 0, 0, 0, 0 /* NULL */ >> - .word 0, 0, 0, 0 /* unused */ >> + /* Unused Desciptor - (matches Linux) */ >> + .word 0x0000 /* limit_low */ >> + .word 0x0000 /* base_low */ >> + .byte 0x00 /* base_middle */ >> + .byte 0x00 /* access */ >> + .byte 0x00 /* flags + limit_high */ >> + .byte 0x00 /* base_high */ >> >> - .word 0xFFFF /* 4Gb - (0x100000*0x1000 = 4Gb) */ >> - .word 0 /* base address = 0 */ >> - .word 0x9B00 /* code read/exec */ >> - .word 0x00CF /* granularity = 4096, 386 (+5th nibble of >> limit) */ >> + /* >> + * The Code Segment Descriptor: >> + * - Base = 0x00000000 >> + * - Size = 4GB >> + * - Access = Present, Ring 0, Exec (Code), Readable >> + * - Flags = 4kB Granularity, 32-bit >> + */ >> + .word 0xffff /* limit_low */ >> + .word 0x0000 /* base_low */ >> + .byte 0x00 /* base_middle */ >> + .byte 0x9b /* access */ >> + .byte 0xcf /* flags + limit_high */ >> + .byte 0x00 /* base_high */ >> >> - .word 0xFFFF /* 4Gb - (0x100000*0x1000 = 4Gb) */ >> - .word 0x0 /* base address = 0 */ >> - .word 0x9300 /* data read/write */ >> - .word 0x00CF /* granularity = 4096, 386 (+5th nibble of >> limit) */ >> + /* >> + * The Data Segment Descriptor: >> + * - Base = 0x00000000 >> + * - Size = 4GB >> + * - Access = Present, Ring 0, Non-Exec (Data), Writable >> + * - Flags = 4kB Granularity, 32-bit >> + */ >> + .word 0xffff /* limit_low */ >> + .word 0x0000 /* base_low */ >> + .byte 0x00 /* base_middle */ >> + .byte 0x93 /* access */ >> + .byte 0xcf /* flags + limit_high */ >> + .byte 0x00 /* base_high */ >> -- >> 1.7.5.2.317.g391b14 >> >> _______________________________________________ >> U-Boot mailing list >> U-Boot@lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot