misc.S 29.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/*
 *  arch/ppc/kernel/misc.S
 *
 *  
 *
 * This file contains miscellaneous low-level functions.
 *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
 *
 * Largely rewritten by Cort Dougan (cort@cs.nmt.edu)
 * and Paul Mackerras.
 * Adapted for iSeries by Mike Corrigan (mikejc@us.ibm.com)
 * PPC64 updates by Dave Engebretsen (engebret@us.ibm.com) 
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 *
 */

#include <linux/config.h>
#include <linux/sys.h>
#include <asm/unistd.h>
#include <asm/errno.h>
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/cache.h>
28 29
#include <asm/ppc_asm.h>
#include <asm/offsets.h>
30
#include <asm/cputable.h>
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

	.text

/*
 * Returns (address we're running at) - (address we were linked at)
 * for use before the text and data are mapped to KERNELBASE.
 */

_GLOBAL(reloc_offset)
	mflr	r0
	bl	1f
1:	mflr	r3
	LOADADDR(r4,1b)
	sub	r3,r4,r3
	mtlr	r0
	blr

_GLOBAL(get_msr)
	mfmsr	r3
	blr

_GLOBAL(get_dar)
	mfdar	r3
	blr

_GLOBAL(get_srr0)
	mfsrr0  r3
	blr

_GLOBAL(get_srr1)
	mfsrr1  r3
	blr
	
_GLOBAL(get_sp)
	mr	r3,r1
	blr
		
#ifdef CONFIG_PPC_ISERIES
69 70 71
/* unsigned long local_save_flags(void) */
_GLOBAL(local_get_flags)
	lbz	r3,PACAPROCENABLED(r13)
72 73
	blr

74 75 76 77 78 79 80 81 82 83
/* unsigned long local_irq_disable(void) */
_GLOBAL(local_irq_disable)
	lbz	r3,PACAPROCENABLED(r13)
	li	r4,0
	stb	r4,PACAPROCENABLED(r13)
	blr			/* Done */

/* void local_irq_restore(unsigned long flags) */	
_GLOBAL(local_irq_restore)
	lbz	r5,PACAPROCENABLED(r13)
84 85 86 87
	 /* Check if things are setup the way we want _already_. */
	cmpw	0,r3,r5
	beqlr
	/* are we enabling interrupts? */
88
	cmpdi	0,r3,0
89
	stb	r3,PACAPROCENABLED(r13)
90 91
	beqlr
	/* Check pending interrupts */
92 93
	/*   A decrementer, IPI or PMC interrupt may have occurred
	 *   while we were in the hypervisor (which enables) */
94 95
	ld	r4,PACALPPACA+LPPACAANYINT(r13)
	cmpdi	r4,0
96 97
	beqlr

98
	/*
99 100 101 102 103
	 * Handle pending interrupts in interrupt context
	 */
	li	r0,0x5555
	sc
	blr
104
#endif /* CONFIG_PPC_ISERIES */
105

Paul Mackerras's avatar
Paul Mackerras committed
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
#ifdef CONFIG_IRQSTACKS
_GLOBAL(call_do_softirq)
	mflr	r0
	std	r0,16(r1)
	stdu	r1,THREAD_SIZE-112(r3)
	mr	r1,r3
	bl	.__do_softirq
	ld	r1,0(r1)
	ld	r0,16(r1)
	mtlr	r0
	blr

_GLOBAL(call_handle_irq_event)
	mflr	r0
	std	r0,16(r1)
	stdu	r1,THREAD_SIZE-112(r6)
	mr	r1,r6
	bl	.handle_irq_event
	ld	r1,0(r1)
	ld	r0,16(r1)
	mtlr	r0
	blr
#endif /* CONFIG_IRQSTACKS */

130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
	/*
 * To be called by C code which needs to do some operations with MMU
 * disabled. Note that interrupts have to be disabled by the caller
 * prior to calling us. The code called _MUST_ be in the RMO of course
 * and part of the linear mapping as we don't attempt to translate the
 * stack pointer at all. The function is called with the stack switched
 * to this CPU emergency stack
 *
 * prototype is void *call_with_mmu_off(void *func, void *data);
 *
 * the called function is expected to be of the form
 *
 * void *called(void *data); 
 */
_GLOBAL(call_with_mmu_off)
	mflr	r0			/* get link, save it on stackframe */
	std	r0,16(r1)
	mr	r1,r5			/* save old stack ptr */
	ld	r1,PACAEMERGSP(r13)	/* get emerg. stack */
	subi	r1,r1,STACK_FRAME_OVERHEAD
	std	r0,16(r1)		/* save link on emerg. stack */
	std	r5,0(r1)		/* save old stack ptr in backchain */
	ld	r3,0(r3)		/* get to real function ptr (assume same TOC) */
	bl	2f			/* we need LR to return, continue at label 2 */

	ld	r0,16(r1)		/* we return here from the call, get LR and */
	ld	r1,0(r1)		/* .. old stack ptr */
	mtspr	SPRN_SRR0,r0		/* and get back to virtual mode with these */
	mfmsr	r4
	ori	r4,r4,MSR_IR|MSR_DR
	mtspr	SPRN_SRR1,r4
	rfid

2:	mtspr	SPRN_SRR0,r3		/* coming from above, enter real mode */
	mr	r3,r4			/* get parameter */
	mfmsr	r0
	ori	r0,r0,MSR_IR|MSR_DR
	xori	r0,r0,MSR_IR|MSR_DR
	mtspr	SPRN_SRR1,r0
	rfid
	
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
/*
 * Flush instruction cache.
 */
_GLOBAL(flush_instruction_cache)

/*
 * This is called by kgdb code
 * and should probably go away
 * to be replaced by invalidating
 * the cache lines that are actually
 * modified
 */
	/* use invalidate-all bit in HID0
	 *  - is this consistent across all 64-bit cpus?  -- paulus */
	mfspr	r3,HID0
	ori	r3,r3,HID0_ICFI
	mtspr	HID0,r3
	sync
	isync
	blr

