@@ -2544,22 +2544,7 @@ static void notdirty_mem_write(void *opaque, hwaddr ram_addr,
25442544 memory_notdirty_write_prepare (& ndi , current_cpu , current_cpu -> mem_io_vaddr ,
25452545 ram_addr , size );
25462546
2547- switch (size ) {
2548- case 1 :
2549- stb_p (qemu_map_ram_ptr (NULL , ram_addr ), val );
2550- break ;
2551- case 2 :
2552- stw_p (qemu_map_ram_ptr (NULL , ram_addr ), val );
2553- break ;
2554- case 4 :
2555- stl_p (qemu_map_ram_ptr (NULL , ram_addr ), val );
2556- break ;
2557- case 8 :
2558- stq_p (qemu_map_ram_ptr (NULL , ram_addr ), val );
2559- break ;
2560- default :
2561- abort ();
2562- }
2547+ stn_p (qemu_map_ram_ptr (NULL , ram_addr ), size , val );
25632548 memory_notdirty_write_complete (& ndi );
25642549}
25652550
@@ -2739,22 +2724,8 @@ static MemTxResult subpage_read(void *opaque, hwaddr addr, uint64_t *data,
27392724 if (res ) {
27402725 return res ;
27412726 }
2742- switch (len ) {
2743- case 1 :
2744- * data = ldub_p (buf );
2745- return MEMTX_OK ;
2746- case 2 :
2747- * data = lduw_p (buf );
2748- return MEMTX_OK ;
2749- case 4 :
2750- * data = (uint32_t )ldl_p (buf );
2751- return MEMTX_OK ;
2752- case 8 :
2753- * data = ldq_p (buf );
2754- return MEMTX_OK ;
2755- default :
2756- abort ();
2757- }
2727+ * data = ldn_p (buf , len );
2728+ return MEMTX_OK ;
27582729}
27592730
27602731static MemTxResult subpage_write (void * opaque , hwaddr addr ,
@@ -2768,22 +2739,7 @@ static MemTxResult subpage_write(void *opaque, hwaddr addr,
27682739 " value %" PRIx64 "\n" ,
27692740 __func__ , subpage , len , addr , value );
27702741#endif
2771- switch (len ) {
2772- case 1 :
2773- stb_p (buf , value );
2774- break ;
2775- case 2 :
2776- stw_p (buf , value );
2777- break ;
2778- case 4 :
2779- stl_p (buf , value );
2780- break ;
2781- case 8 :
2782- stq_p (buf , value );
2783- break ;
2784- default :
2785- abort ();
2786- }
2742+ stn_p (buf , len , value );
27872743 return flatview_write (subpage -> fv , addr + subpage -> base , attrs , buf , len );
27882744}
27892745
@@ -3129,34 +3085,8 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
31293085 l = memory_access_size (mr , l , addr1 );
31303086 /* XXX: could force current_cpu to NULL to avoid
31313087 potential bugs */
3132- switch (l ) {
3133- case 8 :
3134- /* 64 bit write access */
3135- val = ldq_p (buf );
3136- result |= memory_region_dispatch_write (mr , addr1 , val , 8 ,
3137- attrs );
3138- break ;
3139- case 4 :
3140- /* 32 bit write access */
3141- val = (uint32_t )ldl_p (buf );
3142- result |= memory_region_dispatch_write (mr , addr1 , val , 4 ,
3143- attrs );
3144- break ;
3145- case 2 :
3146- /* 16 bit write access */
3147- val = lduw_p (buf );
3148- result |= memory_region_dispatch_write (mr , addr1 , val , 2 ,
3149- attrs );
3150- break ;
3151- case 1 :
3152- /* 8 bit write access */
3153- val = ldub_p (buf );
3154- result |= memory_region_dispatch_write (mr , addr1 , val , 1 ,
3155- attrs );
3156- break ;
3157- default :
3158- abort ();
3159- }
3088+ val = ldn_p (buf , l );
3089+ result |= memory_region_dispatch_write (mr , addr1 , val , l , attrs );
31603090 } else {
31613091 /* RAM case */
31623092 ptr = qemu_ram_ptr_length (mr -> ram_block , addr1 , & l , false);
@@ -3217,34 +3147,8 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
32173147 /* I/O case */
32183148 release_lock |= prepare_mmio_access (mr );
32193149 l = memory_access_size (mr , l , addr1 );
3220- switch (l ) {
3221- case 8 :
3222- /* 64 bit read access */
3223- result |= memory_region_dispatch_read (mr , addr1 , & val , 8 ,
3224- attrs );
3225- stq_p (buf , val );
3226- break ;
3227- case 4 :
3228- /* 32 bit read access */
3229- result |= memory_region_dispatch_read (mr , addr1 , & val , 4 ,
3230- attrs );
3231- stl_p (buf , val );
3232- break ;
3233- case 2 :
3234- /* 16 bit read access */
3235- result |= memory_region_dispatch_read (mr , addr1 , & val , 2 ,
3236- attrs );
3237- stw_p (buf , val );
3238- break ;
3239- case 1 :
3240- /* 8 bit read access */
3241- result |= memory_region_dispatch_read (mr , addr1 , & val , 1 ,
3242- attrs );
3243- stb_p (buf , val );
3244- break ;
3245- default :
3246- abort ();
3247- }
3150+ result |= memory_region_dispatch_read (mr , addr1 , & val , l , attrs );
3151+ stn_p (buf , l , val );
32483152 } else {
32493153 /* RAM case */
32503154 ptr = qemu_ram_ptr_length (mr -> ram_block , addr1 , & l , false);
0 commit comments