|  | @@ -0,0 +1,38 @@
 | 
		
	
		
			
			|  | 1 | +/*
 | 
		
	
		
			
			|  | 2 | + * Copyright (C) 2009 H. Peter Anvin <hpa@zytor.com>
 | 
		
	
		
			
			|  | 3 | + *
 | 
		
	
		
			
			|  | 4 | + * This program is free software; you can redistribute it and/or
 | 
		
	
		
			
			|  | 5 | + * modify it under the terms of the GNU General Public License
 | 
		
	
		
			
			|  | 6 | + * as published by the Free Software Foundation; either version 2
 | 
		
	
		
			
			|  | 7 | + * of the License, or (at your option) any later version.
 | 
		
	
		
			
			|  | 8 | + *
 | 
		
	
		
			
			|  | 9 | + * This program is distributed in the hope that it will be useful,
 | 
		
	
		
			
			|  | 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
		
	
		
			
			|  | 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
		
	
		
			
			|  | 12 | + * GNU General Public License for more details.
 | 
		
	
		
			
			|  | 13 | + *
 | 
		
	
		
			
			|  | 14 | + * You should have received a copy of the GNU General Public License
 | 
		
	
		
			
			|  | 15 | + * along with this program; if not, write to the Free Software
 | 
		
	
		
			
			|  | 16 | + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | 
		
	
		
			
			|  | 17 | + */
 | 
		
	
		
			
			|  | 18 | +
 | 
		
	
		
			
			|  | 19 | +FILE_LICENCE ( GPL2_OR_LATER )
 | 
		
	
		
			
			|  | 20 | +
 | 
		
	
		
			
			|  | 21 | +	.text
 | 
		
	
		
			
			|  | 22 | +	.arch i386
 | 
		
	
		
			
			|  | 23 | +	.code16
 | 
		
	
		
			
			|  | 24 | +
 | 
		
	
		
			
			|  | 25 | +/****************************************************************************
 | 
		
	
		
			
			|  | 26 | + * Set/clear CF on the stack as appropriate, assumes stack is as it should
 | 
		
	
		
			
			|  | 27 | + * be immediately before IRET
 | 
		
	
		
			
			|  | 28 | + ****************************************************************************
 | 
		
	
		
			
			|  | 29 | + */
 | 
		
	
		
			
			|  | 30 | +	.section ".text16", "ax", @progbits
 | 
		
	
		
			
			|  | 31 | +	.globl patch_cf
 | 
		
	
		
			
			|  | 32 | +patch_cf:
 | 
		
	
		
			
			|  | 33 | +	pushw	%bp
 | 
		
	
		
			
			|  | 34 | +	movw	%sp, %bp
 | 
		
	
		
			
			|  | 35 | +	setc	8(%bp)	/* Set/reset CF; clears PF, AF, ZF, SF */
 | 
		
	
		
			
			|  | 36 | +	popw	%bp
 | 
		
	
		
			
			|  | 37 | +	ret
 | 
		
	
		
			
			|  | 38 | +	.size patch_cf, . - patch_cf
 |