Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
math-emu: Fix thinko in _FP_DIV
math-emu: Fix signalling of underflow and inexact while packing result.
sparc: Add checkstack support
sparc: correct section of current_pc()
sparc: correct section of apc_no_idle
sparc64: Fix race in arch/sparc64/kernel/trampoline.S

+35 -9
+1 -1
arch/sparc/kernel/apc.c
··· 31 31 #define APC_DEVNAME "apc" 32 32 33 33 static u8 __iomem *regs; 34 - static int apc_no_idle __initdata = 0; 34 + static int apc_no_idle __devinitdata = 0; 35 35 36 36 #define apc_readb(offs) (sbus_readb(regs+offs)) 37 37 #define apc_writeb(val, offs) (sbus_writeb(val, regs+offs))
+1
arch/sparc/kernel/head.S
··· 465 465 mov %o7, %g4 ! Save %o7 466 466 467 467 /* Jump to it, and pray... */ 468 + __INIT 468 469 current_pc: 469 470 call 1f 470 471 nop
+14 -4
arch/sparc64/kernel/trampoline.S
··· 328 328 329 329 wrpr %g0, 0, %wstate 330 330 331 + sethi %hi(prom_entry_lock), %g2 332 + 1: ldstub [%g2 + %lo(prom_entry_lock)], %g1 333 + membar #StoreLoad | #StoreStore 334 + brnz,pn %g1, 1b 335 + nop 336 + 331 337 /* As a hack, put &init_thread_union into %g6. 332 338 * prom_world() loads from here to restore the %asi 333 339 * register. ··· 343 337 344 338 sethi %hi(is_sun4v), %o0 345 339 lduw [%o0 + %lo(is_sun4v)], %o0 346 - brz,pt %o0, 1f 340 + brz,pt %o0, 2f 347 341 nop 348 342 349 343 TRAP_LOAD_TRAP_BLOCK(%g2, %g3) ··· 375 369 call %o1 376 370 add %sp, (2047 + 128), %o0 377 371 378 - ba,pt %xcc, 2f 372 + ba,pt %xcc, 3f 379 373 nop 380 374 381 - 1: sethi %hi(sparc64_ttable_tl0), %o0 375 + 2: sethi %hi(sparc64_ttable_tl0), %o0 382 376 set prom_set_trap_table_name, %g2 383 377 stx %g2, [%sp + 2047 + 128 + 0x00] 384 378 mov 1, %g2 ··· 392 386 call %o1 393 387 add %sp, (2047 + 128), %o0 394 388 395 - 2: ldx [%l0], %g6 389 + 3: sethi %hi(prom_entry_lock), %g2 390 + stb %g0, [%g2 + %lo(prom_entry_lock)] 391 + membar #StoreStore | #StoreLoad 392 + 393 + ldx [%l0], %g6 396 394 ldx [%g6 + TI_TASK], %g4 397 395 398 396 mov 1, %g5
+15 -4
include/math-emu/op-common.h
··· 139 139 if (X##_e <= _FP_WFRACBITS_##fs) \ 140 140 { \ 141 141 _FP_FRAC_SRS_##wc(X, X##_e, _FP_WFRACBITS_##fs); \ 142 - _FP_ROUND(wc, X); \ 143 142 if (_FP_FRAC_HIGH_##fs(X) \ 144 143 & (_FP_OVERFLOW_##fs >> 1)) \ 145 144 { \ 146 145 X##_e = 1; \ 147 146 _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \ 148 - FP_SET_EXCEPTION(FP_EX_INEXACT); \ 149 147 } \ 150 148 else \ 151 149 { \ 152 - X##_e = 0; \ 153 - _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \ 150 + _FP_ROUND(wc, X); \ 151 + if (_FP_FRAC_HIGH_##fs(X) \ 152 + & (_FP_OVERFLOW_##fs >> 1)) \ 153 + { \ 154 + X##_e = 1; \ 155 + _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc); \ 156 + FP_SET_EXCEPTION(FP_EX_INEXACT); \ 157 + } \ 158 + else \ 159 + { \ 160 + X##_e = 0; \ 161 + _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \ 162 + } \ 154 163 } \ 155 164 if ((FP_CUR_EXCEPTIONS & FP_EX_INEXACT) || \ 156 165 (FP_TRAPPING_EXCEPTIONS & FP_EX_UNDERFLOW)) \ ··· 503 494 R##_c = FP_CLS_NAN; \ 504 495 _FP_FRAC_SET_##wc(R, _FP_NANFRAC_##fs); \ 505 496 FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_IDI);\ 497 + break; \ 498 + \ 506 499 case _FP_CLS_COMBINE(FP_CLS_ZERO,FP_CLS_ZERO): \ 507 500 R##_s = _FP_NANSIGN_##fs; \ 508 501 R##_c = FP_CLS_NAN; \
+4
scripts/checkstack.pl
··· 14 14 # M68k port by Geert Uytterhoeven and Andreas Schwab 15 15 # AVR32 port by Haavard Skinnemoen <hskinnemoen@atmel.com> 16 16 # PARISC port by Kyle McMartin <kyle@parisc-linux.org> 17 + # sparc port by Martin Habets <errandir_news@mph.eclipse.co.uk> 17 18 # 18 19 # Usage: 19 20 # objdump -d vmlinux | scripts/checkstack.pl [arch] ··· 95 94 } elsif ($arch =~ /^blackfin$/) { 96 95 # 0: 00 e8 38 01 LINK 0x4e0; 97 96 $re = qr/.*[[:space:]]LINK[[:space:]]*(0x$x{1,8})/o; 97 + } elsif ($arch eq 'sparc' || $arch eq 'sparc64') { 98 + # f0019d10: 9d e3 bf 90 save %sp, -112, %sp 99 + $re = qr/.*save.*%sp, -(([0-9]{2}|[3-9])[0-9]{2}), %sp/o; 98 100 } else { 99 101 print("wrong or unknown architecture \"$arch\"\n"); 100 102 exit