/*
 * Write any modified data cache blocks out to memory
 * and invalidate the corresponding instruction cache blocks.
 *
 * flush_icache_range(unsigned long start, unsigned long stop)
 *
 *   flush all bytes from start through stop-1 inclusive
 */

201
_GLOBAL(__flush_icache_range)
202 203 204 205 206 207 208 209 210 211

/*
 * Flush the data cache to memory 
 * 
 * Different systems have different cache line sizes
 * and in some cases i-cache and d-cache line sizes differ from
 * each other.
 */
	LOADADDR(r10,naca)		/* Get Naca address */
	ld	r10,0(r10)
212 213 214
	LOADADDR(r11,systemcfg)		/* Get systemcfg address */
	ld	r11,0(r11)
	lwz	r7,DCACHEL1LINESIZE(r11)/* Get cache line size */
215 216 217 218
	addi	r5,r7,-1
	andc	r6,r3,r5		/* round low to line bdy */
	subf	r8,r6,r4		/* compute length */
	add	r8,r8,r5		/* ensure we get enough */
219
	lwz	r9,DCACHEL1LOGLINESIZE(r10)	/* Get log-2 of cache line size */
220 221 222 223 224 225 226 227 228 229
	srw.	r8,r8,r9		/* compute line count */
	beqlr				/* nothing to do? */
	mtctr	r8
1:	dcbst	0,r6
	add	r6,r6,r7
	bdnz	1b
	sync

/* Now invalidate the instruction cache */
	
230
	lwz	r7,ICACHEL1LINESIZE(r11)	/* Get Icache line size */
231 232 233 234
	addi	r5,r7,-1
	andc	r6,r3,r5		/* round low to line bdy */
	subf	r8,r6,r4		/* compute length */
	add	r8,r8,r5
235
	lwz	r9,ICACHEL1LOGLINESIZE(r10)	/* Get log-2 of Icache line size */
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260
	srw.	r8,r8,r9		/* compute line count */
	beqlr				/* nothing to do? */
	mtctr	r8
2:	icbi	0,r6
	add	r6,r6,r7
	bdnz	2b
	isync
	blr
	
/*
 * Like above, but only do the D-cache.
 *
 * flush_dcache_range(unsigned long start, unsigned long stop)
 *
 *    flush all bytes from start to stop-1 inclusive
 */
_GLOBAL(flush_dcache_range)

/*
 * Flush the data cache to memory 
 * 
 * Different systems have different cache line sizes
 */
	LOADADDR(r10,naca)		/* Get Naca address */
	ld	r10,0(r10)
261 262 263
	LOADADDR(r11,systemcfg)		/* Get systemcfg address */
	ld	r11,0(r11)
	lwz	r7,DCACHEL1LINESIZE(r11)	/* Get dcache line size */
264 265 266 267
	addi	r5,r7,-1
	andc	r6,r3,r5		/* round low to line bdy */
	subf	r8,r6,r4		/* compute length */
	add	r8,r8,r5		/* ensure we get enough */
268
	lwz	r9,DCACHEL1LOGLINESIZE(r10)	/* Get log-2 of dcache line size */
269 270 271 272 273 274 275 276 277
	srw.	r8,r8,r9		/* compute line count */
	beqlr				/* nothing to do? */
	mtctr	r8
0:	dcbst	0,r6
	add	r6,r6,r7
	bdnz	0b
	sync
	blr

278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
/*
 * Like above, but works on non-mapped physical addresses.
 * Use only for non-LPAR setups ! It also assumes real mode
 * is cacheable. Used for flushing out the DART before using
 * it as uncacheable memory 
 *
 * flush_dcache_phys_range(unsigned long start, unsigned long stop)
 *
 *    flush all bytes from start to stop-1 inclusive
 */
_GLOBAL(flush_dcache_phys_range)
	LOADADDR(r10,naca)		/* Get Naca address */
	ld	r10,0(r10)
	LOADADDR(r11,systemcfg)		/* Get systemcfg address */
	ld	r11,0(r11)
	lwz	r7,DCACHEL1LINESIZE(r11)	/* Get dcache line size */
	addi	r5,r7,-1
	andc	r6,r3,r5		/* round low to line bdy */
	subf	r8,r6,r4		/* compute length */
	add	r8,r8,r5		/* ensure we get enough */
	lwz	r9,DCACHEL1LOGLINESIZE(r10)	/* Get log-2 of dcache line size */
	srw.	r8,r8,r9		/* compute line count */
	beqlr				/* nothing to do? */
	mfmsr	r5			/* Disable MMU Data Relocation */
	ori	r0,r5,MSR_DR
	xori	r0,r0,MSR_DR
	sync
	mtmsr	r0
	sync
	isync
	mtctr	r8
0:	dcbst	0,r6
	add	r6,r6,r7
	bdnz	0b
	sync
	isync
	mtmsr	r5			/* Re-enable MMU Data Relocation */
	sync
	isync
	blr


320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
/*
 * Flush a particular page from the data cache to RAM.
 * Note: this is necessary because the instruction cache does *not*
 * snoop from the data cache.
 *
 *	void __flush_dcache_icache(void *page)
 */
_GLOBAL(__flush_dcache_icache)
/*
 * Flush the data cache to memory 
 * 
 * Different systems have different cache line sizes
 */

/* Flush the dcache */
	LOADADDR(r7,naca)
	ld	r7,0(r7)
337 338
	LOADADDR(r8,systemcfg)			/* Get systemcfg address */
	ld	r8,0(r8)
339
	clrrdi	r3,r3,12           	    /* Page align */
340 341
	lwz	r4,DCACHEL1LINESPERPAGE(r7)	/* Get # dcache lines per page */
	lwz	r5,DCACHEL1LINESIZE(r8)		/* Get dcache line size */
342 343 344 345 346 347 348 349 350
	mr	r6,r3
	mtctr	r4
0:	dcbst	0,r6
	add	r6,r6,r5
	bdnz	0b
	sync

/* Now invalidate the icache */	

351 352
	lwz	r4,ICACHEL1LINESPERPAGE(r7)	/* Get # icache lines per page */
	lwz	r5,ICACHEL1LINESIZE(r8)		/* Get icache line size */
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384
	mtctr	r4
