Re: [RFC PATCH 10/35] Add a new head.S start-of-day file for booting on Xen.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> +	/* get vendor info */
> +	xorl %eax,%eax			# call CPUID with 0 -> return vendor ID
> +	cpuid
> +	movl %eax,X86_CPUID		# save CPUID level
> +	movl %ebx,X86_VENDOR_ID		# lo 4 chars
> +	movl %edx,X86_VENDOR_ID+4	# next 4 chars
> +	movl %ecx,X86_VENDOR_ID+8	# last 4 chars
> +
> +	movl $1,%eax		# Use the CPUID instruction to get CPU type
> +	cpuid
> +	movb %al,%cl		# save reg for future use
> +	andb $0x0f,%ah		# mask processor family
> +	movb %ah,X86
> +	andb $0xf0,%al		# mask model
> +	shrb $4,%al
> +	movb %al,X86_MODEL
> +	andb $0x0f,%cl		# mask mask revision
> +	movb %cl,X86_MASK
> +	movl %edx,X86_CAPABILITY

Can you make the CPU detection a common subfunction with the normal head.S ?


> +/*
> + * BSS section
> + */
> +.section ".bss.page_aligned","w"
> +ENTRY(swapper_pg_dir)
> +	.fill 1024,4,0
> +ENTRY(empty_zero_page)
> +	.fill 4096,1,0
> +
> +/*
> + * This starts the data section.
> + */
> +.data
> +
> +	ALIGN
> +	.word 0				# 32 bit align gdt_desc.address
> +	.globl cpu_gdt_descr
> +cpu_gdt_descr:
> +	.word GDT_SIZE
> +	.long cpu_gdt_table
> +
> +	.fill NR_CPUS-1,8,0		# space for the other GDT descriptors
> +
> +/*
> + * The Global Descriptor Table contains 28 quadwords, per-CPU.
> + */
> +	.align PAGE_SIZE_asm
> +ENTRY(cpu_gdt_table)

GDT and empty_zero_page should be shared (they're identical right?) Put them into a 
new separate common file.

> + * __xen_guest information
> + */
> +.macro utoa value
> + .if (\value) < 0 || (\value) >= 0x10
> +	utoa (((\value)>>4)&0x0fffffff)
> + .endif
> + .if ((\value) & 0xf) < 10
> +  .byte '0' + ((\value) & 0xf)
> + .else
> +  .byte 'A' + ((\value) & 0xf) - 10
> + .endif
> +.endm

Interesting macro abuse.

-Andi
-
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]
  Powered by Linux