diff options
Diffstat (limited to 'arch/tile/kernel')
-rw-r--r-- | arch/tile/kernel/intvec_32.S | 69 | ||||
-rw-r--r-- | arch/tile/kernel/intvec_64.S | 2 | ||||
-rw-r--r-- | arch/tile/kernel/irq.c | 4 | ||||
-rw-r--r-- | arch/tile/kernel/process.c | 44 | ||||
-rw-r--r-- | arch/tile/kernel/relocate_kernel_32.S | 2 | ||||
-rw-r--r-- | arch/tile/kernel/relocate_kernel_64.S | 2 | ||||
-rw-r--r-- | arch/tile/kernel/setup.c | 13 | ||||
-rw-r--r-- | arch/tile/kernel/single_step.c | 2 |
8 files changed, 6 insertions, 132 deletions
diff --git a/arch/tile/kernel/intvec_32.S b/arch/tile/kernel/intvec_32.S index f084f1c7afde..088d5c141e68 100644 --- a/arch/tile/kernel/intvec_32.S +++ b/arch/tile/kernel/intvec_32.S | |||
@@ -32,12 +32,6 @@ | |||
32 | 32 | ||
33 | #define PTREGS_OFFSET_SYSCALL PTREGS_OFFSET_REG(TREG_SYSCALL_NR) | 33 | #define PTREGS_OFFSET_SYSCALL PTREGS_OFFSET_REG(TREG_SYSCALL_NR) |
34 | 34 | ||
35 | #if !CHIP_HAS_WH64() | ||
36 | /* By making this an empty macro, we can use wh64 in the code. */ | ||
37 | .macro wh64 reg | ||
38 | .endm | ||
39 | #endif | ||
40 | |||
41 | .macro push_reg reg, ptr=sp, delta=-4 | 35 | .macro push_reg reg, ptr=sp, delta=-4 |
42 | { | 36 | { |
43 | sw \ptr, \reg | 37 | sw \ptr, \reg |
@@ -325,18 +319,14 @@ intvec_\vecname: | |||
325 | movei r3, -1 /* not used, but set for consistency */ | 319 | movei r3, -1 /* not used, but set for consistency */ |
326 | } | 320 | } |
327 | .else | 321 | .else |
328 | #if CHIP_HAS_AUX_PERF_COUNTERS() | ||
329 | .ifc \c_routine, op_handle_aux_perf_interrupt | 322 | .ifc \c_routine, op_handle_aux_perf_interrupt |
330 | { | 323 | { |
331 | mfspr r2, AUX_PERF_COUNT_STS | 324 | mfspr r2, AUX_PERF_COUNT_STS |
332 | movei r3, -1 /* not used, but set for consistency */ | 325 | movei r3, -1 /* not used, but set for consistency */ |
333 | } | 326 | } |
334 | .else | 327 | .else |
335 | #endif | ||
336 | movei r3, 0 | 328 | movei r3, 0 |
337 | #if CHIP_HAS_AUX_PERF_COUNTERS() | ||
338 | .endif | 329 | .endif |
339 | #endif | ||
340 | .endif | 330 | .endif |
341 | .endif | 331 | .endif |
342 | .endif | 332 | .endif |
@@ -561,7 +551,6 @@ intvec_\vecname: | |||
561 | .endif | 551 | .endif |
562 | mtspr INTERRUPT_CRITICAL_SECTION, zero | 552 | mtspr INTERRUPT_CRITICAL_SECTION, zero |
563 | 553 | ||
564 | #if CHIP_HAS_WH64() | ||
565 | /* | 554 | /* |
566 | * Prepare the first 256 stack bytes to be rapidly accessible | 555 | * Prepare the first 256 stack bytes to be rapidly accessible |
567 | * without having to fetch the background data. We don't really | 556 | * without having to fetch the background data. We don't really |
@@ -582,7 +571,6 @@ intvec_\vecname: | |||
582 | addi r52, r52, -64 | 571 | addi r52, r52, -64 |
583 | } | 572 | } |
584 | wh64 r52 | 573 | wh64 r52 |
585 | #endif | ||
586 | 574 | ||
587 | #ifdef CONFIG_TRACE_IRQFLAGS | 575 | #ifdef CONFIG_TRACE_IRQFLAGS |
588 | .ifnc \function,handle_nmi | 576 | .ifnc \function,handle_nmi |
@@ -1533,12 +1521,10 @@ STD_ENTRY(_sys_clone) | |||
1533 | __HEAD | 1521 | __HEAD |
1534 | .align 64 | 1522 | .align 64 |
1535 | /* Align much later jump on the start of a cache line. */ | 1523 | /* Align much later jump on the start of a cache line. */ |
1536 | #if !ATOMIC_LOCKS_FOUND_VIA_TABLE() | ||
1537 | nop | 1524 | nop |
1538 | #if PAGE_SIZE >= 0x10000 | 1525 | #if PAGE_SIZE >= 0x10000 |
1539 | nop | 1526 | nop |
1540 | #endif | 1527 | #endif |
1541 | #endif | ||
1542 | ENTRY(sys_cmpxchg) | 1528 | ENTRY(sys_cmpxchg) |
1543 | 1529 | ||
1544 | /* | 1530 | /* |
@@ -1572,45 +1558,6 @@ ENTRY(sys_cmpxchg) | |||
1572 | # error Code here assumes PAGE_OFFSET can be loaded with just hi16() | 1558 | # error Code here assumes PAGE_OFFSET can be loaded with just hi16() |
1573 | #endif | 1559 | #endif |
1574 | 1560 | ||
1575 | #if ATOMIC_LOCKS_FOUND_VIA_TABLE() | ||
1576 | { | ||
1577 | /* Check for unaligned input. */ | ||
1578 | bnz sp, .Lcmpxchg_badaddr | ||
1579 | mm r25, r0, zero, 3, PAGE_SHIFT-1 | ||
1580 | } | ||
1581 | { | ||
1582 | crc32_32 r25, zero, r25 | ||
1583 | moveli r21, lo16(atomic_lock_ptr) | ||
1584 | } | ||
1585 | { | ||
1586 | auli r21, r21, ha16(atomic_lock_ptr) | ||
1587 | auli r23, zero, hi16(PAGE_OFFSET) /* hugepage-aligned */ | ||
1588 | } | ||
1589 | { | ||
1590 | shri r20, r25, 32 - ATOMIC_HASH_L1_SHIFT | ||
1591 | slt_u r23, r0, r23 | ||
1592 | lw r26, r0 /* see comment in the "#else" for the "lw r26". */ | ||
1593 | } | ||
1594 | { | ||
1595 | s2a r21, r20, r21 | ||
1596 | bbns r23, .Lcmpxchg_badaddr | ||
1597 | } | ||
1598 | { | ||
1599 | lw r21, r21 | ||
1600 | seqi r23, TREG_SYSCALL_NR_NAME, __NR_FAST_cmpxchg64 | ||
1601 | andi r25, r25, ATOMIC_HASH_L2_SIZE - 1 | ||
1602 | } | ||
1603 | { | ||
1604 | /* Branch away at this point if we're doing a 64-bit cmpxchg. */ | ||
1605 | bbs r23, .Lcmpxchg64 | ||
1606 | andi r23, r0, 7 /* Precompute alignment for cmpxchg64. */ | ||
1607 | } | ||
1608 | { | ||
1609 | s2a ATOMIC_LOCK_REG_NAME, r25, r21 | ||
1610 | j .Lcmpxchg32_tns /* see comment in the #else for the jump. */ | ||
1611 | } | ||
1612 | |||
1613 | #else /* ATOMIC_LOCKS_FOUND_VIA_TABLE() */ | ||
1614 | { | 1561 | { |
1615 | /* Check for unaligned input. */ | 1562 | /* Check for unaligned input. */ |
1616 | bnz sp, .Lcmpxchg_badaddr | 1563 | bnz sp, .Lcmpxchg_badaddr |
@@ -1635,12 +1582,9 @@ ENTRY(sys_cmpxchg) | |||
1635 | 1582 | ||
1636 | /* | 1583 | /* |
1637 | * Ensure that the TLB is loaded before we take out the lock. | 1584 | * Ensure that the TLB is loaded before we take out the lock. |
1638 | * On tilepro, this will start fetching the value all the way | 1585 | * This will start fetching the value all the way into our L1 |
1639 | * into our L1 as well (and if it gets modified before we | 1586 | * as well (and if it gets modified before we grab the lock, |
1640 | * grab the lock, it will be invalidated from our cache | 1587 | * it will be invalidated from our cache before we reload it). |
1641 | * before we reload it). On tile64, we'll start fetching it | ||
1642 | * into our L1 if we're the home, and if we're not, we'll | ||
1643 | * still at least start fetching it into the home's L2. | ||
1644 | */ | 1588 | */ |
1645 | lw r26, r0 | 1589 | lw r26, r0 |
1646 | } | 1590 | } |
@@ -1683,8 +1627,6 @@ ENTRY(sys_cmpxchg) | |||
1683 | j .Lcmpxchg32_tns | 1627 | j .Lcmpxchg32_tns |
1684 | } | 1628 | } |
1685 | 1629 | ||
1686 | #endif /* ATOMIC_LOCKS_FOUND_VIA_TABLE() */ | ||
1687 | |||
1688 | /* Symbol for do_page_fault_ics() to use to compare against the PC. */ | 1630 | /* Symbol for do_page_fault_ics() to use to compare against the PC. */ |
1689 | .global __sys_cmpxchg_grab_lock | 1631 | .global __sys_cmpxchg_grab_lock |
1690 | __sys_cmpxchg_grab_lock: | 1632 | __sys_cmpxchg_grab_lock: |
@@ -1822,9 +1764,6 @@ __sys_cmpxchg_grab_lock: | |||
1822 | .align 64 | 1764 | .align 64 |
1823 | .Lcmpxchg64: | 1765 | .Lcmpxchg64: |
1824 | { | 1766 | { |
1825 | #if ATOMIC_LOCKS_FOUND_VIA_TABLE() | ||
1826 | s2a ATOMIC_LOCK_REG_NAME, r25, r21 | ||
1827 | #endif | ||
1828 | bzt r23, .Lcmpxchg64_tns | 1767 | bzt r23, .Lcmpxchg64_tns |
1829 | } | 1768 | } |
1830 | j .Lcmpxchg_badaddr | 1769 | j .Lcmpxchg_badaddr |
@@ -1959,10 +1898,8 @@ int_unalign: | |||
1959 | do_page_fault | 1898 | do_page_fault |
1960 | int_hand INT_SN_CPL, SN_CPL, bad_intr | 1899 | int_hand INT_SN_CPL, SN_CPL, bad_intr |
1961 | int_hand INT_DOUBLE_FAULT, DOUBLE_FAULT, do_trap | 1900 | int_hand INT_DOUBLE_FAULT, DOUBLE_FAULT, do_trap |
1962 | #if CHIP_HAS_AUX_PERF_COUNTERS() | ||
1963 | int_hand INT_AUX_PERF_COUNT, AUX_PERF_COUNT, \ | 1901 | int_hand INT_AUX_PERF_COUNT, AUX_PERF_COUNT, \ |
1964 | op_handle_aux_perf_interrupt, handle_nmi | 1902 | op_handle_aux_perf_interrupt, handle_nmi |
1965 | #endif | ||
1966 | 1903 | ||
1967 | /* Synthetic interrupt delivered only by the simulator */ | 1904 | /* Synthetic interrupt delivered only by the simulator */ |
1968 | int_hand INT_BREAKPOINT, BREAKPOINT, do_breakpoint | 1905 | int_hand INT_BREAKPOINT, BREAKPOINT, do_breakpoint |
diff --git a/arch/tile/kernel/intvec_64.S b/arch/tile/kernel/intvec_64.S index c3a2335fa6a8..ec755d3f3734 100644 --- a/arch/tile/kernel/intvec_64.S +++ b/arch/tile/kernel/intvec_64.S | |||
@@ -511,12 +511,10 @@ intvec_\vecname: | |||
511 | .else | 511 | .else |
512 | .ifc \c_routine, op_handle_perf_interrupt | 512 | .ifc \c_routine, op_handle_perf_interrupt |
513 | mfspr r2, PERF_COUNT_STS | 513 | mfspr r2, PERF_COUNT_STS |
514 | #if CHIP_HAS_AUX_PERF_COUNTERS() | ||
515 | .else | 514 | .else |
516 | .ifc \c_routine, op_handle_aux_perf_interrupt | 515 | .ifc \c_routine, op_handle_aux_perf_interrupt |
517 | mfspr r2, AUX_PERF_COUNT_STS | 516 | mfspr r2, AUX_PERF_COUNT_STS |
518 | .endif | 517 | .endif |
519 | #endif | ||
520 | .endif | 518 | .endif |
521 | .endif | 519 | .endif |
522 | .endif | 520 | .endif |
diff --git a/arch/tile/kernel/irq.c b/arch/tile/kernel/irq.c index 0e6c521b8a89..d8ba06058fd0 100644 --- a/arch/tile/kernel/irq.c +++ b/arch/tile/kernel/irq.c | |||
@@ -74,7 +74,7 @@ static DEFINE_SPINLOCK(available_irqs_lock); | |||
74 | 74 | ||
75 | /* | 75 | /* |
76 | * The interrupt handling path, implemented in terms of HV interrupt | 76 | * The interrupt handling path, implemented in terms of HV interrupt |
77 | * emulation on TILE64 and TILEPro, and IPI hardware on TILE-Gx. | 77 | * emulation on TILEPro, and IPI hardware on TILE-Gx. |
78 | * Entered with interrupts disabled. | 78 | * Entered with interrupts disabled. |
79 | */ | 79 | */ |
80 | void tile_dev_intr(struct pt_regs *regs, int intnum) | 80 | void tile_dev_intr(struct pt_regs *regs, int intnum) |
@@ -235,7 +235,7 @@ void tile_irq_activate(unsigned int irq, int tile_irq_type) | |||
235 | { | 235 | { |
236 | /* | 236 | /* |
237 | * We use handle_level_irq() by default because the pending | 237 | * We use handle_level_irq() by default because the pending |
238 | * interrupt vector (whether modeled by the HV on TILE64 and | 238 | * interrupt vector (whether modeled by the HV on |
239 | * TILEPro or implemented in hardware on TILE-Gx) has | 239 | * TILEPro or implemented in hardware on TILE-Gx) has |
240 | * level-style semantics for each bit. An interrupt fires | 240 | * level-style semantics for each bit. An interrupt fires |
241 | * whenever a bit is high, not just at edges. | 241 | * whenever a bit is high, not just at edges. |
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 44cdc4aa59e8..16ed58948757 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
@@ -187,16 +187,8 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
187 | memset(&p->thread.dma_async_tlb, 0, sizeof(struct async_tlb)); | 187 | memset(&p->thread.dma_async_tlb, 0, sizeof(struct async_tlb)); |
188 | #endif | 188 | #endif |
189 | 189 | ||
190 | #if CHIP_HAS_SN_PROC() | ||
191 | /* Likewise, the new thread is not running static processor code. */ | ||
192 | p->thread.sn_proc_running = 0; | ||
193 | memset(&p->thread.sn_async_tlb, 0, sizeof(struct async_tlb)); | ||
194 | #endif | ||
195 | |||
196 | #if CHIP_HAS_PROC_STATUS_SPR() | ||
197 | /* New thread has its miscellaneous processor state bits clear. */ | 190 | /* New thread has its miscellaneous processor state bits clear. */ |
198 | p->thread.proc_status = 0; | 191 | p->thread.proc_status = 0; |
199 | #endif | ||
200 | 192 | ||
201 | #ifdef CONFIG_HARDWALL | 193 | #ifdef CONFIG_HARDWALL |
202 | /* New thread does not own any networks. */ | 194 | /* New thread does not own any networks. */ |
@@ -378,15 +370,11 @@ static void save_arch_state(struct thread_struct *t) | |||
378 | t->system_save[2] = __insn_mfspr(SPR_SYSTEM_SAVE_0_2); | 370 | t->system_save[2] = __insn_mfspr(SPR_SYSTEM_SAVE_0_2); |
379 | t->system_save[3] = __insn_mfspr(SPR_SYSTEM_SAVE_0_3); | 371 | t->system_save[3] = __insn_mfspr(SPR_SYSTEM_SAVE_0_3); |
380 | t->intctrl_0 = __insn_mfspr(SPR_INTCTRL_0_STATUS); | 372 | t->intctrl_0 = __insn_mfspr(SPR_INTCTRL_0_STATUS); |
381 | #if CHIP_HAS_PROC_STATUS_SPR() | ||
382 | t->proc_status = __insn_mfspr(SPR_PROC_STATUS); | 373 | t->proc_status = __insn_mfspr(SPR_PROC_STATUS); |
383 | #endif | ||
384 | #if !CHIP_HAS_FIXED_INTVEC_BASE() | 374 | #if !CHIP_HAS_FIXED_INTVEC_BASE() |
385 | t->interrupt_vector_base = __insn_mfspr(SPR_INTERRUPT_VECTOR_BASE_0); | 375 | t->interrupt_vector_base = __insn_mfspr(SPR_INTERRUPT_VECTOR_BASE_0); |
386 | #endif | 376 | #endif |
387 | #if CHIP_HAS_TILE_RTF_HWM() | ||
388 | t->tile_rtf_hwm = __insn_mfspr(SPR_TILE_RTF_HWM); | 377 | t->tile_rtf_hwm = __insn_mfspr(SPR_TILE_RTF_HWM); |
389 | #endif | ||
390 | #if CHIP_HAS_DSTREAM_PF() | 378 | #if CHIP_HAS_DSTREAM_PF() |
391 | t->dstream_pf = __insn_mfspr(SPR_DSTREAM_PF); | 379 | t->dstream_pf = __insn_mfspr(SPR_DSTREAM_PF); |
392 | #endif | 380 | #endif |
@@ -407,15 +395,11 @@ static void restore_arch_state(const struct thread_struct *t) | |||
407 | __insn_mtspr(SPR_SYSTEM_SAVE_0_2, t->system_save[2]); | 395 | __insn_mtspr(SPR_SYSTEM_SAVE_0_2, t->system_save[2]); |
408 | __insn_mtspr(SPR_SYSTEM_SAVE_0_3, t->system_save[3]); | 396 | __insn_mtspr(SPR_SYSTEM_SAVE_0_3, t->system_save[3]); |
409 | __insn_mtspr(SPR_INTCTRL_0_STATUS, t->intctrl_0); | 397 | __insn_mtspr(SPR_INTCTRL_0_STATUS, t->intctrl_0); |
410 | #if CHIP_HAS_PROC_STATUS_SPR() | ||
411 | __insn_mtspr(SPR_PROC_STATUS, t->proc_status); | 398 | __insn_mtspr(SPR_PROC_STATUS, t->proc_status); |
412 | #endif | ||
413 | #if !CHIP_HAS_FIXED_INTVEC_BASE() | 399 | #if !CHIP_HAS_FIXED_INTVEC_BASE() |
414 | __insn_mtspr(SPR_INTERRUPT_VECTOR_BASE_0, t->interrupt_vector_base); | 400 | __insn_mtspr(SPR_INTERRUPT_VECTOR_BASE_0, t->interrupt_vector_base); |
415 | #endif | 401 | #endif |
416 | #if CHIP_HAS_TILE_RTF_HWM() | ||
417 | __insn_mtspr(SPR_TILE_RTF_HWM, t->tile_rtf_hwm); | 402 | __insn_mtspr(SPR_TILE_RTF_HWM, t->tile_rtf_hwm); |
418 | #endif | ||
419 | #if CHIP_HAS_DSTREAM_PF() | 403 | #if CHIP_HAS_DSTREAM_PF() |
420 | __insn_mtspr(SPR_DSTREAM_PF, t->dstream_pf); | 404 | __insn_mtspr(SPR_DSTREAM_PF, t->dstream_pf); |
421 | #endif | 405 | #endif |
@@ -424,26 +408,11 @@ static void restore_arch_state(const struct thread_struct *t) | |||
424 | 408 | ||
425 | void _prepare_arch_switch(struct task_struct *next) | 409 | void _prepare_arch_switch(struct task_struct *next) |
426 | { | 410 | { |
427 | #if CHIP_HAS_SN_PROC() | ||
428 | int snctl; | ||
429 | #endif | ||
430 | #if CHIP_HAS_TILE_DMA() | 411 | #if CHIP_HAS_TILE_DMA() |
431 | struct tile_dma_state *dma = ¤t->thread.tile_dma_state; | 412 | struct tile_dma_state *dma = ¤t->thread.tile_dma_state; |
432 | if (dma->enabled) | 413 | if (dma->enabled) |
433 | save_tile_dma_state(dma); | 414 | save_tile_dma_state(dma); |
434 | #endif | 415 | #endif |
435 | #if CHIP_HAS_SN_PROC() | ||
436 | /* | ||
437 | * Suspend the static network processor if it was running. | ||
438 | * We do not suspend the fabric itself, just like we don't | ||
439 | * try to suspend the UDN. | ||
440 | */ | ||
441 | snctl = __insn_mfspr(SPR_SNCTL); | ||
442 | current->thread.sn_proc_running = | ||
443 | (snctl & SPR_SNCTL__FRZPROC_MASK) == 0; | ||
444 | if (current->thread.sn_proc_running) | ||
445 | __insn_mtspr(SPR_SNCTL, snctl | SPR_SNCTL__FRZPROC_MASK); | ||
446 | #endif | ||
447 | } | 416 | } |
448 | 417 | ||
449 | 418 | ||
@@ -471,17 +440,6 @@ struct task_struct *__sched _switch_to(struct task_struct *prev, | |||
471 | /* Restore other arch state. */ | 440 | /* Restore other arch state. */ |
472 | restore_arch_state(&next->thread); | 441 | restore_arch_state(&next->thread); |
473 | 442 | ||
474 | #if CHIP_HAS_SN_PROC() | ||
475 | /* | ||
476 | * Restart static network processor in the new process | ||
477 | * if it was running before. | ||
478 | */ | ||
479 | if (next->thread.sn_proc_running) { | ||
480 | int snctl = __insn_mfspr(SPR_SNCTL); | ||
481 | __insn_mtspr(SPR_SNCTL, snctl & ~SPR_SNCTL__FRZPROC_MASK); | ||
482 | } | ||
483 | #endif | ||
484 | |||
485 | #ifdef CONFIG_HARDWALL | 443 | #ifdef CONFIG_HARDWALL |
486 | /* Enable or disable access to the network registers appropriately. */ | 444 | /* Enable or disable access to the network registers appropriately. */ |
487 | hardwall_switch_tasks(prev, next); | 445 | hardwall_switch_tasks(prev, next); |
@@ -523,7 +481,7 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) | |||
523 | schedule(); | 481 | schedule(); |
524 | return 1; | 482 | return 1; |
525 | } | 483 | } |
526 | #if CHIP_HAS_TILE_DMA() || CHIP_HAS_SN_PROC() | 484 | #if CHIP_HAS_TILE_DMA() |
527 | if (thread_info_flags & _TIF_ASYNC_TLB) { | 485 | if (thread_info_flags & _TIF_ASYNC_TLB) { |
528 | do_async_page_fault(regs); | 486 | do_async_page_fault(regs); |
529 | return 1; | 487 | return 1; |
diff --git a/arch/tile/kernel/relocate_kernel_32.S b/arch/tile/kernel/relocate_kernel_32.S index f7fd37b64a78..e44fbcf8cbd5 100644 --- a/arch/tile/kernel/relocate_kernel_32.S +++ b/arch/tile/kernel/relocate_kernel_32.S | |||
@@ -77,7 +77,6 @@ STD_ENTRY(relocate_new_kernel) | |||
77 | move r30, sp | 77 | move r30, sp |
78 | addi sp, sp, -8 | 78 | addi sp, sp, -8 |
79 | 79 | ||
80 | #if CHIP_HAS_CBOX_HOME_MAP() | ||
81 | /* | 80 | /* |
82 | * On TILEPro, we need to flush all tiles' caches, since we may | 81 | * On TILEPro, we need to flush all tiles' caches, since we may |
83 | * have been doing hash-for-home caching there. Note that we | 82 | * have been doing hash-for-home caching there. Note that we |
@@ -113,7 +112,6 @@ STD_ENTRY(relocate_new_kernel) | |||
113 | } | 112 | } |
114 | 113 | ||
115 | jalr r20 | 114 | jalr r20 |
116 | #endif | ||
117 | 115 | ||
118 | /* r33 is destination pointer, default to zero */ | 116 | /* r33 is destination pointer, default to zero */ |
119 | 117 | ||
diff --git a/arch/tile/kernel/relocate_kernel_64.S b/arch/tile/kernel/relocate_kernel_64.S index 02bc44621021..d9d8cf6176e8 100644 --- a/arch/tile/kernel/relocate_kernel_64.S +++ b/arch/tile/kernel/relocate_kernel_64.S | |||
@@ -78,7 +78,6 @@ STD_ENTRY(relocate_new_kernel) | |||
78 | move r30, sp | 78 | move r30, sp |
79 | addi sp, sp, -16 | 79 | addi sp, sp, -16 |
80 | 80 | ||
81 | #if CHIP_HAS_CBOX_HOME_MAP() | ||
82 | /* | 81 | /* |
83 | * On TILE-GX, we need to flush all tiles' caches, since we may | 82 | * On TILE-GX, we need to flush all tiles' caches, since we may |
84 | * have been doing hash-for-home caching there. Note that we | 83 | * have been doing hash-for-home caching there. Note that we |
@@ -116,7 +115,6 @@ STD_ENTRY(relocate_new_kernel) | |||
116 | shl16insli r20, r20, hw0(hv_flush_remote) | 115 | shl16insli r20, r20, hw0(hv_flush_remote) |
117 | 116 | ||
118 | jalr r20 | 117 | jalr r20 |
119 | #endif | ||
120 | 118 | ||
121 | /* r33 is destination pointer, default to zero */ | 119 | /* r33 is destination pointer, default to zero */ |
122 | 120 | ||
diff --git a/arch/tile/kernel/setup.c b/arch/tile/kernel/setup.c index b79c312ca3cb..128a2d0b8650 100644 --- a/arch/tile/kernel/setup.c +++ b/arch/tile/kernel/setup.c | |||
@@ -1046,9 +1046,6 @@ void __cpuinit setup_cpu(int boot) | |||
1046 | arch_local_irq_unmask(INT_DMATLB_MISS); | 1046 | arch_local_irq_unmask(INT_DMATLB_MISS); |
1047 | arch_local_irq_unmask(INT_DMATLB_ACCESS); | 1047 | arch_local_irq_unmask(INT_DMATLB_ACCESS); |
1048 | #endif | 1048 | #endif |
1049 | #if CHIP_HAS_SN_PROC() | ||
1050 | arch_local_irq_unmask(INT_SNITLB_MISS); | ||
1051 | #endif | ||
1052 | #ifdef __tilegx__ | 1049 | #ifdef __tilegx__ |
1053 | arch_local_irq_unmask(INT_SINGLE_STEP_K); | 1050 | arch_local_irq_unmask(INT_SINGLE_STEP_K); |
1054 | #endif | 1051 | #endif |
@@ -1063,10 +1060,6 @@ void __cpuinit setup_cpu(int boot) | |||
1063 | /* Static network is not restricted. */ | 1060 | /* Static network is not restricted. */ |
1064 | __insn_mtspr(SPR_MPL_SN_ACCESS_SET_0, 1); | 1061 | __insn_mtspr(SPR_MPL_SN_ACCESS_SET_0, 1); |
1065 | #endif | 1062 | #endif |
1066 | #if CHIP_HAS_SN_PROC() | ||
1067 | __insn_mtspr(SPR_MPL_SN_NOTIFY_SET_0, 1); | ||
1068 | __insn_mtspr(SPR_MPL_SN_CPL_SET_0, 1); | ||
1069 | #endif | ||
1070 | 1063 | ||
1071 | /* | 1064 | /* |
1072 | * Set the MPL for interrupt control 0 & 1 to the corresponding | 1065 | * Set the MPL for interrupt control 0 & 1 to the corresponding |
@@ -1291,7 +1284,6 @@ static void __init validate_va(void) | |||
1291 | struct cpumask __write_once cpu_lotar_map; | 1284 | struct cpumask __write_once cpu_lotar_map; |
1292 | EXPORT_SYMBOL(cpu_lotar_map); | 1285 | EXPORT_SYMBOL(cpu_lotar_map); |
1293 | 1286 | ||
1294 | #if CHIP_HAS_CBOX_HOME_MAP() | ||
1295 | /* | 1287 | /* |
1296 | * hash_for_home_map lists all the tiles that hash-for-home data | 1288 | * hash_for_home_map lists all the tiles that hash-for-home data |
1297 | * will be cached on. Note that this may includes tiles that are not | 1289 | * will be cached on. Note that this may includes tiles that are not |
@@ -1301,7 +1293,6 @@ EXPORT_SYMBOL(cpu_lotar_map); | |||
1301 | */ | 1293 | */ |
1302 | struct cpumask hash_for_home_map; | 1294 | struct cpumask hash_for_home_map; |
1303 | EXPORT_SYMBOL(hash_for_home_map); | 1295 | EXPORT_SYMBOL(hash_for_home_map); |
1304 | #endif | ||
1305 | 1296 | ||
1306 | /* | 1297 | /* |
1307 | * cpu_cacheable_map lists all the cpus whose caches the hypervisor can | 1298 | * cpu_cacheable_map lists all the cpus whose caches the hypervisor can |
@@ -1394,7 +1385,6 @@ static void __init setup_cpu_maps(void) | |||
1394 | cpu_lotar_map = *cpu_possible_mask; | 1385 | cpu_lotar_map = *cpu_possible_mask; |
1395 | } | 1386 | } |
1396 | 1387 | ||
1397 | #if CHIP_HAS_CBOX_HOME_MAP() | ||
1398 | /* Retrieve set of CPUs used for hash-for-home caching */ | 1388 | /* Retrieve set of CPUs used for hash-for-home caching */ |
1399 | rc = hv_inquire_tiles(HV_INQ_TILES_HFH_CACHE, | 1389 | rc = hv_inquire_tiles(HV_INQ_TILES_HFH_CACHE, |
1400 | (HV_VirtAddr) hash_for_home_map.bits, | 1390 | (HV_VirtAddr) hash_for_home_map.bits, |
@@ -1402,9 +1392,6 @@ static void __init setup_cpu_maps(void) | |||
1402 | if (rc < 0) | 1392 | if (rc < 0) |
1403 | early_panic("hv_inquire_tiles(HFH_CACHE) failed: rc %d\n", rc); | 1393 | early_panic("hv_inquire_tiles(HFH_CACHE) failed: rc %d\n", rc); |
1404 | cpumask_or(&cpu_cacheable_map, cpu_possible_mask, &hash_for_home_map); | 1394 | cpumask_or(&cpu_cacheable_map, cpu_possible_mask, &hash_for_home_map); |
1405 | #else | ||
1406 | cpu_cacheable_map = *cpu_possible_mask; | ||
1407 | #endif | ||
1408 | } | 1395 | } |
1409 | 1396 | ||
1410 | 1397 | ||
diff --git a/arch/tile/kernel/single_step.c b/arch/tile/kernel/single_step.c index 5ef2e9eae5c5..de07fa7d1315 100644 --- a/arch/tile/kernel/single_step.c +++ b/arch/tile/kernel/single_step.c | |||
@@ -546,7 +546,6 @@ void single_step_once(struct pt_regs *regs) | |||
546 | } | 546 | } |
547 | break; | 547 | break; |
548 | 548 | ||
549 | #if CHIP_HAS_WH64() | ||
550 | /* postincrement operations */ | 549 | /* postincrement operations */ |
551 | case IMM_0_OPCODE_X1: | 550 | case IMM_0_OPCODE_X1: |
552 | switch (get_ImmOpcodeExtension_X1(bundle)) { | 551 | switch (get_ImmOpcodeExtension_X1(bundle)) { |
@@ -581,7 +580,6 @@ void single_step_once(struct pt_regs *regs) | |||
581 | break; | 580 | break; |
582 | } | 581 | } |
583 | break; | 582 | break; |
584 | #endif /* CHIP_HAS_WH64() */ | ||
585 | } | 583 | } |
586 | 584 | ||
587 | if (state->update) { | 585 | if (state->update) { |