Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Mar 2003 15:32:15 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 27483 for review
Message-ID:  <200303272332.h2RNWFIU017052@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=27483

Change 27483 by jhb@jhb_laptop on 2003/03/27 15:32:09

	More arcane optimizations to trim the size down.  This is now
	down to -13 bytes over.  However, if you remove the .p2align
	at the end of the file, boot2 is only at -1 byte.

Affected files ...

.. //depot/projects/smpng/sys/boot/i386/btx/btx/btx.s#6 edit

Differences ...

==== //depot/projects/smpng/sys/boot/i386/btx/btx/btx.s#6 (text+ko) ====

@@ -208,7 +208,7 @@
 ifdef(`PAGING',`
 		or $0x80000001,%eax             #  mode and enable paging
 ',`
-		or $0x01,%eax			#  mode
+		inc %ax				#  mode
 ')
 		mov %eax,%cr0			#  
 		ljmp $SEL_SCODE,$init.8		# To 32-bit code
@@ -626,11 +626,11 @@
 		movl 0x11(%edi),%eax		# Read base of
 		movb 0x17(%edi),%al		#  GDT entry
 		ror $8,%eax			#  for source
-		movl %eax,%esi			#  into %esi
+		xchgl %eax,%esi			#  into %esi
 		movl 0x19(%edi),%eax		# Read base of
 		movb 0x1f(%edi),%al		#  GDT entry for
 		ror $8,%eax			#  destination
-		movl %eax,%edi			#  into %edi
+		xchgl %eax,%edi			#  into %edi
 		pushl %ds			# Make:
 		popl %es			# es = ds
 		movzwl 0x18(%ebp),%ecx		# Get user's CX
@@ -657,23 +657,16 @@
 		cmpb $0x19,%al			# is it int 19?
 		je reboot			#  yes, reboot the machine
 		cmpb $0x15,%al			# is it int 15?
-		jne v86intn.3			#  no, skip parse
-		pushl %eax                      # stash EAX
-		movl 0x1c(%ebp),%eax		# user's saved EAX
-		cmpb $0x87,%ah			# is it the memcpy subfunction?
-		jne v86intn.1			#  no, keep checking
-		popl %eax			# get the stack straight
-		jmp int15_87			# it's our cue
-v86intn.1:	cmpw $0x4f53,%ax		# is it the delete key callout?
-		jne v86intn.2			#  no, handle the int normally
+		jne v86intn.1			#  no, skip parse
+		cmpb $0x87,0x1c(%ebp)		# is it the memcpy subfunction?
+		je int15_87			#  yes
+		cmpw $0x4f53,0x1c(%ebp)		# is it the delete key callout?
+		jne v86intn.1			#  no, handle the int normally
 		movb BDA_KEYFLAGS,%al		# get the shift key state
 		andb $0xc,%al			# mask off just Ctrl and Alt
 		cmpb $0xc,%al			# are both Ctrl and Alt down?
-		jne v86intn.2			#  no, handle the int normally
-		popl %eax			# restore EAX
-		jmp reboot			# reboot the machine
-v86intn.2:	popl %eax			# restore EAX
-v86intn.3:	subl %edi,%esi			# From
+		je reboot			# yes, reboot the machine
+v86intn.1:	subl %edi,%esi			# From
 		shrl $0x4,%edi			#  linear
 		movw %dx,-0x2(%ebx)		# Save flags
 		movw %di,-0x4(%ebx)		# Save CS
@@ -905,8 +898,7 @@
 dump.3: 	lodsl				# Set offset
 		xchgl %eax,%edx 		# Save
 		lodsl				# Get segment
-		shll $0x4,%eax			#  * 0x10
-		addl %edx,%eax			#  + offset
+		leal (%edx,%eax,4),%eax		#  * 0x10 + offset
 		xchgl %eax,%esi 		# Set pointer
 dump.4: 	movb $2,%dl			# Num lines
 dump.4a:	movb $0x10,%cl			# Bytes to dump



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303272332.h2RNWFIU017052>