1:	icbi	0,r3
	add	r3,r3,r5
	bdnz	1b
	isync
	blr
	
/*
 * I/O string operations
 *
 * insb(port, buf, len)
 * outsb(port, buf, len)
 * insw(port, buf, len)
 * outsw(port, buf, len)
 * insl(port, buf, len)
 * outsl(port, buf, len)
 * insw_ns(port, buf, len)
 * outsw_ns(port, buf, len)
 * insl_ns(port, buf, len)
 * outsl_ns(port, buf, len)
 *
 * The *_ns versions don't do byte-swapping.
 */
_GLOBAL(_insb)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,1
	blelr-
00:	lbz	r5,0(r3)
	eieio
	stbu	r5,1(r4)
	bdnz	00b
385 386
	twi	0,r5,0
	isync
387 388 389 390 391 392 393 394 395 396
	blr

_GLOBAL(_outsb)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,1
	blelr-
00:	lbzu	r5,1(r4)
	stb	r5,0(r3)
	bdnz	00b
397
	sync
398 399 400 401 402 403 404 405 406 407 408
	blr	

_GLOBAL(_insw)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,2
	blelr-
00:	lhbrx	r5,0,r3
	eieio
	sthu	r5,2(r4)
	bdnz	00b
409 410
	twi	0,r5,0
	isync
411 412 413 414 415 416 417 418 419 420
	blr

_GLOBAL(_outsw)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,2
	blelr-
00:	lhzu	r5,2(r4)
	sthbrx	r5,0,r3	
	bdnz	00b
421
	sync
422 423 424 425 426 427 428 429 430 431 432
	blr	

_GLOBAL(_insl)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,4
	blelr-
00:	lwbrx	r5,0,r3
	eieio
	stwu	r5,4(r4)
	bdnz	00b
433 434
	twi	0,r5,0
	isync
435 436 437 438 439 440 441 442 443 444
	blr

_GLOBAL(_outsl)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,4
	blelr-
00:	lwzu	r5,4(r4)
	stwbrx	r5,0,r3
	bdnz	00b
445
	sync
446 447
	blr	

448
/* _GLOBAL(ide_insw) now in drivers/ide/ide-iops.c */
449 450 451 452 453 454 455 456 457
_GLOBAL(_insw_ns)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,2
	blelr-
00:	lhz	r5,0(r3)
	eieio
	sthu	r5,2(r4)
	bdnz	00b
458 459
	twi	0,r5,0
	isync
460 461
	blr

462
/* _GLOBAL(ide_outsw) now in drivers/ide/ide-iops.c */
463 464 465 466 467 468 469 470
_GLOBAL(_outsw_ns)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,2
	blelr-
00:	lhzu	r5,2(r4)
	sth	r5,0(r3)
	bdnz	00b
471
	sync
472 473 474 475 476 477 478 479 480 481 482
	blr	

_GLOBAL(_insl_ns)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,4
	blelr-
00:	lwz	r5,0(r3)
	eieio
	stwu	r5,4(r4)
	bdnz	00b
483 484
	twi	0,r5,0
	isync
485 486 487 488 489 490 491 492 493 494
	blr

_GLOBAL(_outsl_ns)
	cmpwi	0,r5,0
	mtctr	r5
	subi	r4,r4,4
	blelr-
00:	lwzu	r5,4(r4)
	stw	r5,0(r3)
	bdnz	00b
495
	sync
496 497 498 499
	blr	


_GLOBAL(cvt_fd)
500
	lfd	0,0(r5)		/* load up fpscr value */
501 502 503 504
	mtfsf	0xff,0
	lfs	0,0(r3)
	stfd	0,0(r4)
	mffs	0		/* save new fpscr value */
505
	stfd	0,0(r5)
506 507 508
	blr

_GLOBAL(cvt_df)
509
	lfd	0,0(r5)		/* load up fpscr value */
510 511 512 513
	mtfsf	0xff,0
	lfd	0,0(r3)
	stfs	0,0(r4)
	mffs	0		/* save new fpscr value */
514
	stfd	0,0(r5)
515 516
	blr

517
/*
518
 * identify_cpu and calls setup_cpu
519 520 521 522 523 524 525 526 527 528 529 530 531 532 533
 * In:	r3 = base of the cpu_specs array
 *	r4 = address of cur_cpu_spec
 *	r5 = relocation offset
 */
_GLOBAL(identify_cpu)
	mfpvr	r7
1:
	lwz	r8,CPU_SPEC_PVR_MASK(r3)
	and	r8,r8,r7
	lwz	r9,CPU_SPEC_PVR_VALUE(r3)
	cmplw	0,r9,r8
	beq	1f
	addi	r3,r3,CPU_SPEC_ENTRY_SIZE
	b	1b
1:
534 535 536 537 538 539 540 541 542 543 544
	add	r0,r3,r5
	std	r0,0(r4)
	ld	r4,CPU_SPEC_SETUP(r3)
	sub	r4,r4,r5
	ld	r4,0(r4)
	sub	r4,r4,r5
	mtctr	r4
	/* Calling convention for cpu setup is r3=offset, r4=cur_cpu_spec */
	mr	r4,r3
	mr	r3,r5
	bctr
545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593

/*
 * do_cpu_ftr_fixups - goes through the list of CPU feature fixups
 * and writes nop's over sections of code that don't apply for this cpu.
 * r3 = data offset (not changed)
 */
_GLOBAL(do_cpu_ftr_fixups)
	/* Get CPU 0 features */
	LOADADDR(r6,cur_cpu_spec)
	sub	r6,r6,r3
	ld	r4,0(r6)
	sub	r4,r4,r3
	ld	r4,CPU_SPEC_FEATURES(r4)
	/* Get the fixup table */
	LOADADDR(r6,__start___ftr_fixup)
	sub	r6,r6,r3
	LOADADDR(r7,__stop___ftr_fixup)
	sub	r7,r7,r3
	/* Do the fixup */
1:	cmpld	r6,r7
	bgelr
	addi	r6,r6,32
	ld	r8,-32(r6)	/* mask */
	and	r8,r8,r4
	ld	r9,-24(r6)	/* value */
	cmpld	r8,r9
	beq	1b
	ld	r8,-16(r6)	/* section begin */
	ld	r9,-8(r6)	/* section end */
	subf.	r9,r8,r9
	beq	1b
	/* write nops over the section of code */
	/* todo: if large section, add a branch at the start of it */
	srwi	r9,r9,2
	mtctr	r9
	sub	r8,r8,r3
	lis	r0,0x60000000@h	/* nop */
3:	stw	r0,0(r8)
	andi.	r10,r4,CPU_FTR_SPLIT_ID_CACHE@l
	beq	2f
	dcbst	0,r8		/* suboptimal, but simpler */
	sync
	icbi	0,r8
2:	addi	r8,r8,4
	bdnz	3b
	sync			/* additional sync needed on g4 */
	isync
	b	1b

594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656
#ifdef CONFIG_PPC_PMAC
/*
 * Do an IO access in real mode
 */
_GLOBAL(real_readb)
	mfmsr	r7
	ori	r0,r7,MSR_DR
	xori	r0,r0,MSR_DR
	sync
	mtmsrd	r0
	sync
	isync
	mfspr	r6,SPRN_HID4
	rldicl	r5,r6,32,0
	ori	r5,r5,0x100
	rldicl	r5,r5,32,0
	sync
	mtspr	SPRN_HID4,r5
	isync
	slbia
	isync
	lbz	r3,0(r3)
	sync
	mtspr	SPRN_HID4,r6
	isync
	slbia
	isync
	mtmsrd	r7
	sync
	isync
	blr

	/*
 * Do an IO access in real mode
 */
_GLOBAL(real_writeb)
	mfmsr	r7
	ori	r0,r7,MSR_DR
	xori	r0,r0,MSR_DR
	sync
	mtmsrd	r0
	sync
	isync
	mfspr	r6,SPRN_HID4
	rldicl	r5,r6,32,0
	ori	r5,r5,0x100
	rldicl	r5,r5,32,0
	sync
	mtspr	SPRN_HID4,r5
	isync
	slbia
	isync
	stb	r3,0(r4)
	sync
	mtspr	SPRN_HID4,r6
	isync
	slbia
	isync
	mtmsrd	r7
	sync
	isync
	blr
#endif /* CONFIG_PPC_PMAC */
657

658 659 660 661 662
/*
 * Create a kernel thread
 *   kernel_thread(fn, arg, flags)
 */
_GLOBAL(kernel_thread)
663 664 665 666 667
	std	r29,-24(r1)
	std	r30,-16(r1)
	stdu	r1,-STACK_FRAME_OVERHEAD(r1)
	mr	r29,r3
	mr	r30,r4
668
	ori	r3,r5,CLONE_VM	/* flags */
669
	oris	r3,r3,(CLONE_UNTRACED>>16)
670
	li	r4,0		/* new sp (unused) */
671 672 673
	li	r0,__NR_clone
	sc
	cmpi	0,r3,0		/* parent or child? */
674
	bne	1f		/* return if parent */
Anton Blanchard's avatar
Anton Blanchard committed
675 676
	li	r0,0
	stdu	r0,-STACK_FRAME_OVERHEAD(r1)
677 678 679 680
	ld	r2,8(r29)
	ld	r29,0(r29)
	mtlr	r29              /* fn addr in lr */
	mr	r3,r30	        /* load arg and call fn */
681 682 683 684
	blrl
	li	r0,__NR_exit	/* exit after child exits */
        li	r3,0
	sc
685 686 687 688 689
1:	addi	r1,r1,STACK_FRAME_OVERHEAD	
	ld	r29,-24(r1)
	ld	r30,-16(r1)
	blr

690
#ifndef CONFIG_PPC_PSERIE	/* hack hack hack */
691 692 693
#define ppc_rtas	sys_ni_syscall
#endif

694
/* Why isn't this a) automatic, b) written in 'C'? */	
695
	.balign 8
696
_GLOBAL(sys_call_table32)
697
	.llong .sys_restart_syscall	/* 0 */
698
	.llong .sys_exit
699
	.llong .ppc_fork
700 701 702 703 704 705 706 707 708 709 710
	.llong .sys_read
	.llong .sys_write
	.llong .sys32_open		/* 5 */
	.llong .sys_close
	.llong .sys32_waitpid
	.llong .sys32_creat
	.llong .sys_link
	.llong .sys_unlink      	/* 10 */
	.llong .sys32_execve
	.llong .sys_chdir
	.llong .sys32_time
711 712
	.llong .sys_mknod
	.llong .sys_chmod		/* 15 */
713
	.llong .sys_lchown
714 715
	.llong .sys_ni_syscall		/* old break syscall */
	.llong .sys_ni_syscall		/* old stat syscall */
716
	.llong .ppc32_lseek
717
	.llong .sys_getpid              /* 20 */
718
	.llong .compat_sys_mount
719 720 721
	.llong .sys_oldumount
	.llong .sys_setuid
	.llong .sys_getuid
722
	.llong .ppc64_sys32_stime       /* 25 */
723 724
	.llong .sys32_ptrace
	.llong .sys_alarm
725
	.llong .sys_ni_syscall		/* old fstat syscall */
726
	.llong .sys32_pause
727
	.llong .compat_sys_utime		/* 30 */
728 729
	.llong .sys_ni_syscall		/* old stty syscall */
	.llong .sys_ni_syscall		/* old gtty syscall */
730 731
	.llong .sys32_access
	.llong .sys32_nice
732
	.llong .sys_ni_syscall		/* 35 - old ftime syscall */
733 734 735 736 737 738 739
	.llong .sys_sync
	.llong .sys32_kill
	.llong .sys_rename
	.llong .sys32_mkdir
	.llong .sys_rmdir		/* 40 */
	.llong .sys_dup
	.llong .sys_pipe
740
	.llong .compat_sys_times
741 742
	.llong .sys_ni_syscall		/* old prof syscall */
	.llong .sys_brk			/* 45 */
743 744 745 746
	.llong .sys_setgid
	.llong .sys_getgid
	.llong .sys_signal
	.llong .sys_geteuid
