xv6/x86.h: add stosb, fix bugs in insl/outsl (rep not repne)
This commit is contained in:
		
							parent
							
								
									4003e9bed8
								
							
						
					
					
						commit
						c396d065d3
					
				
					 1 changed files with 11 additions and 2 deletions
				
			
		
							
								
								
									
										13
									
								
								x86.h
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								x86.h
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -12,7 +12,7 @@ inb(ushort port)
 | 
			
		|||
static inline void
 | 
			
		||||
insl(int port, void *addr, int cnt)
 | 
			
		||||
{
 | 
			
		||||
  asm volatile("cld; repne insl" :
 | 
			
		||||
  asm volatile("cld; rep insl" :
 | 
			
		||||
               "=D" (addr), "=c" (cnt) :
 | 
			
		||||
               "d" (port), "0" (addr), "1" (cnt) :
 | 
			
		||||
               "memory", "cc");
 | 
			
		||||
| 
						 | 
				
			
			@ -33,12 +33,21 @@ outw(ushort port, ushort data)
 | 
			
		|||
static inline void
 | 
			
		||||
outsl(int port, const void *addr, int cnt)
 | 
			
		||||
{
 | 
			
		||||
  asm volatile("cld; repne outsl" :
 | 
			
		||||
  asm volatile("cld; rep outsl" :
 | 
			
		||||
               "=S" (addr), "=c" (cnt) :
 | 
			
		||||
               "d" (port), "0" (addr), "1" (cnt) :
 | 
			
		||||
               "cc");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void
 | 
			
		||||
stosb(void *addr, int data, int cnt)
 | 
			
		||||
{
 | 
			
		||||
  asm volatile("cld; rep stosb" :
 | 
			
		||||
               "=D" (addr), "=c" (cnt) :
 | 
			
		||||
               "0" (addr), "1" (cnt), "a" (data) :
 | 
			
		||||
               "memory", "cc");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline uint
 | 
			
		||||
read_ebp(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue