cvs commit: src/sys/boot/i386/boot2 boot1.S

Nate Lawson nate at root.org
Wed Jun 2 09:36:26 PDT 2004


On Wed, 2 Jun 2004, Poul-Henning Kamp wrote:
> phk         2004/06/02 02:38:33 PDT
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/boot/i386/boot2  boot1.S
>   Log:
>   Some embedded platforms have no keyboard controller.  Give up waiting
>   for it to react after a timeout.
>
>   Revision  Changes    Path
>   1.28      +11 -4     src/sys/boot/i386/boot2/boot1.S
>
> --- src/sys/boot/i386/boot2/boot1.S:1.27	Fri May 14 13:29:29 2004
> +++ src/sys/boot/i386/boot2/boot1.S	Wed Jun  2 02:38:32 2004
> @@ -197,13 +197,16 @@
>  		xorb %al,%al			# Zero assumed bss from
>  		rep				#  the end of boot2.bin
>  		stosb				#  up to 0x10000
> -		callw seta20			# Enable A20
> -		jmp start+MEM_JMP-MEM_ORG	# Start BTX
> +

By removing the callw/retw and moving the jmp to the end, A20 enable can't
be called as a subroutine from elsewhere.  Will it be needed elsewhere?

>  /*
>   * Enable A20 so we can access memory above 1 meg.
> + * Use the zero-valued %cx as a timeout for embedded hardware which do not
> + * have a keyboard controller.
>   */
>  seta20: 	cli				# Disable interrupts
> -seta20.1:	inb $0x64,%al			# Get status

Should be a "movw TIMEOUT, %cx" here.  (Or whatever the timeout constant
is.)

> +seta20.1:	dec %cx				# Timeout?
> +		jz seta20.3			# Yes
> +		inb $0x64,%al			# Get status
>  		testb $0x2,%al			# Busy?
>  		jnz seta20.1			# Yes
>  		movb $0xd1,%al			# Command: Write

-Nate


More information about the cvs-src mailing list