747
	.llong .sys_getegid		/* 50 */
748
	.llong .sys_acct
749
	.llong .sys_umount
750
	.llong .sys_ni_syscall		/* old lock syscall */
Pavel Machek's avatar
Pavel Machek committed
751 752
	.llong .compat_sys_ioctl
	.llong .compat_sys_fcntl		/* 55 */
753
	.llong .sys_ni_syscall		/* old mpx syscall */
754
	.llong .sys32_setpgid
755
	.llong .sys_ni_syscall		/* old ulimit syscall */
756
	.llong .sys32_olduname
757 758 759 760 761 762 763 764 765 766 767 768
	.llong .sys32_umask		/* 60 */
	.llong .sys_chroot
	.llong .sys_ustat
	.llong .sys_dup2
	.llong .sys_getppid
	.llong .sys_getpgrp	        /* 65 */
	.llong .sys_setsid
	.llong .sys32_sigaction
	.llong .sys_sgetmask
	.llong .sys32_ssetmask
	.llong .sys_setreuid	        /* 70 */
	.llong .sys_setregid
769
	.llong .ppc32_sigsuspend
770
	.llong .compat_sys_sigpending
771
	.llong .sys32_sethostname
772 773 774
	.llong .compat_sys_setrlimit	        /* 75 */
	.llong .compat_sys_old_getrlimit
	.llong .compat_sys_getrusage
775 776 777 778
	.llong .sys32_gettimeofday
	.llong .sys32_settimeofday
	.llong .sys32_getgroups	        /* 80 */
	.llong .sys32_setgroups
779
	.llong .sys_ni_syscall		/* old select syscall */
780
	.llong .sys_symlink
781
	.llong .sys_ni_syscall		/* old lstat syscall */
782 783
	.llong .sys32_readlink	        /* 85 */
	.llong .sys_uselib
784 785
	.llong .sys_swapon
	.llong .sys_reboot
786
	.llong .old32_readdir
787
	.llong .sys_mmap		/* 90 */
788 789 790 791 792 793 794
	.llong .sys_munmap
	.llong .sys_truncate
	.llong .sys_ftruncate
	.llong .sys_fchmod
	.llong .sys_fchown              /* 95 */
	.llong .sys32_getpriority
	.llong .sys32_setpriority
795
	.llong .sys_ni_syscall		/* old profil syscall */
796 797
	.llong .compat_sys_statfs
	.llong .compat_sys_fstatfs		/* 100 */
Anton Blanchard's avatar
Anton Blanchard committed
798
	.llong .sys_ni_syscall		/* old ioperm syscall */
799
	.llong .compat_sys_socketcall
800
	.llong .sys32_syslog
801 802
	.llong .compat_sys_setitimer
	.llong .compat_sys_getitimer		/* 105 */
803 804 805
	.llong .compat_sys_newstat
	.llong .compat_sys_newlstat
	.llong .compat_sys_newfstat
806
	.llong .sys_uname
807
	.llong .sys_ni_syscall		/* 110 old iopl syscall */
808
	.llong .sys_vhangup
809 810
	.llong .sys_ni_syscall		/* old idle syscall */
	.llong .sys_ni_syscall		/* old vm86 syscall */
811
	.llong .compat_sys_wait4
812
	.llong .sys_swapoff		/* 115 */
813 814 815 816
	.llong .sys32_sysinfo
	.llong .sys32_ipc
	.llong .sys_fsync
	.llong .ppc32_sigreturn
817
	.llong .ppc_clone		/* 120 */
818 819
	.llong .sys32_setdomainname
	.llong .ppc64_newuname
820
	.llong .sys_ni_syscall		/* old modify_ldt syscall */
821
	.llong .sys32_adjtimex
822
	.llong .sys_mprotect		/* 125 */
823
	.llong .compat_sys_sigprocmask
Anton Blanchard's avatar
Anton Blanchard committed
824
	.llong .sys_ni_syscall		/* old create_module syscall */
825 826
	.llong .sys_init_module
	.llong .sys_delete_module
Anton Blanchard's avatar
Anton Blanchard committed
827
	.llong .sys_ni_syscall		/* 130 old get_kernel_syms syscall */
Anton Blanchard's avatar
Anton Blanchard committed
828
	.llong .sys_quotactl
829 830
	.llong .sys32_getpgid
	.llong .sys_fchdir
831
	.llong .sys_bdflush
832
	.llong .sys32_sysfs		/* 135 */
833
	.llong .ppc64_personality
834 835 836 837 838 839 840
	.llong .sys_ni_syscall	        /* for afs_syscall */
	.llong .sys_setfsuid
	.llong .sys_setfsgid
	.llong .sys_llseek	        /* 140 */
        .llong .sys32_getdents
	.llong .ppc32_select
	.llong .sys_flock
841
	.llong .sys_msync
842 843
	.llong .compat_sys_readv	/* 145 */
	.llong .compat_sys_writev
844 845 846 847 848
	.llong .sys32_getsid
	.llong .sys_fdatasync
	.llong .sys32_sysctl
	.llong .sys_mlock		/* 150 */
	.llong .sys_munlock
849
	.llong .sys_mlockall
850 851 852 853 854 855 856 857 858
	.llong .sys_munlockall
	.llong .sys32_sched_setparam
	.llong .sys32_sched_getparam	/* 155 */
	.llong .sys32_sched_setscheduler
	.llong .sys32_sched_getscheduler
	.llong .sys_sched_yield
	.llong .sys32_sched_get_priority_max
	.llong .sys32_sched_get_priority_min  /* 160 */
	.llong .sys32_sched_rr_get_interval
859
	.llong .compat_sys_nanosleep
860
	.llong .sys_mremap
861 862
	.llong .sys_setresuid
	.llong .sys_getresuid	        /* 165 */
Anton Blanchard's avatar
Anton Blanchard committed
863
	.llong .sys_ni_syscall		/* old query_module syscall */
864
	.llong .sys_poll
865
	.llong .compat_sys_nfsservctl
