| 845 | } |
| 846 | |
| 847 | int |
| 848 | vrtc_addr_handler(struct vm *vm, int vcpuid, bool in, int port, int bytes, |
| 849 | uint32_t *val) |
| 850 | { |
| 851 | struct vrtc *vrtc; |
| 852 | |
| 853 | vrtc = vm_rtc(vm); |
| 854 | |
| 855 | if (bytes != 1) |
| 856 | return (-1); |
| 857 | |
| 858 | if (in) { |
| 859 | *val = 0xff; |
| 860 | return (0); |
| 861 | } |
| 862 | |
| 863 | VRTC_LOCK(vrtc); |
| 864 | vrtc->addr = *val & 0x7f; |
| 865 | VRTC_UNLOCK(vrtc); |
| 866 | |
| 867 | return (0); |
| 868 | } |
| 869 | |
| 870 | int |
| 871 | vrtc_data_handler(struct vm *vm, int vcpuid, bool in, int port, int bytes, |