Changeset 4f42d52 in mainline for kernel/arch/ia32/src/boot/boot.S


Ignore:
Timestamp:
2007-05-04T17:35:16Z (18 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5c8ba05
Parents:
07bd231e
Message:

force VGA palette to 3:2:3 palette on 8 bpp modes
(this fixes ticket #33)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/boot/boot.S

    r07bd231e r4f42d52  
    354354#define VESA_INFO_SIZE 1024
    355355
     356#define VESA_MODE_ATTRIBUTES_OFFSET 0
    356357#define VESA_MODE_LIST_PTR_OFFSET 14
     358#define VESA_MODE_SCANLINE_OFFSET 16
    357359#define VESA_MODE_WIDTH_OFFSET 18
    358360#define VESA_MODE_HEIGHT_OFFSET 20
    359361#define VESA_MODE_BPP_OFFSET 25
    360 #define VESA_MODE_SCANLINE_OFFSET 16
    361362#define VESA_MODE_PHADDR_OFFSET 40
    362363
     
    368369#define VESA_GET_MODE_INFO 0x4f01
    369370#define VESA_SET_MODE 0x4f02
    370 
    371 #define CONFIG_VESA_BPP_a 255
     371#define VESA_SET_PALETTE 0x4f09
    372372
    373373#if CONFIG_VESA_BPP == 24
    374 #undef CONFIG_VESA_BPP_a
    375 #define CONFIG_VESA_BPP_a 32
     374#define CONFIG_VESA_BPP_VARIANT 32
    376375#endif
    377376
     
    414413        jnz 1b
    415414       
    416         mov $CONFIG_VESA_HEIGHT,%ax
     415        mov $CONFIG_VESA_HEIGHT, %ax
    417416        cmp VESA_MODE_HEIGHT_OFFSET(%di), %ax
    418417        jnz 1b
     
    420419        mov $CONFIG_VESA_BPP, %al
    421420        cmp VESA_MODE_BPP_OFFSET(%di), %al
     421
     422#ifdef CONFIG_VESA_BPP_VARIANT
    422423        jz 2f
    423424       
    424         mov $CONFIG_VESA_BPP_a, %al
     425        mov $CONFIG_VESA_BPP_VARIANT, %al
    425426        cmp VESA_MODE_BPP_OFFSET(%di), %al
     427#endif
    426428        jnz 1b
    427        
     429
    4284302:
    429431       
     
    437439        cmp $VESA_OK, %al
    438440        jnz 0f
     441
     442#if CONFIG_VESA_BPP == 8
     443       
     444        # Set 3:2:3 VGA palette
     445       
     446        mov VESA_MODE_ATTRIBUTES_OFFSET(%di), %ax
     447        push %di
     448        mov $vga323 - vesa_init, %di
     449        mov $0x100, %ecx
     450       
     451        bt $5, %ax                                                      # Test if VGA compatible registers are present
     452        jnc vga_compat
     453               
     454                # Try VESA routine to set palette
     455               
     456                mov $VESA_SET_PALETTE, %ax
     457                xor %bl, %bl
     458                xor %dx, %dx
     459                int $0x10
     460               
     461                jmp vga_not_compat
     462       
     463        vga_compat:
     464               
     465                # Try VGA registers to set palette
     466               
     467                movw $0x3c6, %dx                                                # Set palette mask
     468                movb $0xff, %al
     469                outb %al, %dx
     470               
     471                movw $0x3c8, %dx                                                # First index to set
     472                xor %al, %al
     473                outb %al, %dx
     474               
     475                movw $0x3c9, %dx                                                # Data port
     476                vga_loop:
     477                        movb %es:2(%di), %al
     478                        outb %al, %dx
     479                       
     480                        movb %es:1(%di), %al
     481                        outb %al, %dx
     482                       
     483                        movb %es:(%di), %al
     484                        outb %al, %dx
     485                       
     486                        addw $4, %di
     487                        loop vga_loop
     488               
     489        vga_not_compat:
     490       
     491        pop %di
     492       
     493#endif
    439494       
    440495        mov VESA_MODE_PHADDR_OFFSET(%di), %esi
     
    478533        xor %ax, %ax
    479534        jz 8b                                           # Force relative jump
    480        
     535
     536vga323:
     537#include "vga323.pal"
    481538
    482539.code32
     
    510567
    511568pse_msg:
    512         .ascii "Page Size Extension not supported. System halted.\0"
     569        .asciz "Page Size Extension not supported. System halted."
Note: See TracChangeset for help on using the changeset viewer.