866 867 868 869 870 871 872 873 874
	.llong .sys_setresgid
	.llong .sys_getresgid	        /* 170 */
	.llong .sys32_prctl
	.llong .ppc32_rt_sigreturn
	.llong .sys32_rt_sigaction
	.llong .sys32_rt_sigprocmask
	.llong .sys32_rt_sigpending     /* 175 */
	.llong .sys32_rt_sigtimedwait
	.llong .sys32_rt_sigqueueinfo
875
	.llong .ppc32_rt_sigsuspend
876 877
	.llong .sys32_pread64
	.llong .sys32_pwrite64	        /* 180 */
878 879 880 881
	.llong .sys_chown
	.llong .sys_getcwd
	.llong .sys_capget
	.llong .sys_capset
882
	.llong .sys32_sigaltstack	/* 185 */
883
	.llong .sys32_sendfile
884 885
	.llong .sys_ni_syscall		/* reserved for streams1 */
	.llong .sys_ni_syscall		/* reserved for streams2 */
886
	.llong .ppc_vfork
887
	.llong .compat_sys_getrlimit	        /* 190 */
888
	.llong .sys32_readahead
889
	.llong .sys32_mmap2
890 891 892 893 894 895 896
	.llong .sys32_truncate64
	.llong .sys32_ftruncate64
	.llong .sys_stat64      	/* 195 */
	.llong .sys_lstat64
	.llong .sys_fstat64
	.llong .sys32_pciconfig_read
	.llong .sys32_pciconfig_write
897
	.llong .sys32_pciconfig_iobase	/* 200 - pciconfig_iobase */
898 899 900
	.llong .sys_ni_syscall		/* reserved for MacOnLinux */
	.llong .sys_getdents64
	.llong .sys_pivot_root
901
	.llong .compat_sys_fcntl64
902
	.llong .sys_madvise		/* 205 */
903 904 905
	.llong .sys_mincore
	.llong .sys_gettid
	.llong .sys_tkill
906
	.llong .sys_setxattr
907
	.llong .sys_lsetxattr		/* 210 */
908 909 910 911
	.llong .sys_fsetxattr
	.llong .sys_getxattr
	.llong .sys_lgetxattr
	.llong .sys_fgetxattr
912
	.llong .sys_listxattr		/* 215 */
913 914 915 916 917
	.llong .sys_llistxattr
	.llong .sys_flistxattr
	.llong .sys_removexattr
	.llong .sys_lremovexattr
	.llong .sys_fremovexattr	/* 220 */
918
	.llong .compat_sys_futex
919 920
	.llong .compat_sys_sched_setaffinity
	.llong .compat_sys_sched_getaffinity
921
	.llong .sys_ni_syscall
922
	.llong .sys_ni_syscall		/* 225 - reserved for tux */
923
	.llong .sys32_sendfile64
924
	.llong .compat_sys_io_setup
925
	.llong .sys_io_destroy
926 927
	.llong .compat_sys_io_getevents
	.llong .compat_sys_io_submit
928
	.llong .sys_io_cancel
929 930
	.llong .sys_set_tid_address
	.llong .ppc32_fadvise64
931
	.llong .sys_exit_group
932
	.llong .ppc32_lookup_dcookie	/* 235 */
933 934 935
	.llong .sys_epoll_create
	.llong .sys_epoll_ctl
	.llong .sys_epoll_wait
936
	.llong .sys_remap_file_pages
937 938 939 940 941 942 943 944 945
	.llong .ppc32_timer_create	/* 240 */
	.llong .compat_timer_settime
	.llong .compat_timer_gettime
	.llong .sys_timer_getoverrun
	.llong .sys_timer_delete
	.llong .compat_clock_settime	/* 245 */
	.llong .compat_clock_gettime
	.llong .compat_clock_getres
	.llong .compat_clock_nanosleep
946
	.llong .ppc32_swapcontext
947 948
	.llong .sys32_tgkill		/* 250 */
	.llong .sys32_utimes
949 950 951
	.llong .compat_statfs64
	.llong .compat_fstatfs64
	.llong .ppc32_fadvise64_64	/* 32bit only fadvise64_64 */
952
	.llong .ppc_rtas		/* 255 */
953 954 955
	.llong .sys_ni_syscall		/* 256 reserved for sys_debug_setcontext */
	.llong .sys_ni_syscall		/* 257 reserved for vserver */
	.llong .sys_ni_syscall		/* 258 reserved for new sys_remap_file_pages */
956 957 958
	.llong .compat_mbind
	.llong .compat_get_mempolicy	/* 260 */
	.llong .compat_set_mempolicy
959 960 961 962 963 964
	.llong .compat_sys_mq_open
	.llong .sys_mq_unlink
	.llong .compat_sys_mq_timedsend
	.llong .compat_sys_mq_timedreceive /* 265 */
	.llong .compat_sys_mq_notify
	.llong .compat_sys_mq_getsetattr
965
	.llong .sys_ni_syscall		/* 268 reserved for sys_kexec_load */
966

967
	.balign 8
968
_GLOBAL(sys_call_table)
969
	.llong .sys_restart_syscall	/* 0 */
970
	.llong .sys_exit
971
	.llong .ppc_fork
972 973 974 975 976 977 978
	.llong .sys_read
	.llong .sys_write
	.llong .sys_open		/* 5 */
	.llong .sys_close
	.llong .sys_waitpid
	.llong .sys_creat
	.llong .sys_link
979
	.llong .sys_unlink		/* 10 */
980 981 982 983 984 985
	.llong .sys_execve
	.llong .sys_chdir
	.llong .sys64_time
	.llong .sys_mknod
	.llong .sys_chmod		/* 15 */
	.llong .sys_lchown
986 987
	.llong .sys_ni_syscall		/* old break syscall */
	.llong .sys_ni_syscall		/* old stat syscall */
988
	.llong .sys_lseek
989
	.llong .sys_getpid		/* 20 */
990
	.llong .sys_mount
991
	.llong .sys_ni_syscall		/* old umount syscall */
992 993 994 995 996
	.llong .sys_setuid
	.llong .sys_getuid
	.llong .ppc64_sys_stime		/* 25 */
	.llong .sys_ptrace
	.llong .sys_alarm
997
	.llong .sys_ni_syscall		/* old fstat syscall */
