Changeset 1433ecda in mainline for kernel/genarch/src
- Timestamp:
- 2018-04-04T15:42:37Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2c4e1cc
- Parents:
- 47b2d7e3
- Location:
- kernel/genarch/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/src/drivers/bcm2835/mbox.c
r47b2d7e3 r1433ecda 40 40 static void mbox_write(bcm2835_mbox_t *mbox, uint8_t chan, uint32_t value) 41 41 { 42 while (mbox->status & MBOX_STATUS_FULL) ; 42 while (mbox->status & MBOX_STATUS_FULL) 43 ; 43 44 mbox->write = MBOX_COMPOSE(chan, value); 44 45 } … … 49 50 50 51 do { 51 while (mbox->status & MBOX_STATUS_EMPTY) ; 52 while (mbox->status & MBOX_STATUS_EMPTY) 53 ; 52 54 msg = mbox->read; 53 55 } while (MBOX_MSG_CHAN(msg) != chan); … … 69 71 70 72 mbox_write((bcm2835_mbox_t *)BCM2835_MBOX0_ADDR, 71 73 MBOX_CHAN_PROP_A2V, KA2VCA((uint32_t)req)); 72 74 mbox_read((bcm2835_mbox_t *)BCM2835_MBOX0_ADDR, 73 75 MBOX_CHAN_PROP_A2V); 74 76 75 77 if (req->buf_hdr.code == MBOX_PROP_CODE_RESP_OK) { … … 88 90 bcm2835_mbox_t *fb_mbox; 89 91 bool ret = false; 90 92 MBOX_BUFF_ALLOC(fb_desc, bcm2835_fb_desc_t); 91 93 92 94 fb_mbox = (void *) km_map(BCM2835_MBOX0_ADDR, sizeof(bcm2835_mbox_t), 93 95 PAGE_NOT_CACHEABLE); 94 96 95 97 fb_desc->width = 640; … … 119 121 120 122 printf("BCM2835 framebuffer at 0x%08x (%dx%d)\n", prop->addr, 121 123 prop->x, prop->y); 122 124 ret = true; 123 125 out: -
kernel/genarch/src/drivers/omap/uart.c
r47b2d7e3 r1433ecda 43 43 { 44 44 /* Wait for buffer */ 45 while (uart->regs->ssr & OMAP_UART_SSR_TX_FIFO_FULL_FLAG); 45 while (uart->regs->ssr & OMAP_UART_SSR_TX_FIFO_FULL_FLAG) 46 ; 46 47 /* Write to the outgoing fifo */ 47 48 uart->regs->thr = b; … … 93 94 /* Soft reset the port */ 94 95 uart->regs->sysc = OMAP_UART_SYSC_SOFTRESET_FLAG; 95 while (!(uart->regs->syss & OMAP_UART_SYSS_RESETDONE_FLAG)); 96 while (!(uart->regs->syss & OMAP_UART_SYSS_RESETDONE_FLAG)) 97 ; 96 98 97 99 /* Disable the UART module */ -
kernel/genarch/src/drivers/pl011/pl011.c
r47b2d7e3 r1433ecda 50 50 /* Wait for space becoming available in Tx FIFO. */ 51 51 // TODO make pio_read accept consts pointers and remove the cast 52 while ((pio_read_32((ioport32_t *)&uart->regs->flag) & PL011_UART_FLAG_TXFF_FLAG) != 0)52 while ((pio_read_32((ioport32_t *)&uart->regs->flag) & PL011_UART_FLAG_TXFF_FLAG) != 0) 53 53 ; 54 54 … … 86 86 87 87 // TODO make pio_read accept const pointers and remove the cast 88 while ((pio_read_32((ioport32_t *)&uart->regs->flag) & PL011_UART_FLAG_RXFE_FLAG) == 0) {88 while ((pio_read_32((ioport32_t *)&uart->regs->flag) & PL011_UART_FLAG_RXFE_FLAG) == 0) { 89 89 /* We ignore all error flags here */ 90 90 const uint8_t data = pio_read_32(&uart->regs->data); … … 99 99 { 100 100 assert(uart); 101 uart->regs = (void *)km_map(addr, sizeof(pl011_uart_regs_t),102 101 uart->regs = (void *)km_map(addr, sizeof(pl011_uart_regs_t), 102 PAGE_NOT_CACHEABLE); 103 103 assert(uart->regs); 104 104 105 105 /* Disable UART */ 106 uart->regs->control &= ~ 106 uart->regs->control &= ~PL011_UART_CONTROL_UARTEN_FLAG; 107 107 108 108 /* Enable hw flow control */ 109 109 uart->regs->control |= 110 111 110 PL011_UART_CONTROL_RTSE_FLAG | 111 PL011_UART_CONTROL_CTSE_FLAG; 112 112 113 113 /* Mask all interrupts */ … … 117 117 /* Enable UART, TX and RX */ 118 118 uart->regs->control |= 119 120 121 119 PL011_UART_CONTROL_UARTEN_FLAG | 120 PL011_UART_CONTROL_TXE_FLAG | 121 PL011_UART_CONTROL_RXE_FLAG; 122 122 123 123 outdev_initialize("pl011_uart_dev", &uart->outdev, &pl011_uart_ops); … … 143 143 /* Enable receive interrupts */ 144 144 uart->regs->interrupt_mask |= 145 146 145 PL011_UART_INTERRUPT_RX_FLAG | 146 PL011_UART_INTERRUPT_RT_FLAG; 147 147 } 148 148 -
kernel/genarch/src/mm/page_ht.c
r47b2d7e3 r1433ecda 222 222 } 223 223 224 static pte_t * 225 ht_mapping_find_internal(as_t *as, uintptr_t page, bool nolock) 224 static pte_t *ht_mapping_find_internal(as_t *as, uintptr_t page, bool nolock) 226 225 { 227 226 uintptr_t key[2] = { -
kernel/genarch/src/softint/multiplication.c
r47b2d7e3 r1433ecda 54 54 * @result 55 55 */ 56 static unsigned long long mul(unsigned int a, unsigned int b) { 56 static unsigned long long mul(unsigned int a, unsigned int b) 57 { 57 58 unsigned int a1, a2, b1, b2; 58 59 unsigned long long t1, t2, t3; … … 64 65 65 66 t1 = a1 * b1; 66 t2 = a1 *b2;67 t2 += a2 *b1;68 t3 = a2 *b2;67 t2 = a1 * b2; 68 t2 += a2 * b1; 69 t3 = a2 * b2; 69 70 70 71 t3 = (((t1 << 16) + t2) << 16) + t3; … … 79 80 { 80 81 long long result; 81 unsigned long long t1, t2;82 unsigned long long t1, t2; 82 83 unsigned long long a1, a2, b1, b2; 83 84 char neg = 0; … … 101 102 if (SOFTINT_CHECK_OF && (a1 != 0) && (b1 != 0)) { 102 103 // error, overflow 103 return (neg ?MIN_INT64:MAX_INT64);104 return (neg ? MIN_INT64 : MAX_INT64); 104 105 } 105 106 106 107 // (if OF checked) a1 or b1 is zero => result fits in 64 bits, no need to another overflow check 107 t1 = mul(a1, b2) + mul(b1,a2);108 t1 = mul(a1, b2) + mul(b1, a2); 108 109 109 110 if (SOFTINT_CHECK_OF && t1 > MAX_UINT32) { 110 111 // error, overflow 111 return (neg ?MIN_INT64:MAX_INT64);112 return (neg ? MIN_INT64 : MAX_INT64); 112 113 } 113 114 114 115 t1 = t1 << 32; 115 t2 = mul(a2, b2);116 t2 = mul(a2, b2); 116 117 t2 += t1; 117 118 … … 120 121 if (SOFTINT_CHECK_OF && ((t2 < t1) || (t2 & (1ull << 63)))) { 121 122 // error, overflow 122 return (neg ?MIN_INT64:MAX_INT64);123 return (neg ? MIN_INT64 : MAX_INT64); 123 124 } 124 125
Note:
See TracChangeset
for help on using the changeset viewer.