> It seems to work okay here. Now, rewriting current boot system into C
> may be good goal...
At least that is a way which does not involve modifying assembler
files. Slowly everybody switches to the C version which continue
to evolve (i.e. removing old BIOS calls), then the tree under
arch/i386/boot is removed and we can begin to rearrange the mapping
of "struct linux_param".
>> I seriously doubt you can even imagine an AMD 64 bits with an ISA
>> trident 8900 video card inside, even for fun: you cannot plug it
>> in.
>
> Feel free to fix that. [I think I could get PCI-to-ISA bridge and plug
> it into my x86-64 box...]
Well, I can help to plug it in, but it involves a set of tool not
usually used in computer software, that is hammer and axes :-)
For the software support of VESA 1 bank switching to display graphic
modes in 64 Kbytes memory window, well, Gujin support it but not Linux.
For my future investment in a x86-64, well I will one day, it is on
my TODO list. I wonder about PCI-E -> ISA converter, they should be
faster than PCI -> ISA, no?...
>> Well, you want to comment on the only file which is a standalone
>> application and not released under GPL but BSD license, because it
>> may be usefull elsewhere.
>
> Well, if you want to distribute the file with kernel, it should
> folllow kernel coding style. If not, sorry for the noise.
I hope I can still put a BSD license "helper" in kernel tree, it
is BSD because GZIP is itself BSD licensed - and its indentation
looks like GZIP source.
>> >> +#ifndef CONFIG_FB_VESA
>> >> + | (1 << 0) /* Cannot boot in MASKVESA_1BPP */
>> >> + | (1 << 1) /* Cannot boot in MASKVESA_2BPP */
>> >> + | (1 << 3) /* Cannot boot in MASKVESA_4BPP */
>> >> + | (1 << 7) /* Cannot boot in MASKVESA_8BPP */
>> >> + | (1 << 14) /* Cannot boot in MASKVESA_15BPP */
>> >> + | (1 << 15) /* Cannot boot in MASKVESA_16BPP */
>> >> + | (1 << 23) /* Cannot boot in MASKVESA_24BPP */
>> >> + | (1 << 31) /* Cannot boot in MASKVESA_32BPP */
>> >> +#endif
>> >> +#if defined (CONFIG_VGA_CONSOLE) || defined (CONFIG_MDA_CONSOLE)
>> >> + | (1 << 16) /* able to boot in text mode */
>> >> +#endif
>> >> + // | (1 << 17) /* not able to boot in VESA1 mode */
>> >> +#ifdef CONFIG_FB_VESA
>> >> + | (1 << 18) /* able to boot in VESA2 linear mode */
>> >> +#endif
>> >> + // | (1 << 19) /* force VESA1 if in VESA2 */
>> >> + | (1 << 20) /* Cannot handle VGA graphic modes */
>> >> + ;
>>
>> No comment here. Well I know the use of ifdef's is deprecated, but
>> there is simply no other way here - and lets face it: recompiling
>> a 10 lines C function (with the host compiler and not the target one
>> when cross compiling) at each kernel configuration change is not that
>> long.
>
> // comments are deprecated, too, and you probably should use symbolic
> constant, no?
For the "//" comment I have to check those patches; I am used to put
them when the user may think of changing it for configuration.
I do not want to use symbolic constant, as in:
static const unsigned MASKVESA_1BPP = 1 << 0;
because the assembler generated is bad (a real area of memory is
reserved - it is constant in C but may be modified in assembler).
I do not put my constant as enum because I am still not a real
C++ software writer (don't tell my boss!).
I could do:
#define MASKVESA_1BPP (1 << 0)
as in Gujin vmlinuz.h, but because it is used once and only once,
I did put MASKVESA_1BPP as comment (use one source line instead
of two). I can change it, I have enough spare "linefeed" -:)
My bigger problem was for the CPUID detection, I did not know if
I should use Gujin library.h structure:
struct cpuid_flags_str {
unsigned fpu : 1;
unsigned vme : 1;
unsigned de : 1;
unsigned pse : 1;
unsigned tsc : 1;
unsigned msr : 1;
unsigned pae : 1;
unsigned mce : 1;
unsigned cx8 : 1;
unsigned apic : 1;
unsigned unused3 : 1;
unsigned sep : 1;
unsigned mtrr : 1;
unsigned pge : 1;
unsigned mca : 1;
unsigned cmov : 1;
unsigned pat : 1;
unsigned pse36 : 1;
unsigned psn : 1;
unsigned clfl : 1;
unsigned unused2 : 1;
unsigned dtes : 1;
unsigned acpi : 1;
unsigned mmx : 1;
unsigned fxsr : 1;
unsigned sse : 1;
unsigned sse2 : 1;
unsigned ss : 1;
unsigned htt : 1;
unsigned tm : 1;
unsigned ia64 : 1;
unsigned unused1 : 1;
unsigned mapping_to_define;
} __attribute__ ((packed));
and:
struct cpuid_amd_flags_str {
unsigned fpu : 1;
unsigned vme : 1;
unsigned de : 1;
unsigned pse : 1;
unsigned tsc : 1;
unsigned msr : 1;
unsigned pae : 1;
unsigned mce : 1;
unsigned cx8 : 1;
unsigned apic : 1;
unsigned unused3 : 1;
unsigned sep : 1;
unsigned mtrr : 1;
unsigned pge : 1;
unsigned mca : 1;
unsigned cmov : 1;
unsigned pat : 1; /* or FCMOV */
unsigned pse36 : 1;
unsigned unused2 : 4;
unsigned mmxplus : 1;
unsigned mmx : 1;
unsigned fxsr : 1; /* or emmx, Cyrix */
unsigned unused1 : 4;
unsigned lm : 1;
unsigned E3Dnow : 1; /* Extended 3DNow!+ */
unsigned S3Dnow : 1; /* Standard 3DNow! */
} __attribute__ ((packed));
and because of the complexity decided to build the constant
manually, which led to manual building of the video constant.
Somebody else would like some other modifications?
Cheers,
Etienne.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]