998 999
	.llong .sys_pause
	.llong .sys_utime		/* 30 */
1000 1001
	.llong .sys_ni_syscall		/* old stty syscall */
	.llong .sys_ni_syscall		/* old gtty syscall */
1002 1003
	.llong .sys_access
	.llong .sys_nice
1004
	.llong .sys_ni_syscall		/* 35 - old ftime syscall */
1005 1006 1007 1008 1009 1010 1011 1012
	.llong .sys_sync
	.llong .sys_kill
	.llong .sys_rename
	.llong .sys_mkdir
	.llong .sys_rmdir		/* 40 */
	.llong .sys_dup
	.llong .sys_pipe
	.llong .sys_times
1013 1014
	.llong .sys_ni_syscall		/* old prof syscall */
	.llong .sys_brk			/* 45 */
1015 1016 1017 1018
	.llong .sys_setgid
	.llong .sys_getgid
	.llong .sys_signal
	.llong .sys_geteuid
1019
	.llong .sys_getegid		/* 50 */
1020
	.llong .sys_acct
1021 1022
	.llong .sys_umount
	.llong .sys_ni_syscall		/* old lock syscall */
1023 1024
	.llong .sys_ioctl
	.llong .sys_fcntl		/* 55 */
1025
	.llong .sys_ni_syscall		/* old mpx syscall */
1026
	.llong .sys_setpgid
1027
	.llong .sys_ni_syscall		/* old ulimit syscall */
1028
	.llong .sys_ni_syscall		/* old uname syscall */
1029 1030 1031 1032 1033
	.llong .sys_umask		/* 60 */
	.llong .sys_chroot
	.llong .sys_ustat
	.llong .sys_dup2
	.llong .sys_getppid
1034
	.llong .sys_getpgrp		/* 65 */
1035
	.llong .sys_setsid
1036
	.llong .sys_ni_syscall
1037 1038
	.llong .sys_sgetmask
	.llong .sys_ssetmask
1039
	.llong .sys_setreuid		/* 70 */
1040
	.llong .sys_setregid
1041 1042
	.llong .sys_ni_syscall
	.llong .sys_ni_syscall
1043
	.llong .sys_sethostname
1044
	.llong .sys_setrlimit		/* 75 */
1045
	.llong .sys_ni_syscall		/* old getrlimit syscall */
1046 1047 1048
	.llong .sys_getrusage
	.llong .sys_gettimeofday
	.llong .sys_settimeofday
1049
	.llong .sys_getgroups		/* 80 */
1050
	.llong .sys_setgroups
1051
	.llong .sys_ni_syscall		/* old select syscall */
1052
	.llong .sys_symlink
1053 1054
	.llong .sys_ni_syscall		/* old lstat syscall */
	.llong .sys_readlink		/* 85 */
1055 1056 1057
	.llong .sys_uselib
	.llong .sys_swapon
	.llong .sys_reboot
1058
	.llong .sys_ni_syscall		/* old readdir syscall */
1059
	.llong .sys_mmap		/* 90 */
1060 1061 1062 1063
	.llong .sys_munmap
	.llong .sys_truncate
	.llong .sys_ftruncate
	.llong .sys_fchmod
1064
	.llong .sys_fchown		/* 95 */
1065 1066
	.llong .sys_getpriority
	.llong .sys_setpriority
1067
	.llong .sys_ni_syscall		/* old profil syscall holder */
1068
	.llong .sys_statfs
1069
	.llong .sys_fstatfs		/* 100 */
Anton Blanchard's avatar
Anton Blanchard committed
1070
	.llong .sys_ni_syscall		/* old ioperm syscall */
1071 1072 1073
	.llong .sys_socketcall
	.llong .sys_syslog
	.llong .sys_setitimer
1074
	.llong .sys_getitimer		/* 105 */
1075 1076 1077
	.llong .sys_newstat
	.llong .sys_newlstat
	.llong .sys_newfstat
1078
	.llong .sys_ni_syscall		/* old uname syscall */
1079
	.llong .sys_ni_syscall		/* 110 old iopl syscall */
1080
	.llong .sys_vhangup
1081 1082
	.llong .sys_ni_syscall		/* old idle syscall */
	.llong .sys_ni_syscall		/* old vm86 syscall */
1083
	.llong .sys_wait4
1084
	.llong .sys_swapoff		/* 115 */
1085 1086 1087
	.llong .sys_sysinfo
	.llong .sys_ipc
	.llong .sys_fsync
1088
	.llong .sys_ni_syscall
1089
	.llong .ppc_clone		/* 120 */
1090 1091
	.llong .sys_setdomainname
	.llong .ppc64_newuname
1092
	.llong .sys_ni_syscall		/* old modify_ldt syscall */
1093
	.llong .sys_adjtimex
1094
	.llong .sys_mprotect		/* 125 */
1095
	.llong .sys_ni_syscall
Anton Blanchard's avatar
Anton Blanchard committed
1096
	.llong .sys_ni_syscall		/* old create_module syscall */
1097 1098
	.llong .sys_init_module
	.llong .sys_delete_module
Anton Blanchard's avatar
Anton Blanchard committed
1099
	.llong .sys_ni_syscall		/* 130 old get_kernel_syms syscall */
1100 1101 1102 1103 1104
	.llong .sys_quotactl
	.llong .sys_getpgid
	.llong .sys_fchdir
	.llong .sys_bdflush
	.llong .sys_sysfs		/* 135 */
1105
	.llong .ppc64_personality
1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134
	.llong .sys_ni_syscall	        /* for afs_syscall */
	.llong .sys_setfsuid
	.llong .sys_setfsgid
	.llong .sys_llseek	        /* 140 */
        .llong .sys_getdents
	.llong .sys_select
	.llong .sys_flock
	.llong .sys_msync
	.llong .sys_readv		/* 145 */
	.llong .sys_writev
	.llong .sys_getsid
	.llong .sys_fdatasync
	.llong .sys_sysctl
	.llong .sys_mlock		/* 150 */
	.llong .sys_munlock
	.llong .sys_mlockall
	.llong .sys_munlockall
	.llong .sys_sched_setparam
	.llong .sys_sched_getparam	/* 155 */
	.llong .sys_sched_setscheduler
	.llong .sys_sched_getscheduler
	.llong .sys_sched_yield
	.llong .sys_sched_get_priority_max
	.llong .sys_sched_get_priority_min  /* 160 */
	.llong .sys_sched_rr_get_interval
	.llong .sys_nanosleep
	.llong .sys_mremap
	.llong .sys_setresuid
	.llong .sys_getresuid	        /* 165 */
Anton Blanchard's avatar
Anton Blanchard committed
1135
	.llong .sys_ni_syscall		/* old query_module syscall */
1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146
	.llong .sys_poll
	.llong .sys_nfsservctl
	.llong .sys_setresgid
	.llong .sys_getresgid	        /* 170 */
	.llong .sys_prctl
	.llong .ppc64_rt_sigreturn
	.llong .sys_rt_sigaction
	.llong .sys_rt_sigprocmask	
	.llong .sys_rt_sigpending	/* 175 */
	.llong .sys_rt_sigtimedwait
	.llong .sys_rt_sigqueueinfo
1147
	.llong .ppc64_rt_sigsuspend
1148 1149
	.llong .sys_pread64
	.llong .sys_pwrite64	        /* 180 */
1150 1151 1152 1153 1154
	.llong .sys_chown
	.llong .sys_getcwd
	.llong .sys_capget
	.llong .sys_capset
	.llong .sys_sigaltstack	        /* 185 */
1155
	.llong .sys_sendfile64
1156 1157
	.llong .sys_ni_syscall		/* reserved for streams1 */
	.llong .sys_ni_syscall		/* reserved for streams2 */
1158
	.llong .ppc_vfork
1159
	.llong .sys_getrlimit	        /* 190 */
1160
	.llong .sys_readahead
1161 1162 1163 1164 1165 1166
	.llong .sys_ni_syscall		/* 32bit only mmap2 */
	.llong .sys_ni_syscall		/* 32bit only truncate64 */
	.llong .sys_ni_syscall		/* 32bit only ftruncate64 */
	.llong .sys_ni_syscall		/* 195 - 32bit only stat64 */
	.llong .sys_ni_syscall		/* 32bit only lstat64 */
	.llong .sys_ni_syscall		/* 32bit only fstat64 */
1167 1168
	.llong .sys_ni_syscall		/* 32bit only pciconfig_read */
	.llong .sys_ni_syscall		/* 32bit only pciconfig_write */
1169
	.llong .sys_ni_syscall		/* 32bit only pciconfig_iobase */
1170 1171 1172 1173
	.llong .sys_ni_syscall		/* reserved for MacOnLinux */
	.llong .sys_getdents64
	.llong .sys_pivot_root
	.llong .sys_ni_syscall		/* 32bit only fcntl64 */
1174
	.llong .sys_madvise		/* 205 */
1175 1176 1177
	.llong .sys_mincore
	.llong .sys_gettid
	.llong .sys_tkill
1178
	.llong .sys_setxattr
1179
	.llong .sys_lsetxattr		/* 210 */
1180 1181 1182 1183
	.llong .sys_fsetxattr
	.llong .sys_getxattr
	.llong .sys_lgetxattr
	.llong .sys_fgetxattr
1184
	.llong .sys_listxattr		/* 215 */
1185 1186 1187 1188 1189 1190
	.llong .sys_llistxattr
	.llong .sys_flistxattr
	.llong .sys_removexattr
	.llong .sys_lremovexattr
	.llong .sys_fremovexattr	/* 220 */
	.llong .sys_futex
1191 1192
	.llong .sys_sched_setaffinity
	.llong .sys_sched_getaffinity
1193
	.llong .sys_ni_syscall
1194 1195 1196 1197 1198 1199 1200
	.llong .sys_ni_syscall		/* 225 - reserved for tux */
	.llong .sys_ni_syscall		/* 32bit only sendfile64 */
	.llong .sys_io_setup
	.llong .sys_io_destroy
	.llong .sys_io_getevents
	.llong .sys_io_submit		/* 230 */
	.llong .sys_io_cancel
1201 1202
	.llong .sys_set_tid_address
	.llong .sys_fadvise64
1203
	.llong .sys_exit_group
1204
	.llong .sys_lookup_dcookie	/* 235 */
1205 1206 1207 1208
	.llong .sys_epoll_create
	.llong .sys_epoll_ctl
	.llong .sys_epoll_wait
	.llong .sys_remap_file_pages
1209 1210 1211 1212 1213 1214 1215 1216 1217
	.llong .sys_timer_create	/* 240 */
	.llong .sys_timer_settime
	.llong .sys_timer_gettime
	.llong .sys_timer_getoverrun
	.llong .sys_timer_delete
	.llong .sys_clock_settime	/* 245 */
	.llong .sys_clock_gettime
	.llong .sys_clock_getres
	.llong .sys_clock_nanosleep
1218
	.llong .ppc64_swapcontext
1219 1220 1221 1222
	.llong .sys_tgkill		/* 250 */
	.llong .sys_utimes
	.llong .sys_statfs64
	.llong .sys_fstatfs64
1223
	.llong .sys_ni_syscall		/* 32bit only fadvise64_64 */
1224
	.llong .ppc_rtas		/* 255 */
1225 1226 1227
	.llong .sys_ni_syscall		/* 256 reserved for sys_debug_setcontext */
	.llong .sys_ni_syscall		/* 257 reserved for vserver */
	.llong .sys_ni_syscall		/* 258 reserved for new sys_remap_file_pages */
1228 1229 1230
	.llong .sys_mbind
	.llong .sys_get_mempolicy	/* 260 */
	.llong .sys_set_mempolicy
1231 1232 1233 1234 1235 1236
	.llong .sys_mq_open
	.llong .sys_mq_unlink
	.llong .sys_mq_timedsend
	.llong .sys_mq_timedreceive	/* 265 */
	.llong .sys_mq_notify
	.llong .sys_mq_getsetattr
1237
	.llong .sys_ni_syscall		/* 268 reserved for sys_kexec_load */